/* 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
      
 
      
              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
            
 
          
              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
            
 
          
              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 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)
            
 
          
              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.
            
 
          
              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.
            
 
           
          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.
              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.
            
 
             
          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.