About Me

A selfie with my 1 year old computer from 2018.

Career

You will see in my resume, that most of my professional experience is in teaching. I initially got into teaching following my year at UT Austin in the graduate Physics program. I didn't have a good grasp on what I wanted to do but I knew pursuing a PhD in Physics was not it. I preferred my tutoring so I gave teaching a try. I taught math for two years at Churchill High School in the North East School District, in San Antonio, TX. During this time, I found a renewed interest in programming (Java) and so when I was unhappy after two years, I decided to pursue a degree in Computer Science at UTSA (since we were living in San Antonio at the time).

My original career goal after attending UTSA was to become a software developer. However, I was encouraged through Dr. Jianwei Niu to pursue a PhD. I did this for a while and, honestly, didn't make much progress. Eventually, I was able to achieve a Master of Science in the Fall of 2015. This was partly due to the fact that my wife and I felt it was best for our family to move back to Victoria, TX, close to our parents for help with our children. Because of this I was limited in my career options, so I gave teaching another try.

I first tried teaching math again—Algebra I (and Geometry at Churchill) were not good fits for me. I then tried Junior High Technology for two years—I'm not cut out to teach Junior High!!! I would now like to pursue my original goal of software development. I may not have the professional experience, but I have the necessary skill set to both start developing quickly and I will learn quickly as well.

20 Years of Programming Experience

My first dive into programming came my senior year of high school, in 2000/2001. Technically we were using C++ but I would later realize we were really, basically, programming in C (we used C++ syntax for I/O but no objects and nothing else that couldn't have been done in C). At the end of the year, we were all supposed to make a game using QBasic. I always liked Artillery so I made an artillery game. It shot rockets, which rotated with their path (I used Calculus to figure that out) and had sound effects (just a tone increasing, then decreasing in sound—or vice versa, I don't remember now). My game was voted the best in the class.

4 Years at UT Austin

Next there is from 2001-2005, while I was getting my B.S. in Physics at UT Austin. I took my first Java programming course in the Spring of 2002 (my freshman year). Concurrently (in the Spring of 2002), I was also taking a Differential Equations course which had a computer component (meaning some assignments would require the use of, say, Maple). About halfway through the semester the Java course briefly covered Java2D graphics and I was able to look at the book for more examples. I started writing Java programs which graphed/solved the solutions for my Differential Equations class (where I would otherwise need to use Maple). This was the first of many instances where I used Java programming to assist in, not only my math, but also my physics homework.

I ended up taking two introductory Java courses (a true intro and an intro to data types and basic algorithms) and three additional courses in Graphics and Visualization, Scientific Computing, and Computational Physics (not a CS course). We used MATLAB in both the Scientific Computing course (CS) and the Computational Physics course (Physics). This left me with a fairly strong "programming" background; however it also left me with a very disorganized style of programming.

3 Years, then Renewed Interest

The next three years would be one year of graduate school where I really didn't program much at all (although I did develop an Applet to, wrongly, display the behavior of a double pendulum—bad math there) followed by two years of teaching Calculus, Pre-Calculus, and Geometry to high school students in San Antonio. I didn't program much my first year of teaching either but in the second year, I was making more of an effort.

During my second year of teaching (2007/2008), I was making an effort to look for programming projects. I developed some Applets for my pre-cal class to try and make solving the problems a little more fun (while also verifying their answers). I even received a "Charger with Pride" award (from the high school I worked at) for creating a program to analyze TAKS data. I also created a program for the kids to explore geometric shapes in 3D; all of this was using Java, from scratch, so I was still programming on a very low level.

3 Years of CS Core

This largely speaks for itself. I was starting from the basement floor; with a a B.S. in Physics and (at least) 7 years of a programming experience. After my first semester at UTSA (and one course), I was asked to be the T.A. for that introductory (Java) course and I did so in Spring and Summer of 2009 (I couldn't continue due to scheduling conflicts—I did have a 1 year old at the time that my wife was supporting). My undergraduate experience was a good one. I learned to organize my code much better. I became equally concerned about "does it work" and "can I upgrade/work on it later". I was in the undergraduate system for 2 years, then got accepted into the Master's program in the Fall of 2010, followed by being accepted into the Doctorate program in the Spring of 2011.

2011 is Kind of a Crazy Year (skip anecdote)

So let's see, at least four major things happened in 2011: 1) I wrecked my car, 2) my wife got pregnant with my 3rd (and last) child, 3) I got an internship with IBM, and 4) I then totaled my car! I mainly know this all happened in 2011 because I know it's the year Jackson was conceived (his birthday is easy too because he was born on Friday the 13th, January 2012). I know it's the year it froze badly in San Antonio in late February because I went to my Graduate OS class ( which I routinely skippednote: edit that part out later) and ended up rear-ending someone on Loop 1604 because the roads froze. I barely got home that night because my car could barely get up the frozen hills.


Insurance paid out, I paid for my own (cheap) fixes. Then, GREAT NEWS!! I got the internship at IBM under Ivan Milman and Dan Mandelstein. I started commuting between Universal City (just north of San Antonio) to Austin for the summer (then extended into the Fall semester). Meanwhile, I learn my wife is pregnant and a little later an 18 wheeler side swipes me on I-35 South in Austin right before 71. Basically ruins my passenger door, thus "totaling" my car...which I then drove between Universal City and Austin for the next three months.

Meanwhile, at IBM, I was writing a routine to both parse and create XML files for a database project.With no prior experience with XML, I learned how to organize data using XML, including how to organize hierarchical data. I also learned how to specify and use XML schema for validity checking. In addition, I learned how to use the provided SAX parsing API, native to Java. All in all, I was able to go from no experience with XML, to creating routines, in Java, to 1) parse an XML file which included: making a server call to get the file, checking the file validity against the given schema, and finally retrieving information via a SAX parser; and 2) creating an XML file from internal data. Also, it's my best answer to a question on stackoverflow.

4 Years of Graduate School

Aside from writing my Master's Thesis, there are three major projects I remember undertaking in my classes:

  • Remote Object Server (for 2011 OS)
  • Java (low level) Database Implementation (for my Spring 2014 Database class)
  • Android Program to discover and detect strength of a WiFi signal (Fall 2014 Security class)

Remote Object Server

This was actually in the previous "3 years" (Spring of 2011) but I was very proud of my implementation. I worked together with another student to develop a remote object server for our Graduate OS class. The project was to create a mock bank application with remotely accessible account information. This was a highly modular design which used the same class to create servers for 1) the DNS server (ran all the time), 2) the bank account server (ran all the time), and 3) intermediate servers which made connections between a user and the bank account server.

Java Database

In the Spring of 2014, I took a graduate course on Databases (I wish I had had this class before interning at IBM). Throughout the semester we were required to incrementally build up the routines necessary to make a functioning database application (via Java). We had to handle low-level I/O via reading/writing a "page" of data. Later in the class, we had to implement indexing and as a final project, we were required to implement some optimizations.

WiFi Detector

In the Fall of 2014, I took a Computer Security class. I decided to take on the final project which required finding the access points around campus (UTSA). I ended up writing an Android application for my phone to show me readings for detected Wi-Fi signals. In that way I was able to find over 20 routers (really access points) in the Computer Science building at UTSA.

3 More Years of Teaching

I didn't do a lot of programming in my first year, while teaching Algebra 1. Although I did use latex to create some geometry assignments at the end of the year. My second year back (first year at a Junior High), I created a program which scraped HTML to find students scores, then organized them by period (we were using a range of software for the students and this was a way to easily consolidate all of the data).


My second year in Edna (3rd year back teaching), I did quite a bit of programming in an attempt to make my Technology course more interactive. One of my favorite projects was replicating a snake game (from "Cool Math"). I needed something fun for the students to do during state testing. So I had them gather data on their ability to play the Snake game. I had them record their time and score for each game. That was later put into a Google Sheets spreadsheet, then combined class-wide and shown to be a normal distribution via a histogram. They also plotted their scores vs. their time (which mostly showed to be a linear relationship). The problem was that the game at Cool Math didn't have a timer. So I created my own replica with a timer. The video above shows a (very) sped up screen capture of me playing my snake game (that you'll notice, has a timer).