About Me

I am studying electrical and computer engineering at University of California, San Diego. 

I am interested in computer science and software engineering -- especially anything related to machine learning, computer vision, and robotics. 

In additions to my studies, I am working on a personal project that I'll be announcing soon. This project is a web application that I think will be an interesting social experiment and provide a novel service to users. In the meantime, to give some idea of the technical aspects of the project, I am building it using Django, Python, and MySQL. 

My personal interests are diverse, and I enjoy the challenge of pushing myself to understand as much as I can about everything. Beyond my interest in computer science, I enjoy following topics in physics, mathematics, space, neuroscience, biotech, and technology in general. 

Over the years, I've had many interesting experiences. For example, I have worked in two neuroscience research labs: at UCLA as an Amgen Scholar and at UC Riverside. I also used to write about video games and technology. I've been been published by IGN, GamePro, Kombo, TheEscapist, and several others. 

On the more physical side of things, I like to swim, lift, run, and bike. I've also been known to talk friends into going on long walks and hikes with me.

Anyway, if you have any questions or want to contact me, please send me an email. 
Read more »

Some Programs I've Written

This is by no means a comprehensive collection of my work, but here is a sample of some of the kinds of programs I've developed and coded thus far.


Prediction
This is a C program that can generate quantitative predictions based on a set of data. Users supply a set of x and y pairs, where x is a suspected independent variable and y is a suspected dependent variable. After naming the variables and providing a data set, users can provide a value, and the program will predict the corresponding dependent value. The algorithm employed uses the supplied data set to determine a linear equation that describes the relationship between the two variables. The program uses the given pairs of values to generate a least squares equation by solving the normal equation for the vector containing the regression coefficients that define this model. Given this approach, Prediction is limited to making predictions that are linear by nature. As a result, this program will not produce optimal predictions for all data sets.

Learn more on my Github

Uniq
This is an implementation of the "uniq" Unix command written in a combination of SPARC assembly language and C that consists of 1000+ lines of code. This program implements much of the same functionality as the Unix command. The program takes input from users and provides output based on the flags provided by the user when they run the program. There are various modes that the program can be run in. For example, users can use the program to identify unique lines of text or duplicate lines of text. A line is considered a duplicate if it is the same as another line and comes directly after that line. A line is considered unique if it is not a duplicate line.

Users control the mode of the program by providing defined flags as arguments. There are three mutually exclusive flags. The -d flag will result in outputting only duplicate lines. The -D flag will result in all duplicate lines being printed. The -u flag will result in only unique lines being printed.

In addition to the mutually exclusive flags, there are flags that can be used together. For example, the -c flag results in the count of duplicates being output. The -i flag will result in the program ignoring case during comparisons. The -s flag sorts the output. When -s is provided with -c, it is sorted by count. Otherwise, sorting is alphabetical. The -S flag can be used to sort the input before processing. Finally, users can provide the -x flag, which causes the output to include a summary. This summary describes information about the entries and lines comprising the input.

This program performs substantial error checking during execution. If there is a program failure or an error caused by user behavior, contextual error messages will be printed to stdout to aid the user in successfully running the program.

Anagrams
"Anagrams" is a interactive program written in C and SPARC assembly language. The program allows users to enter a word and find out if it is an anagram. An anagram is a word whose letters can be used to form another word. For example, the word "ape" is an anagram because its letters can be used to spell another word: "pea."

If users enter a word that is an anagram, then the program will print a list of anagrams that consist of the same letters as the word the user provided. The program uses a dictionary of words to generate a database of anagrams and hash keys, which play a role in the algorithm used to determine if a word has any anagrams.

Users are able to provide their own custom dictionary of words. The program will generate a database with the appropriate hash keys based on the dictionary provided. Users are also able to run the program with their choice of database.

This program provides comprehensive error checking and contextual information to aid users in successfully running the program. For example, users can type -h to learn what argument flags are required. When a user runs the program with invalid arguments, the program will provide the necessary information for users to correctly run the program. Should a run-time error occur during program execution that is independent of user behavior, contextual error messages are provided to the user to explain the program's unexpected behavior.



More programs coming soon...
Read more »

My Research Experience

Neuroscience Research at UCLA
In summer 2014, I was accepted into the prestigious Amgen Scholars program and conducted summer research at UCLA. I worked in Dr. Michael S. Levine's lab at the UCLA Semel Institute, where I was involved in a project focused on altered synaptic transmission in Huntington's Disease. My role involved statistical analysis of data collected during experiments. I presented a poster on this research at the UCLA Amgen Scholars Poster Symposium and UCLA SPUR Poster Symposium.


Neuroscience Research at UC Riverside
During summer 2013, I participated in UCR's MSRIP program, conducting neuroscience research that culminated in a poster presentation at the MSRIP 2013 Symposium. This work was done in Dr. Ted Garland Jr's lab, where I studied the neurobiology of mice selectively bred for high voluntary wheel running. My work involved capturing digital photographs of biological tissue, using software to trace brain regions, and organizing data for presentation. I gave a poster presentation at the UCR Student Summer Research poster session on this research.
Read more »

Some Books That Are Pretty Good

I read a lot. Mostly on the Internet, but sometimes I open an actual book. These are some of the books I've read that I enjoyed the most and highly recommend. 

Surely You're Joking, Mr. Feynman! (Adventures of a Curious Character) by Richard P. Feynman

A Brief History of Time by Stephen Hawking

A Mind For Numbers: How to Excel at Math and Science by Barbara Oakley 

Brave New World by Aldous Huxley 

The Great Gatsby by F. Scott Fitzgerald

On Writing by Stephen King

Fear and Loathing in Las Vegas by Hunter S. Thompson

Read more »