About Me

About Me

I am a Software Developer, Photographer, and Eagle Scout. On this page, I endeavor to give a view of my character and life.

School

  • Columbia College in Sonora, CA, where I am studying Human Communication.
  • Mountain Oaks Charter School in San Andreas, CA where I graduated in June of 2015.

From 2012 to 2015, I competed on the school's Academic Decathlon team at the Honors level where I was awarded medals in the subjects of Speech, Interview, Essay, Social Science, Science, Economics, and Literature. Two out of my three years in the Academic Decathlon, I have had the honor of progressing to the State Championship.

In January 2015, I delivered a presentation regarding our Digital Footprint to the annual Mountain Oaks Retreat.

Starting in 2017, I have participated in Columbia College's Speech and Debate program where I've received multiple awards in the categories of Impromptu Speaking and Parliamentary Debate.

Employment

From June to August 2013, 2015, and 2016, I was employed by Camp Chawanakee, Sequoia Council in Shaver Lake, CA as a Merit Badge Instructor. In this position, I taught multiple classes such as Space Exploration, Environmental Science, Geology, Soil and Water Conservation, Public Speaking, Emergency Preparedness, and Citizenship in the World. At the end of the 2013 season, I was awarded Rookie of the Year.

Until December of 2010, I was employed by On-Site I.T., a business which was owned by my father, as a Junior Technician. In this position, I assisted my father in carrying out a large migration for United Commercial Bank in addition to other tasks around the business.

Skills, Hobbies, and Projects

Programming

Computer programming has always been a hobby of mine. For most of my life, it has been the activity I always turn to when I need something to do -- a problem to solve. Languages that I've used in projects range from PHP, HTML, CSS, and Java Script to traditional desktop languages like C#, Visual Basic, and some C/C++.

In my spare time, I can generally be found tinkering around with some new project that I might find useful. These hobby projects include things like the Pantheon Distributed Server Platform or the PineTree Scripting Language.

PineTree

The PineTree Language was a project that I undertook in an effort to learn more about the process of designing a Domain-Specific Language. The project's goal was to create a scripting language which could be hosted in a C# application.

Some features of the language include code-by-contract, scopes as expressions, objects, and properties.

In previous attempts of this project, I had utilized a backtracking lexer and parser which made the code cleaner and easier to maintain. This, however, was at the determent of performance and required several seconds to parse even a simple file. For this reason, I challenged myself to include no support for backtracking; there could only be one possible path for parsing and no more.

Implementation of the the initial runtime was heavily inspired by the Jint project.

Pantheon

The Pantheon Distributed Server was a project that I created for two reasons: (1) I needed a solution for a game server and (2) I was inspired by a project that was undertaken by Disney Interactive Studios (video) a number of years ago.

This project is split into several parts: Server, Core, and Client. The Server project handles configuration and dependency injection. The Core project implements the core components of the server: State, Database, Client Management, and Game. Lastly, the Client project implements the communication protocol from the perspective of a game client.

The platform implemented a global object hierarchy called a Distributed Object System. This system mandated a base C# interface for the global variables of an object. Each Distributed Object would then be implemented on the client and game server with specific logic. Finally, the State Server would handle creation and location (in the visibility graph) of each object and all clients automatically.

In a more simple sense: a Distributed Object has a parent and 0 or more children. If a client has view on a child object (e.g. a car), the object's parent (the world or a local zone) is also visible to the client. An object also has properties, some of which may be modifiable by the client (e.g. spacial location) and others dictated by the server (a player's name). To achieve this, properties are given Attributes which dictate how the backend handles updates.

The beating heart of the platform is a special component called the MessageDirector. This component routes and manages messages sent over a number of channels. The MessageDirector implements a simple protocol which allows for some basic control over its functions such as messages to be sent on disconnect.

Pantheon allowed me to gain experience with developing large solutions which are split into many different projects. It also provided me with a better working knowledge of the .NET Framework.

Photography

One of my other hobbies is the art of photography, both in video and photo. For about two years, I studied under Dennis Sakamoto learning cinematography, directing, and film editing. In 2014, my photography was featured at the Mountain Oaks Share Day and Science Fair.