"Put enough monkeys in a room and they'll eventually write DOS."
— one of the monkeys.
Gavin Fielder
Portfolio and online resume
An interactive version of this resume can be found at: www.gavinfielder.com.
Contact
Current City | (Removed) |
Other Locations | (Removed) |
Cell | (Removed) |
(Removed) | |
GitHub | github.com/gavinfielder |
(Removed) |
Education
B.S. Applied Mathematics | California State University - Chico, Graduated May 2018. 4.0 GPA. Minor in Computer Science. Side projects in Embedded Systems. |
42 Cadet Level 8 (Comp.Sci) | 42 Silicon Valley. www.42.us.org |
Things I've Made
All Projects, Include Educational
Event Reminders for 42 Intra Events
42 Event Reminders
A teammate and I Implemented an event reminder system for Ecole 42 campuses. Email integration works on all campuses worldwide via Google; Slack integration is handled at request of the campus. Users can enable SMS notifications as well via Twilio. Automatically picks up new users in the 42 network seamlessly via the 42 API and applies default settings so that minimal maintenance is required. Currently deployed on AWS and seeking official app status with 42.
x
WIP / In Review
June 2019
Inline Custom Emoji Selector Extension via Imgur API
MyImgurEmoji
A browser extension for Chrome and Firefox that lets users use personal Imgur albums as custom emoji sets on any site. Resolves image selection queries inline as a user is typing a message. Configurable to allow custom url wrapping per domain. Works on Mobile browsers as well.
x
Security Encryption / Partial recode of openssl
ft_ssl
A partial recode of the openssl program. I implemented md5, sha256, and sha224 hashing algorithms.
x
June 2019
Production Git Server
gitserver
A secure production git server with various security features, data backup, and a web interface.
x
Docker Exercises
docker-1
A set of exercises in the 42 curriculum in using docker for deploying applications and services.
x
May 2019
Custom Unix Shell
minishell
A simple interactive shell. Beyond the mandatory requirements, I added a source builtin for script processing and the ability to execute variable commands.
x
May 2019
Recode of UNIX ls
ft_ls
A recode of the unix shell ls command. Mine typically runs ~50% faster than the system ls. I also added a feature to limit recursion depth when used with the -R flag.
x
Apr 2019
This Website
Portfolio and Online Resume
Built in vim only, using HTML, CSS, Javascript, JQuery. The introduction is a React component that works in at least chrome and firefox. CSS is responsive to height and width and has a separate print format. It is hosted on Amazon AWS S3.
x
Apr 2019 - Present
C Unit Testing Framework and Regression Tester
GüT
A unit testing framework in C as well as a test utility that integrates into a project's existing makefile. It aims to make regression testing quick and easy by providing the fewest number of steps between editing and testing, and the easiest possible experience in adding new tests. It provides prefix-based, wildcard-based, and range-based searching for tests by name so that new code can be quickly and concisely tested with two shell commands (make, test).
x
Apr 2019
Framework Builder for New Projects
gframework
A php script that sets up a new project framework. The script sets up repositories, creates a makefile if appropriate, adds external libraries, manages .gitignore, and starts the project as a hello world. For C projects, it also provides the option of including my GüT unit testing framework.
x
Apr 2019
eCommerce Book Trading Site
42 Book Exchange
An ecommerce site where users buy and sell their used books. Each user can list items for sale, order items from others, and see their orders waiting to be fulfilled. Built as a 2-day challenge for me and a randomly assigned partner to build a functional ecommerce site.
x
Regression Testing Utility for 42 ft_printf
PFT
A configurable regression testing utility for the 42 gateway project ft_printf. It is now the preferred testing utility for the project at the Fremont campus and is also popular on the Moscow campus. It boasts a framework capable of one-line unit tests that are modular and can be queried for test runs by name, category, wildcard search, or numeric range. It also includes a debug mode, a leaks test, and tracks the most recent pass/fail of each test to make effects of code change clear to the developer. I actively maintain this project and its documentation on github.
x
Mar 2019
Recode of the libc printf
ft_printf
One of the major early projects at 42, a recoding of the libc printf with at least the options %d, %i, %u, %s, %c, %p, %x, %X, %o, and at least the optional flags 0, ' ', +, -, #, hh, h, l, ll, L, precision, and field width. In mine I also included the arbitrary argument selector ($), unix terminal output formatting with colors and text decoration using keywords (eg %{green underline}), and added two additonal specifiers, %m and %b, to print a specified number of bytes of arbitrary memory space in hexadecimal or ascii (%m) or in binary (%b). I also implemented dprintf, sprintf, snprintf, asprintf, and added my own sbprintf (stringbuilder printf--this stringbuilder being part of my personal C library) as well as the variadic versions (v-) of each of these.
x
Included in github.com/gavinfielder/libft
Mar 2019
Big Integers and Arbitrary Precision Floats Library
ftbi
An implementation of big integers including all basic math operations including modulo and power. An implementation of arbitrary-precision floating point representation. Built for quick conversion to ascii rather than efficiency.
x
Mar 2019
Anonymous Chat Server
DGram Chat
I wrote a chat server (and terminal-based client) that uses anonymous, connectionless sockets. Users can change their username and their message display style, which is propogated to all connected users.
x
Mar 2019
Randomized Bench Tester for 42 get_next_line
GNLRollingBencher
This is a tester for one of 42's early projects get_next_line. The project itself is to write a generalized readline function. The tester generates randomized input files of varying size, line length, content, and other characteristics, and compares an invocation of a validated function against the user's own function. Randomized testing is useful for this project because the project tends to involve hard-to-find edge cases that are implementation-dependent.
x
Randomized Bench Tester for 42 fillit
Fillit Randomized Bench Testing
This is a tester for one of 42's early projects fillit. The project itself is an algorithmic tetris solver. The tester makes use of a python script (not mine) that generates random valid input, and compares program output between a cadet's own fillit and various other validated fillit projects. Also included is a timing bencher that compares execution time between a cadet's own fillit and various other validated fillit projects.
x
Backend SQL and Middleware Development in WCF
Simple Data Server
A web app that interfaces with a separately-deployed SQL server via WCF middleware service. A personal project for my own education that used MVC architecture across 3 separate deployments.
x
Japanese Mahjong app for iOS/Android (WIP)
Momogariya Mahjong
Mahjong is a 4-player tile game. I implement the Japanese variant of this game. I began this project in my spare time last year; the underlying code base is largely done and I was working on the algorithms the AI will depend on. I plan to go back to this project in the future when I have more time.
x
MVVM Architecture Implementation in WPF
CaseConverterMVVM
An educational exercise that implements MVVM pattern in a simple WPF application. This app lets the user input a string in pascal case, camel case, or any string of words separated by spaces. It then converts the string to the other two structures. I put this together both as a WPF/XAML refresher and to learn MVVM.
x
SQL-Based Tech Tree Editor for Game Development
TechTreeEditor
This is a windows forms tool that manages a set of tables in a database that represents a tech tree for a game. It includes a basic interactive graphic visualization of the local neighborhood of the selected node. I created this for a particular game I'd been working on for some time, and it is useful to store this game's tech tree as a database because the game is designed for a large and complex tech tree that could use a dbms's validation features to ensure integrity and consistency. The database and its procedures ensure normalization to 4NF.
x
June 2018
Fridge/Freezer Monitoring System
FridgeFreezerMonitor
A monitoring system for a refrigerator or a freezer that sounds an alarm when either the temperature rises above a specified threshold or the door is left open. This project was created as a final project for Digital Systems Design at CSU Chico.
x
Dynamical Systems VR Simulator
DynamicsLab
A dynamical systems numerical solver and VR simulator that accepts user-defined systems of differential equations and renders or animates their behavior. VR Capable, tested on the HTC Vive. Supports nonlinear, nonhomogenous, and non-autonomous systems and includes support for user-defined parameters. Includes visualization of 3D vector fields that update in real time, and youtube-like playback of a mathematical simulation. Built as an educational tool for students of differential equations or dynamical systems. Supported by CSU Chico Computer Science and Business departments and in consultation with CSU Chico Mathematics department.
x
Jan-May 2018
Robotic Unmanned Bicycle
The Unmanned Bicycle Project
I was part of an R&D team creating an unmanned bicycle with the goal of getting an electric bicycle to follow a preprogrammed course. My major contributions were sensor filtering and data transfer protocols for downloading test data. The sensor filtering I accomplished with a kalman filter using a derivative-projection predictive model. I also developed automated optimization scripts that adjust the values of the process noise matrix to achieve optimal filter results. This was a special research project with CSU Chico Electrical Engineering department, led by Dr. Choi <schoi13@csuchico.edu>.
x
Traffic Light Controller
Traffic Light Controller
A simple embedded traffic light controller that outputs traffic signals based on sensor input, built as a finite state machine.
x
N-Dimensional Differential Systems Numerical Analysis Library
DLab-Math
The underlying math library for the DynamicsLab project; Can represent any ODE system up to 255 dimensions and numerically solve such systems using the Runge-Kutta method of order 4 at a specified time-step resolution. Includes dynamically expanding data structures to hold arbitrary-length solution data of any system dimensionality.
x
RTS Game Engine
Hammer Engine
A couple years ago I had done some work on an RTS engine. It implements event-driven architecture that can handle scheduled events, timing mechanisms, nesting location structures, and some work on weapons. Since I've learned a great deal since I worked on this last, I would rather start over than go back and finish it, but it was educational at the time.
x
Software Help Database
Common Display System
Software help files for Common Display System, a new data processing software for weapon testing applications at China Lake Naval Air Weapons Station.
x
2007-2008