Steven Noonan
301 Minor Ave. N, Seattle, WA 98109 (206) 491-3648
https://www.uplinklabs.net steven@uplinklabs.net

Skills

  • Programming languages (fluent)C, C++, Python, shell scripting (Bash)
  • Programming languages (proficient)x86 & ARM ASM, Ruby, Lua
  • Operating systemsMac OS X (10.4+), Linux (Arch Linux, Gentoo, Fedora, Ubuntu, RHEL, Amazon Linux, etc), Windows 2000 through 8, Windows Server 2003
  • Integrated development environmentsXcode (2.5+), Visual Studio 6.0 through 2012, NetBeans
  • Revision control systemsStrong experience with Git and Subversion. Some experience with Mercurial.
  • Natural LanguagesEnglish (native)
  • Miscellaneous
    • professional experience porting games and software between platforms (Windows, Linux, and Mac OS X)
    • professional 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 no professional experience) in compiler backend code generation (e.g. with LLVM & Clang)

Open Source

  • fio (Flexible I/O tester)
    Numerous contributions, most of which were a direct result of work at Amazon Web Services.
  • The CUDA Handbook
    Worked extensively on the n-body code base. Implemented a build infrastructure using GNU make, developed an option to build without CUDA support (i.e. only CPU implementations), vastly improved the CPU SOA implementation such that the compiler generates better code than the SSE intrinsic version and even takes advantage of newer instruction sets (e.g. AVX/AVX2), added OpenMP support in all CPU implementations, implemented tiled CPU SOA algorithm. Most of these changes were pulled into the upstream repository managed by Nicholas Wilt.
  • 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).

Experience

Amazon Web Services - Kernel and Operating Systems Team January 2012 -- present
Software Engineer, full-time position

I am a Linux kernel engineer, software engineer, and performance guru. I've 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've 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've also been 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
  • Developed the Linux port of Defcon, using C++, SDL, SDL_image, SDL_mixer and OpenGL.
  • Assisted in the development of the Windows Vista version of Darwinia, which was released on MSN Games shortly after Windows Vista's release.
Exosyphen Studios 2009 -- 2010
Linux and Mac Developer, contract work
  • Developed the Linux and Mac OS X ports of Hacker Evolution: Untold. Was tasked with eliminating the use of DirectX and Windows-specific APIs, and refactored the code to use much more cross-platform APIs including SDL, SDL_image, SDL_mixer, and OpenGL. The project is written in pure C++.
Google & Python Software Foundation Summer 2010
Google Summer of Code Participant, Software Engineer, contract work
  • Worked on the Unladen Swallow interpreter for Python, to reduce memory usage, eliminate memory leaks, and generally improve performance.
Uplink Laboratories 1999 -- present
Developer, non-profit personal project development
Currently the lead developer of several projects including:
  • CrissCross, a cross-platform C++ development library with several data structures and algorithms. Builds and runs on Windows, Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD, and even the Nintendo DS. Currently used mainly for cross-platform game development as a supplement to the C++ STL, and game development libraries like SDL.
  • ARC++, a C++ rewrite of OpenARC, using SDL, SDL_mixer, SDL_image, OpenGL.
  • OpenARC, a clone of Hoopy Entertainment's Attack, Retrieve Capture. Originally written in Visual Basic 6, using a DirectDraw/Direct3D hybrid, and designed for Windows 95 and above (works even on Windows Vista and 7).
  • GenPrime, a prime number discovery algorithm, primarily used for code generation comparisons (a programming language shootout).
  • CryptoPad, a WordPad-like cryptography program written in Visual Basic 6. Open source.
Dungeon Crawl Stone Soup Development Team 2009 -- present
Developer, Mac maintainer, open source development
  • Initially worked to make the Mac OS X build of Dungeon Crawl Stone Soup usable, and now work on maintaining the contributing library overlays as well as the Mac OS X builds.
  • Also developed some nice GNU Makefiles which build the project successfully on Mac, Linux, Windows, FreeBSD, and several other operating systems without needing to use Autoconf/Automake.

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
  • Participated in university-level computer science workshops.
  • Participated in an honors English course.

Other Experience and Qualifications

Future Business Leaders of America
  • Competed in Visual Basic Programming, C++ Programming, and Network Design.
  • Placed 1st in Visual Basic, C++, and Network Design at the Washington State North Central Region competition.
  • Placed 1st in Network Design, 2nd in Visual Basic, and 3rd in C++ at the Washington State competition.
  • Placed 5th in Network Design at the national competition. (Only could enter one event.)
Speech and Debate
  • Received several first place awards for Lincoln-Douglas debate in competitions at district competitions in Washington state.
  • Received an award from the coach for being the "Most Improved".
  • Received a second place award for a dual interpretation speech at a district competition.
  • State qualifier for Lincoln-Douglas debate.
Scouting
  • Achieved rank of Eagle Scout in 2001.
  • Was active in cub scouts, achieved all ranks (Bobcat, Wolf, Bear, Webelos).
  • Previously active in both Boy Scout Troop 69 and Venture Crew 69.
  • In the Order of the Arrow,