Discord tag: Terra (hashtag) 0306 Time zone: EST/EDT (UTC -0500)
Availability: MoTuWeFr 7 PM-11 PM, Sat/Sun 12 PM-8 PM, not available on Thursdays
As a heads-up: About one week of each month, I will be on the on-call rotation for my current job. I will still generally be available, but there's a chance I'll get pulled away to investigate or fix an alert going off related to the servers in my job's production environment.
Languages and libraries:
Pared down to what seems relevant to CoH's pipeline:
C++ (C++98, C++11, C++14)
Several libraries within Boost, depending on the problem in question. (Too many to list in their entirety, and some have since been incorporated into recent C++ revisions)
OpenGL and its GLSL shader language (ranging from versions 3.3 to 4.6)
Linear algebra-focused math libraries such as glm
Physics libraries such as Box2D
Network libraries for socket-level UDP/TCP communication between a client and server, such as Boost's ASIO IP/UDP library, yojimbo (reliable.io + netcode.io) and (now-defunct) ElectroServer
(RakNet is the most prominent example I can think of that would fit in this particular family of libraries, but I have not actually used RakNet itself. I only mention it to serve as a more recognizable illustration if no one immediately recognizes what I listed that I'm actually familiar with offhand.)
HTTP server and client libraries, such as libcurl, Pistache, and the Microsoft C++ Rest SDK
Max SDK for writing Autodesk 3ds Max .dll-based plugins
Other languages and libraries I've used, but do not seem immediately relevant:
SDL 2.0 (as in Simple DirectMedia Layer)
DirectX 11 and HLSL shader language (as of 2013)
Java (SDK 8.0)
DropWizard- and Hystrix-based microservices to provide RESTful APIs over HTTP
PHP (5.6. That version's way past its EOL, I know.)
Emscripten toolchain (compiling C++ or other LLVM-capable applications to WebAssembly)
OpenGL ES and OpenGL ES Shader Language (2.0 and 3.0)
WebGL but only by way of Emscripten automatically translating OpenGL and OpenGL ES to WebGL
Utilized domain-specific languages such as UnrealScript (UE3)
I'm not entirely sure if Lua scripting counts as a domain-specific language here when writing Lua-based addons for the FFXI Windower client wrapper.
Linux bash, Python, other general-purpose "glue" languages for small tasks
I've written my own lexer and parser for a bytecode-based interpreted DSL meant to be used in conjunction with a game engine that I wrote from scratch in C++ and graphics libraries. While it's not suitable for production use, and I'd use something else in practice, it was still educational.
When I was much, much, much younger (late '90s/early aughts), I got my start in things like ZZT OOP and RPGMaker 2000/2003 event scripting.
Other tools and technologies:
Git (familiar with and used on a regular basis since 2015)
SVN (as in Apache Subversion, used between 2011 and 2015)
Scaleform (to convert UI elements authored in Flash to a format suitable for games, hooked up to game code, mainly in conjunction with UE3)
Build management systems such as GNU Make, CMake, and PreMake
Relatedly, with the intent to compile the same codebase to target multiple supported compilers and platforms simultaneously, such as across Windows (Visual Studio), Linux (gcc, g++), and WebAssembly (emscripten) (The clang compiler and LLVM may or may not be involved, depending on the toolchain)
Small amounts of NGINX, Apache, and Varnish (mostly modifying existing configuration or standing up small personal projects, not anything too in-depth)
Linux-based systems (CentOS and Debian so far) (cron job and service/process daemon configuration)
More about me and what I'd like to work on:
As a younger person, I went into university with the intent to enter the game industry. My undergraduate studies (2007-2011) focused on getting a strong foundation in computer science not specific to game programming, but my graduate studies (2011-2013) were done under a program that specialized in skills necessary for the modern (at the time) game industry. After graduating from that program, I worked at a small company that ran a small stable of web and mobile games from 2013 to early 2015. I haven't re-entered in the video game industry proper again, but since late 2015, I've been working at a technology company that sells login and authentication technology to other companies with large userbases (millions of unique users with systems designed to handle 2000 HTTP requests per second). I still work on side projects here and there in order to keep my game programming skills from earlier in my career sharp -- I do not like its professional environment, but the technology and programming challenges involved continue to fascinate me.
In other words, over roughly the last decade, I've gone more wide than deep and I've worn a lot of hats. I feel like I have a strong grasp of the fundamentals required for programming across many contexts and do not rely on any specific technology. I can adapt to work in unfamiliar contexts as long as there's something familiar that I can map it to.
I do want to be clear that most of the technologies I've listed above are things I've worked with for a couple of contiguous years at a time. For the most part, I have not used any single thing 9 or 10 years straight for my entire almost-a-decade of a professional career. C++ and OpenGL are somewhat of an exception, but after I got my master's in 2013, the context in which I use C++ and OpenGL changed from academic (with the intent to become professional; my first professional job at that smaller game company actually dealt with AS3, Java, SQL, and PHP) to hobbyist.
During school, I started with "traditional" games that target PCs (single-player and small multiplayer networked games like FPSes made either from scratch in C++ or with Unreal 3), went to web and mobile games which had more lightweight clients but served as my introduction to slightly larger distributed systems (TCP and HTTP-based protocols with Java- or PHP-based game servers that connect to a mySQL database backend), to much larger distributed systems at my current job (PHP- and Java-based HTTP servers and microservices that connect to several different database backends).
I mentioned side projects -- even if I don't work in the video game industry proper now, I still like to tinker using the skills I learned in graduate school. So far, I haven't made a complete game with these, they're more like tech demoes or partially-finished explorations into a small aspect of game programming or another. This hobbyist context is where I looked at cross-compilation with emscripten and WebGL, the yojimbo network library and its whole client and dedicated server architecture, and other graphics rendering experiments just to get familiar with certain technology, like taking the game engine I made from scratch in grad school and making different rendering pipelines, e.g. naive forward rendering vs. deferred rendering vs. clustered forward rendering.
tl;dr: Left to my own devices, I'd like to work on optimizing the game's clientside performance, such as profiling draw calls/CPU usage/etc. to see where bottlenecks exist and what could be improved upon (profiling with valgrind and RenderDoc, seeing if there are any rendering patterns that could be optimized, e.g. batching calls to minimize state changes, the real close-to-the-metal stuff). There are also a few visual fidelity problems that I'd like to take a crack at, such as how certain models don't show up behind other transparent models, e.g. some hair options on characters don't show up behind glass panels -- which is a problem related to alpha sorting. I also enjoy making development and asset creation tools easier to use for people that don't go as low-level as I do, such as automating repetitive or onerous tasks that designers and artists are tired of dealing with.
However, if there's already a healthy backlog of issues to churn through, I feel like you might be able to stick me just about anywhere and I could help tackle those without needing too much onboarding or handholding.