BLOGRESUMEPORTFOLIOGALLERYinit.elGitHubYouTube
William Gooch
they | them

Game developer
Systems programmer
C++ enthusiast


wgooch2000@gmail.com
Albuquerque, New Mexico
 I am a low-level systems programmer interested in zero-overhead abstractions and computer graphics.
 I am enthusiastic for software at the level of kernel syscalls, inline assembly, SIMD, data-oriented data-structures, and memory allocators. I also love template metaprogramming and designing other modern abstractions, as well as designing generative game content.
 I often nerd-out over C++ standards proposals, new tools, text editors, terminal emulators, special keyboards, window managers, and fanfiction.
Experience In
  • C++23 (and older standards)
  • 2D and 3D asset creation
  • Designing game editors
  • Introspecting and optimizing compiler code-gen, profiling, static analysis, debugging segfaults, introspecting heap, stack, and registers, strace
  • Git (pull requests, branch conflicts, reflog)
  • Modern CMake
  • Vulkan 1.3 and DirectX 11
  • GDB, rr, RenderDoc, NSight Graphics, and Cutter debuggers
  • Unity and Game Maker Studio
  • Assembly literacy, dissassembling, bindiffing
  • GNU Emacs and Visual Studio
  • Compute, vertex, fragment, and geometry shaders
  • Shader languages
  • Linux kernel syscalls, libC, POSIX environments, and Windows 10
  • Supporting multiple C++ compilers and STL implementations
  • Researching and navigating large source trees (Linux, Musl, Mesa)
  • Pull Requests

    liblava, Vulkan framework
  • Made vertices and meshes generic to optimize non-float use-cases
  • Supported the VkPhysicalDevice2 extension
  • Made configurable camera controls
  • Made extensible attachments for render passes
  • Work History

    Stellar Science, C++23 Developer

    Oct 2022 - Oct 2023
  • Replaced SFINAE with concepts
  • Introduced many user-facing features with Qt 6 widgets
  • Made an app's GPU selection user-configurable
  • Wrote many unit tests
  • Used many Boost libraries
  • Experienced code review procedures
  • Significantly improved clang-tools configuration
  • Education

    B.S. Game Development

    Full Sail University

    3300 University Blvd, Winter Park, FL 32792

    Personal Projects

    libCat non-POSIX C++20 runtime
  • Template metaprogramming (type deduction, CRTP, CTFE, NTTPs, type erasure, partial specializations, policy-based class design, concept/requires)
  • Linux syscall wrappers
  • SIMD
  • Memory allocators
  • Full move semantics and constexpr support
  • File and socket I/O
  • Raw threads and atomics
  • Unit testing framework
  • Superstar Game Suite framework and editor
  • Cutscene dope sheet editor
  • Multi-layer tile editor
  • Collision and generative graphics for staircases of any orientation, width, height, length, and steps
  • Cinematic weights and tweening
  • NPC dialogue systems
  • Level serializing/deserializing
  • Poly-building tool
  • 2.5D platforming
  • C++ pixel-art raytracer
  • Spatial hash data-structure, optimized for 2.5d raytracing
  • Branchless AABB-ray intersection
  • Normal maps, depth maps, color maps
  • Point and ambient lighting
  • Previously had a compute shader
  • DirectX 11 forward renderer
  • Time-based animated geometry
  • Rendering 3D geometry with normal maps
  • Sorting models to render semi-transparency
  • Vertex, fragment, and geometry shaders
  • Directional lighting
  • First-person flying camera
  • Further experiments in Vulkan rendering
  • Bindless buffer attachments
  • Dynamic rendering (1.3 version)
  • Shader objects (1.3)
  • Dynamic dispatch table
  • vulkan-hpp bindings