About Me

I study physics and computer science at University of California, San Diego.

I enjoy thinking about and trying to understand things. My curiosity has most recently led me to ponder questions related to particle physics and cosmology. Previously, I was involved in research at UCLA as an Amgen Scholar and UC Riverside related to electrophysiology and neuroscience.

When I'm not trying to understand the world around me, I like to create things. This tends to involve software engineering. For example, I created skqrl, a social platform for sharing what you like and dislike experiences, such as TV shows, movies, video games, music, books, restaurants, food, and more. I created the concept and wrote most of the code myself. For those who are curious, it was built using Django and Python.

I also enjoy writing. I am currently working on a series of short stories related to science and technology.  In the past, I've written about technology and videogames. I have been published by IGN, GamePro, Kombo, TheEscapist, and several others.

When I find myself with extra time, I indulge in various other hobbies. I am currently in the process of teaching myself guitar. 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.

If you have any questions or want to contact me, please send me an email.

Read more »

The Physics of a Pendulum



You've probably seen a pendulum swing, but have you ever thought about why it is that a pendulum swings at all? Further, why is it that a pendulum only swings for some period of time becoming motionless? It turns out, a simple pendulum is a great means through which we can develop intuition about the conservation of energy and the relationship between gravitational potential energy and kinetic energy -- not to mention oscillations.

Read more »

How high up is outer space?




The Kármán line is the altitude of the boundary between earth’s atmosphere and outer space. This 100100  km or 328,084328,084 ft. The value comes from Fédération Aéronautique Internationale, and it’s the same value that NASA uses to define the boundary between our planet’s atmosphere and outer space.

Read full article on things pondered
Read more »

Human Beings and the Next Revolution: Automation


“Can you believe people actually used to work?”

Some day in the not-too-distance future, people will say words like these.

Read more »

Calculus explained in a way that anyone can understand


Calculus is an essential mathematical tool used by scientists in many fields -- from physics to artificial intelligence. So, what is it?

Calculus is the study of change.

Full article


Read more »

Skqrl: A Social Platform For Sharing Experiences

Skqrl.com is a social media platform for sharing what you like and dislike about experiences, such as movies, TV shows, music, books, restaurants, food, drinks, events, and more. You can also follow others users and see what they’re experiencing.

My goal with Skqrl is to provide a platform for people to share bite-sized information about what they like and dislike about everything they experience. There are no reviews or ratings – instead, it’s all about short, list-style opinions that get to the heart of the matter. I want anyone to be able to quickly and easily share their opinion on a variety of experiences, without having to write entire reviews.

Skqrl connects you to your friends, allowing you to see what they’re experiencing, while providing meaningful information about each experience so that you can decide whether you want to spend your time or money on it as well.

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 designed and written.

Decision Tree: Predicting Credit Card Default 
This is a Python program that uses decision trees, the ID3 algorithm, and pruning to make classification decisions. More specifically, this program was written to predict whether a credit card user was likely to default on their payments using a 22-feature description of the the user. After pruning with a validation data set, this program predicts with ~90% accuracy whether a given user is likely to default on their credit card payment.


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 »