public void aboutMe(){

/* Hello. I'm Bryan, a senior at Cornell University majoring in computer science and minoring in business. I enjoy coding and learning hands on, among other things. In a field as broad as computer science, the most important skill is being able to adapt and learn, which is why I have taken on a diverse range of projects. While I look to commonly used models and examples to learn from, I always try to experiment and be creative.
See below: */
//projects
//among other things
//contact

}

Projects

Exploding BlackJack

[OCaml]

Exploding BlackJack is a combination of BlackJack and Exploding Kittens. The game supports a reguar BlackJack mode, saving/loading games, multiplayer and an ai called dealer. The ai can effectively use all number and special cards. Players can choose which mode to play when starting a new game. Exploding BlackJack contains extra cards such as:

bomb when drawn, the player loses the round
defuse negates bomb cards and allows player to reinsert bomb at specific location
force hit forces next player to draw from deck
nope can negate other players' cards
switch hands switches user's hands with another player's hand
shuffle shuffles the deck
steal user can steal another player's cards
forsee allows user to see next three cards in the deck

Blockly Atom Plugin

[ReactJS, JavaScript]

Software Engineering Class Project (team of 8)
•Developed Atom Blockly plugin, to be used in an intro web development class, with ReactJS
•Integrated Google's Blockly api with Atom text editor
•Developed in Agile/Scrum environment with a feasibility report and a milestone report after each sprint (~25 days)
•Displays .blockly files with Blockly gui
•Copy, paste, redo, undo functionality for blocks
•Can translate blocks into code See less

Delightful Fireflies

[Java]

Was developed with four other peers as a final project for an AI practicum. The GUI on the right shows the genetic algorithm in progress. The goal of the algorithm is to be able to learn how to trace a given symbol such the batman logo. The algorithm generates many "fireflies" that are given random/semi-random directions. Users can toggle between showing every firefly or just the most accurate firefly.

The logo is a graph of time and each x,y coordinate of the logo corresponds to a specific point in time. The lifetime cycle of each generation is gradually increased to improve accuracy while tracing the graph. The GUI shows the algorithm at a point in time where the lifecycle time is about three quarters of the logo. Fitness is a cumulative score based off of how far the firefly is from the x,y coordinate corresponding to the current time. The next generation of fireflies are created by randomly mixing the directions of the most fit fireflies. There is also a mutation rate that will randomly change some of the fireflies' directions to reduce the chance of settling at a local maximum.

Active Simon

[C]

Active Simon is a game in which the user has to memorize a random sequence of moves and replay them. Moves are represented by different colored lights. The player has 3 lives and each level has a time limit and an increase in difficulty (more moves to remember) The game uses the FRDM-K64F board(shown in picture) and its built in accelerometer.

Moves include:
•tilting the board forwards, backwards, left or right
•shaking the board
•front two buttons on the board

Demo: https://youtu.be/smpL9WqD4Q0 (or click on icon for laptops)

Amazon Alexa

[AWS Lambda, Alexa Dev Console, Python]

I have developed and published two amazon alexa apps, Odds Are and Goal of the Day.

Odds Are is a game in which when given a range, let's say from 1 to 999, will count down from 3 and then say a random number between the given range. Has had 116+ unique users

Goal of the Day gives users a new 'goal of the day' each day to accomplish. Has had 291+ unique users.

Combinatorics

[Java]

When given numerical inputs, n and p, the program will create a random diagram that fullfills the following requirements:

1) There are n nodes
2) Each pair of nodes has p percent of forming an edge between them

The graphical interface then returns the expected number of triangles that will form, the actual number of triangles formed, and the difference between the two values.

I was curious about the answer to a homework problem so I decided to model it through Java. This project was coded from scratch on my own time. I also wrote a python script to calculate the average difference between expected and actual values for 1000 trials(see: Python). The graph was more so to manually check if the algorithm was correct.

Website

[HTML5, CSS, jQuery]

I coded and designed this website with the help of Bootstrap and jQuery. It is mobile and tablet compatible. More details of my projects and website can be found on my GitHub page, linked in the contact section.

Combinatorics

[Python]

The python script models the problem described in JAVA-GUI. The picture on the top models an instance of a particular diagram and returns the number of triangles formed.

In the bottom picture, the trials method runs the countTriangle method 1000 times, with each diagram having 30 nodes and 35 percent chance of forming an edge between any two nodes, and returns the average number of triangles that actually formed as well as the expected number of triangles to form.

Exploding BlackJack

Blockly Atom Plugin

Genetic Algorithm

Active Simon

Amazon Alexa

Java-GUI

Python

Website

Among Other Things...

I enjoy going for runs, hiking, basketball, tennis, handball, and other sports. I also play guitar and trombone. Whether it's playing an instrument or moving around, usually anything active that doesn't involve staring at a screen helps me clear my thoughts and stay focused afterwards.