Isaac Steele: Senior Software Engineer and Game Developer

 

Personal Page

I first started this website because I needed a place to keep all of my past projects within a few clicks (as opposed to hunting for them on my hard drive, or even remembering I had done them in the first place), along with a description of what I did on them. I like to think of this as a place where I keep my memories. I also think of this as my art portfolio, where the art is my code, though I have done more typical art too, which you can find here. This page is devoted to all the information that I had on my old site, but no longer have a place for it on this new site.

Table of Contents

More About Me
About The Site Itself
Completed Coursework (USC)
Completed Coursework (UHCL)
Currently Playing
Favorite Past Video Game
Special Thanks

 

More About Me

I am an Eagle Scout and have been since January 12, 2006. Prior to deciding where to attend college, I participated in an InternalDrive summer tech camp. There, I learned how to make simple levels with FPSCreator one week and Unreal Engine 3 the following week. I also participated in a Software Engineering Team competition under the Business Professionals of America organization. In my senior year of high school, my team placed first in the nation, along with another team from our school placing second.

I worked "off the books" for a small vending business in Pasadena, Texas. I entered data into spreadsheets for quarterly and annual reports in addition to optimizing the spreadsheets the employees used to track inventory in vending machines.

I have researched and built four computers so far, and I have performed maintenance on each one as the user experienced problems. You can view a log of all the builds here (PDF).

I play the tenor trombone for the choir at Our Savior Parish in Los Angeles. I joined a USC esports team to play Call of Duty: Black Ops 2 as part of the nvidia's Rivalries competition. You can read the UCLA vs. USC postgame write-up here. You can also watch the recording of the grand finals on twitch.tv (USC starts around 2:27 and 4:29; I am only in the first of those two, against NC State). I attempted to develop an algorithm to solve the Vertex Cover Optimization problem, which would have had the side-effect of proving P = NP if it were an exact algorithm that ran in polynomial time. Unfortunately, it did not turn out to be exact.

I am most familiar with C# from scripting in Unity, but I have also used Java (and later C++) for general programming. I am also very familiar with Objective-C since it's the language for the iOS version of the Play-Along Video application, as well as Python for several personal ancillary scripts I use at work. At some point in time – to even the smallest extent – I have worked with: Bash, C, C#, C++, CSS, CUDA, Groovy, HLSL, HTML, Java, JavaScript, JSON, Kotlin, LUA, MIPS Assembly, MySQL, Objective-C, OpenGL, PHP, Python, RADScript (a LISP-like), and XNA. Currently, I am most comfortable with C#, Python, Objective-C, Java, and C++.

 

About The Site Itself

To make this website, I used Adobe Dreamweaver CS5 for the site design and Adobe Photoshop CS5 to make many of the current images. This site was originally hosted on servers USC provided to its students (under the www-scf.usc.edu domain). Since graduating and subsequently losing access to those servers, I moved my site to hosting by Space City Net Solutions with my own domain.

This cloaked figure that was in my previous banner and business card is an avatar I designed in Photoshop and used years ago across the Internet to represent myself. It is a former band director of mine superimposed on an image of Darth Sidious.

First Refactor

I have also done a couple of refactors over the life of this site. After showing it to a few industry professionals, teachers, and peers, they offered some critiques, which lead to the first major refactor. Some notable changes from the first refactor were:
• Most links now open a new tab, especially if the link leads off my site
• Top navigation bar is now always visible
• CSS is separate from the page's HTML file
• Objects common to every page (copyright information, navigation bar) are separate files
• More focused on being a portfolio than a blog-styled website

Second Refactor

The second refactor spawned out of a desire to display my past projects in a different way, especially as I am a few years into my professional career, while additionally wanting to clean up some of the formatting. The old site used a table format to display my projects, like below:

Game Project (Engine/Language)

Pageless App (Framework)


I wanted to showcase a little more information upfront with every project to bring it more in line with what you might see on a résumé, along with having a spiffier look. After playing with the CSS and HTML quite a bit to get the look I wanted (subtle gradient, outline that followed hyperlink formatting, shadow/glow, etc.), I ultimately resorted to using a table again to give the image its own space and to force the text all the way to the edge, minus any padding I explicitly define.

After creating all these cards, I wanted to simplify them into a parameterized JavaScript function, since many of the formatting details are the same, just with different content. Further, if I wanted to edit the format again in the future, I'd like to change it in only one place. I had unfortunately already made the dozens of cards in HTML; to assist the transition, I wrote a quick Python script to convert all the card formats I had into the new JavaScript functions, and a second Python script for converting my art projects from the old format to cards. The only manual process after that was copying the script's output from PowerShell into the associated JavaScript files. I will note that for all the simplicity they bring, the JavaScript functions make using Dreamweaver's tools a little more difficult.

I did a test where the cards would have three lines of information. However, I felt the text on the second and third lines was too small. I didn't want any text that I expected people to read to be any less than 16 pixels, but I didn't want the cards any bigger than necessary to contain a 64x64 icon either. Here is what it would look like:

Icon for Neat Idea Neat Idea Presentation
Organization July 20, 2018
Specific Detail Credit

In addition to the card changes, I moved the header banner image into a separate HTML file, adjusted the indentation of elements in the source files, added noscript tags informing people who block JavaScript that my site needs it, and finally cleaned up the annoying double spaces that Dreamweaver littered throughout the paragraph elements. I also fixed the internal links on all the pages to start at the root of the site so that if I move the pages again in the future, none of the links will be broken. This unfortunately broke the "Preview in Browser" feature of Dreamweaver, unless I enable "Preview using temporary file"—then about 90% of the elements render correctly. As I went through this process, I fixed several broken external links, particularly those from when Dropbox removed the Public folder in 2017, and marked the ones I couldn't fix with a different style. I hadn't received any emails stating the links were broken in the year between, so I can only assume no one tried to download anything (knocks on wood).

 

Completed Coursework

University of Southern California: Fall 2010–Spring 2014

CSCI-491B: Final Game Project (Unity/C# for Android/iOS)
CSCI-524: Networked AI (Unity/C# for PC)
ITP-435: Professional C++ (C++)

CSCI-491AL: Final Game Project (Unity/C# for Android/iOS)
ITP-382x: Mobile Game Programming (Objective-C/Cocos2d for iOS)
ITP-484x: Multiplayer Game Progamming (C++)
PHED-160: Stress Management for Healthy Living

CSCI-303: Design and Analysis of Algorithms
CSCI-402: Operating Systems (C)
CSCI-460: Introduction to Artificial Intelligence (Java)
CSCI-499: Free to Play Game Development (Special Topics)
ITP-485: Programming Game Engines (C++/HLSL/D3DX)

ANTH-200Lg: The Origins of Humanity
CSCI-271: Discrete Methods in Computer Science
CSCI-480: Computer Graphics (OpenGL in C++)
CTIN-484L: Intermediate Game Development (Unity/C# for PC)
CTIN-489: Intermediate Game Design Workshop (Unity/C# for PC)
CTIN-499: Level Design Workshop (Special Topics)
ITP-499x: Game Startup Workshop (Special Topics)

CSCI-201L: Principles of Software Development (Java)
EALC-342g: Japanese Literature and Culture
EE-352L: Computer Organization and Architecture (MIPS Assembly/CUDA)
ITP-380: Video Game Programming (C#/XNA)
WRIT-340: Advanced Writing Communication for Engineers

CSCI-200L: Object-Oriented Programming (Java)
CTAN-452: Introduction to 3D Computer Animation (Maya)
CTIN-488: Game Design Workshop
HIST-200gm: The American Experience
PHYS-151Lg: Fundamentals of Physics I: Mechanics and Thermodynamics

MATH-225: Linear Algebra and Differential Equations
MATH-245: Mathematics of Physics and Engineering

ARLT-100g: Arts and Letters: Classics in Modern Philosophy
CSCI-102L: Data Structures (C++)
CSCI-281: Pipelines for Games and Interactives (Maya)
ITP-280: Video Game Production (GameMaker)
MATH-126: Calculus II

CSCI-101L: Fundamentals of Computer Programming (C++)
CSCI-180: Survey of Digital Games and Technologies
ENGR-102: Engineering Freshman Academy
GEOG-257g: Environment and Ethics
WRIT-140: Writing and Critical Reasoning

University of Houston–Clear Lake: Summer 2011

MATH-2318: Linear Algebra
MATH-2320: Differential Equations

 

Currently Playing

 

Favorite Past Video Games

 

Special Thanks

To Katie Powell for inspiring me to make this site and for all assistance with the initial hosting. You can visit her site here.