https://uplinklabs.net | steven@uplinklabs.net |
Objectives
Skills
- Programming languages (fluent)C, C++, Python, shell scripting (Bash)
- Programming languages (proficient)x86 & ARM ASM, Ruby, Lua
- DatabasesSQLite, MySQL, PostgreSQL, and Microsoft SQL Server (and T-SQL extensions)
- Operating systemsLinux, Windows, macOS (10.4+)
- Integrated development environmentsXcode (2.5+), Visual Studio 6.0 through 2019, Visual Studio Code, vim
- Revision control systemsStrong experience with Git. Moderate experience with Perforce.
- Natural LanguagesEnglish (native)
- Miscellaneous
- significant experience porting games and software between platforms (Windows, Linux, and macOS)
- experience developing and maintaining Linux platforms running KVM and Xen with a Linux control plane
- low-level programming and code optimization (paravirtualization, I/O rate, x86/ARM assembly, stress testing)
- interest (but limited professional experience) in compiler backend code generation (e.g. with LLVM & Clang)
Open Source
- GameNetworkingSockets, a game networking library
Ported to foreign (non-x86 and Big Endian) architectures, including several endianness correctness fixes. Developed and maintained build system and continuous integration, complete with ASAN/UBSAN tests and related fixes. - N-Body, a portable N-Body benchmark with support for CUDA, SIMD, and auto-vectorization
Initially forked from the CUDA Handbook repository. Implemented a build infrastructure using GNU make (and later Meson + ninja). Implemented option to build without CUDA support (i.e. only CPU implementations). Vastly improved the CPU implementations to better support auto-vectorization with GCC and Clang -- with these changes, the compiler generates better code than the SIMD intrinsic versions and even takes advantage of newer instruction sets not implemented with intrinsics (e.g. AVX, AVX2, NEON, etc). Added OpenMP support in all CPU implementations. Implemented tiled CPU SOA algorithm. Numerous bugfixes over upstream as well. - CPUID
Wrote a command-line utility for dumping/decoding information gathered with the x86 CPUID instruction. - CPU_TEST for ARM
Wrote a framework and set of microbenchmarks for understanding architectural differences between various ARMv7 implementations (execution unit distribution, caching behavior, IPC, etc). - fio, flexible disk/network I/O tester
Numerous contributions, most of which were a direct result of work at Amazon Web Services.
Experience
Valve Corporation | August 2015 -- present |
Software Engineer, full-time position | |
|
Amazon Web Services - Kernel and Operating Systems Team | January 2012 -- August 2015 |
Software Engineer, full-time position | |
Linux kernel engineer, software engineer, and performance guru. I focused on several areas during my time with Amazon Web Services: block I/O performance, network throughput/latency, hypervisor scheduling and resource allocation, scalable fleet validation and testing infrastructures, and new platform development. I served as the primary platform team engineer responsible for the High Storage (HS1), SSD-based High I/O (HI1 and I2) platforms. Through these platforms, I developed userspace tooling around effective/fair resource management (PID affinity, IRQ affinity, vCPU/pCPU pinning) and kernel patches for improved throughput and latency with high IOPS workloads. I also was one of the primary authors and maintainers for a fast, scalable, and reliable test infrastructure used for platform qualification, benchmarking, and testing, as well as for operational use cases. The tooling has enabled engineers to rapidly prototype new platforms and verify functionality both from a configuration validation standpoint as well as from a user acceptance standpoint. |
Amazon Web Services - Platforms and Performance Team, formerly EC2 High Performance Computing Team | January 2011 -- January 2012 |
Software Engineer, full-time position | |
I worked in the Amazon EC2 Platforms and Performance team, where I worked primarily on performance tuning and design for cluster compute instance types. I was the lead software engineer in charge of the hi1.4xlarge instance type, and did significant kernel changes to ensure hi1.4xlarge performed well. |
Introversion Software | 2005 -- 2007 |
Linux and Mac Developer, contract work | |
Exosyphen Studios | 2009 -- 2010 |
Linux and Mac Developer, contract work | |
|
Google & Python Software Foundation | Summer 2010 |
Google Summer of Code Participant, Software Engineer, contract work | |
|
Uplink Laboratories | 1999 -- present |
Developer, non-profit personal project development | |
Currently the lead developer of several projects including:
|
Education
Seattle Pacific University, Seattle, WA, USA | Winter 2007 -- Winter 2009 |
Student of Computer Engineering | |
Central Washington University, Ellensburg, WA, USA | Fall 2006, Spring 2009 -- Fall 2010 |
Student of Computer Science |
Moses Lake High School, Moses Lake, WA, USA | 2003 -- 2006 |
Student | |
|
Other Experience and Qualifications
Future Business Leaders of America |
|
Speech and Debate |
|
Scouting |
|