Rust Developer in Stanfield, OR, United States
Participant2017 - 2017Google Summer of Code
Technologies: C++, Vulkan, Software Rendering, JSON, LLVM, CMake
- Creating a software rendered implementation of the Vulkan API that uses LLVM for the compiler back-end.
- Gained experience working with the Linux open-source graphics community.
- Gained experience using LLVM's C API.
- Wrote a CMake-based build system.
- Wrote a SPIR-V parser.
Firmware Engineer Intern2015 - 2016Derive Performance, LLC
- Debugged embedded software written in C.
- Wrote a parallel build system to decrease build times.
- Wrote a C++ GUI library that uses a web browser as the graphical interface.
- Reverse engineered the computers in vehicles.
Contract Developer2015 - 2015Prey, Inc.
Technologies: Win32, C++
- Created a screen locking application using C++ and Win32.
- Gained experience managing entries in the Ctrl+Alt+Del screen from C++.
- Gained experience managing low-level hooks on Windows.
Student Employee2014 - 2014Walla Walla University
Technologies: C, C++, ARM Mbed, Linux, Raspberry Pi
- Created a people counter using C++ on an Mbed microcontroller.
- Rewrote an Hour Bell controller using Bash, C++, and the Apache Web Server.
- Created a parallel port access library using the Linux parport drivers.
- Minecraft Clone (Development)https://github.com/programmerjake/voxels-0.7
A Minecraft clone written in C++11 using OpenGL.
- 3D Graphics Library (Development)https://github.com/programmerjake/lib3d
3D graphics library with support for software rendering using a fast custom engine and hardware rendering using OpenGL. Supports output to window, disk (using FFmpeg), or terminal (using AAlib or caca). Supports render-to-texture.
- SSA-based Optimizing Compiler Back-end (Development)https://github.com/programmerjake/my-compiler
SSA-based optimizing compiler back-end. Currently targets x86 32 and 64-bit Linux. Supported optimizations include constant propagation, dead code elimination, register allocation, and control-flow simplification.
- MIDI Wave Table Synthesizer (Development)
MIDI wave table synthesizer converts from .mid to .wav files.
- Hashlife-based Cellular Automaton Simulator (Development)https://github.com/programmerjake/hashlife
Simple Hashlife-based cellular automaton simulator written in C++11 using SDL for graphics. Supports any 2-state rule expressible in Golly's notation (eg. B3/S23). Properly simulates changing backgrounds.
- Kazan (Development)https://github.com/kazan-3d/kazan
In-progress software-rendered Vulkan API implementation that uses LLVM as the shader compiler back-end.
- RV32 CPU (Development)https://github.com/programmerjake/rv32
A RISC-V processor written in Verilog that I can successfully run a simple 3D maze game on. The processor implements the RV32I instruction set.
Libraries/APIsStandard Template Library (STL), LibC, SDL, OpenGL, POSIX, Sockets, Libxcb, Libssh2, Vulkan, Pthreads, OpenSSL, HTML5 Canvas, Node.js, Libpng, Windows API
ToolsGimp, Git, GCC, FASM, KDevelop, Eclipse IDE, GitHub, Meson, Mathematica, Xilinx Ise, LibreOffice, GDB, GitHub Pages, CMake, Make
ParadigmsProcedural Programming, Concurrent Programming, Object-oriented Programming (OOP), RISC-V, Template Metaprogramming
PlatformsLinux, Ubuntu Linux, MS-DOS, Docker, Apache2, Arduino, Visual Studio Code, AVR
OtherClang, Parsers, g++, Memory Mapped Files, Lambda Functions, Digital Electronics, Analog-to-Digital Converters (ADC), Embedded Software, Digital Design, TCP, Text Processing, Regular Expressions, OS Design, Code Blocks, mbed, Matrix Algebra, Soldering, ARM Embedded, Machine Language, Neural Networks, Game AI, PID Controllers, Numerical Methods, Procedural Generation, Batch Scripting, Command Prompt (CMD), Open Source, Wine & Wineries, Serial Peripheral Interface (SPI), CAN Bus, Power Electronics, Chemistry, Physics, Discrete Mathematics, Linear Algebra, Calculus, WebSockets, LLVM, MIDI