Megatech


Portfolio

Fractal Renderings

Operating System
Linux
Languages
C++20, GLSL, JavaScript
APIs
OpenGL 4.5, SDL2, WebGL 2
Tools
Meson, Git, GNU Debugger (gdb)
What
Rendering programs for the Mandelbrot set, the Burning Ship fractal, and Julia sets.
How
I used SDL2 to handle window system integration and input. The renderings are done using an OpenGL fragment shader. This makes the image computation highly parallel. I've also provided a WebGL 2 implementation embedded in the second article.
Why
These were exploratory projects. I wanted to learn more about how these fractals are generated, and how to produce them with only a fragment shader.

Megatech-Assertions

Operating System
Linux
Languages
C++20
Tools
Meson, Git, GNU Debugger (gdb)
What
A C++20 library that provides extended debug assertion functionality. This includes formatted messages in assertions and thread-safety for parallel assertion failures.
How
I provided assertion functionality in two ways. First, there are a large number of public function-like macros that provide this library's interface. Second, there are a small number of functions that implement the assertions. Inside the assertion functions, I've implemented robust error handling to ensure that failures are reported. This includes handling cases where formatting fails, formatting isn't available, and when assertions fail on multiple threads in short succession.
Why
I've never been particularly happy with the standard assert macro in C++. Compared to other programming environments, it is very bare-bones. I wanted to provide greater support for custom assertion messages for my own use. I also felt it was crucial to be able to handle extreme cases like reporting as many failures across parallel threads of execution as possible.

Megatech-Vulkan Dispatch

Operating System
Linux
Languages
C++20, Python3, XML
APIs
Vulkan
Tools
Meson, Git, GNU Debugger (gdb)
What
A cross-platform dynamic dispatch solution for the Vulkan API that doesn't pollute the global namespace or overly bloat programs.
How
Megatech-Vulkan Dispatch has two parts. First, I wrote a generator script in Python 3. This parses the Vulkan API specification and generates C++ headers. Second, I wrote a C++20 library that loads Vulkan command function pointers at run-time.
Why
I'm not a fan of other dispatch solutions. The most popular solution, Volk, uses primarily global names, provides minimal configuration, and generates a very large header file. I wanted to solve these problems.

Sunset 76 Customer Landing Page

Operating System
Linux
Languages
HTML, CSS, JavaScript
Tools
LiteSpeed Web Server, cPanel, Git
What
A customer landing page for an auto repair business.
How
Over the course of the project, I worked with management at Sunset 76 to design and deploy a single page solution that complies with modern search engines. I wrote the page using vanilla HTML, CSS, and JavaScript. I also ensured it could be deployed without any outages on the client's side.
Why
Sunset 76 contracted me for two reasons. First, their previous web presence had been under construction since around 2006 with no completion date in sight. Second, their lack of web presence was leading to a large number of customer phone calls. I resolved both problems.

Godot 3 Patch for Doomsday Paradise

Operating System
Linux, Windows
Languages
C++
APIs
Godot 3.5
Tools
SCons, Git, GNU Debugger (gdb)
What
A custom patch to the Godot 3.5 source code that fixes automatic line breaking issues with Traditional Chinese and Japanese text.
How
Through judicious use of my debugger, I crawled through the Godot source code to discover the root causes of the error. Godot 3.5 uses two different automatic line breaking approaches, and both needed to be patched. I developed extended functionality that correctly encoded grammar rules for Traditional Chinese and Japanese text and modified the RichTextLabel and Label nodes in Godot 3.5 to support my new functionality.
Why
Lemonade Flashbang was on a tight deadline and wanted to show their game, Doomsday Paradise, at the Bitsummit game festival. However, manually fixing text rendering would have been extremely time consuming. They contracted me to deliver quickly and under budget. I was able to deliver a patch with time to spare.