Tuesday, September 7, 2021

Stock Web Scraper & Visualizer (Python)

For this personal project, I developed a webscraper that meaningfully synthesizes data from various websites & generates statistical & visual output, tailored to my investment strategy. The output statistics provide a high-level overview of the input companies and their performance over the past few years. The scraped & computed data is then visually represented to the end user, highlighting trends in efficiency & growth factors. The output is ripe for growth comparison & analysis.

Development/Tooling:
  • Python Virtual Environments
  • Web Scraping
  • Data Cleaning, Transformation & Formatting
  • Data Visualization
Domain Knowledge/Research:
  • For investment consideration, what numbers are important, when evaluating a company/stock?
  • What statistics do I personally find significant? Are they commonly available when viewing stocks online?
  • How do I maximize significant, derived insights from each dataset?
It was an excellent experience. I am happy to report that I have learned a lot from it.



Sunday, August 24, 2014

Internship at Floor 84 Studio

In summer of 2014, I was hired as a programming intern for F84 Games.During my time with the company; I was fortunate to work on a number of high profile projects which can be played in the market place today. My responsibilities included but were not limited to: 
  • Gameplay Programming
  • Artificial Intelligence Programming
  • User Interface Programming
  • Debugging and Gameplay Testing


Some of the projects I worked on include the following:

1. Provided programming support on a vertical scroller game akin to Galaga. Players control an intermittently transforming robot and must fly, run, and drive while defeating waves of enemies and end level bosses. Additionally, the game features an upgrade system, bombs, and tutorial.

2. Provided programming support on 3D isometric turn based game similar to XCOM: Enemy Unknown based in Unity Game Engine. The game involves a player controlling a squad of various class members each with different abilities.  Player takes turns to advance through areas and take out any enemies in their way.

3.  Spearheaded the port of a flash game to HTML5.  I was responsible for most programming requirements.  This game features levels in which the player character must complete objectives without getting caught by the patrolling npcs.

4. Provided programming support to the team on on a physics simulation game.  This game involves solving a puzzle using available parts to get the ball to the goal. 

5. Provided programming support on 2 minigame collections.  Minigames included scrolling runner, maze generation, and pirate ship cannon battle to name a few.

I also participated in team creative meetings as well as provided robust testing support to the design and programming teams.

In Fall of 2014, the CEO of F84 games contacted me and requested that I return and work for them as a contractor during my winter break. In doing so, I gained more valuable work experience and was able to once again assist the the team during one of their busiest seasons.

Autonomous Robotics & Navigation

In spring 2014, I had my first experience working on robotics. Me and a classmate received a robot kit called the "4WD Hercules Mobile Robotic Platform". During my time with it, I programmed in the Arduino IDE using C++ and implemented various functionality including:
  • Ultrasonic detection to facilitate obstacle avoidance and reaction
  • LEDs
  • Light sensors
  • Replicated Braitenberg vehicle behavior in which the robot would either follow and accelerate toward a light source or run away and accelerate away from a light source. 
  • Dead Reckoning navigation algorithm via odometry
    • Using this, we were able to get our robot to autonomously navigate a 10x10 grid starting at a corner. The robot would reach the goal located at another corner and return to its initial position via odometry calculations.
    • Throughout this process the robot is always avoiding obstacle in its path and staying within the boundary.
    • Obstacles encountered by our robot were stored in a bitmap so it would "remember" obstacle locations. 

Advanced Graphics Robot

In spring 2014, I worked on an interactive graphics project with a friend using C++ and Xcode. This project had more depth and encompassed more advanced graphical topics when compared to previous graphics projects. These topics include but are not limited to:
  • Particle Systems
  • Collision Detection
  • Inverse Kinematics
  • Forward Kinematics
Unfortunately the video recording software used at the time significantly slowed down the program processing and therefore the video did not turn out so smoothly. However, when running it on the computer without recording software overhead, it runs well.

Saturday, December 28, 2013

Graphics I Robot v2

I worked on this project with a classmate for our computer graphics I class. It is coded in C++ using OpenGL, GLUT, and, GLSL. You may notice that the head of our model looks oddly familiar. We actually found an opensource obj file that listed the many vertices, normals, and faces for "The Rock" (Dwayne Johnson's) head. After some regex treatment, we imported his head into our project and it was too entertaining to discard. So we decided to leave it in. With that being said, this project was very interesting to work on for many reasons.

This robot project illustrates graphical techniques including:

  • Model transformation
  • Lighting via the Phong Reflection Model
  • A dynamic viewing frustum
When recording this video for our project presentation, we forgot to include a demonstration of the dynamic viewing frustum. However, It functions just as illustrated and described in the previous post regarding our square robot.

Graphics I Robot v1

I worked on this project with a classmate for our computer graphics I class. It is coded in C++ using OpenGL, GLUT, and, GLSL. This robot was essentially the predecessor of our cylinder robot.
This project illustrates graphical techniques including:

  • Texture mapping
  • Model transformation
  • Lighting via the Phong Reflection Model
  • A dynamic viewing frustum

The video shows some camera movement at the end. The camera can move along the X, Y, and Z axes and has presets associated with numbers 1-7 on the keyboard. In retrospect, we may have gotten a bit carried away when recording this but hey, we had fun.

Unreal Engine, Third Person Shooter

This is a project that I have been working on and modifying in my spare time. It is far from perfect but it is a work in progress. It is one of the most entertaining projects I have worked on and I will continue to modify it and add features to it as time progresses.

I developed it using UnrealScript, the ConTEXT editor, the UDK editor, and Kismet. I also used UncodeX to browse various classes and their relationships within the unreal engine.

Note: There is a point where the weapon level increases during the video and I did not pick up an upgrade. That is because I used a macro I made by hitting 'u' to replenish ammo and increase fire rate. Of course, in a real game that would not exist. It is simply there for convenience while I periodically modify the game.

Some current features include:

  • Upgrades that each increase the weapon level of the launcher by replenishing ammo and increasing the fire rate up to a cap at level 5
  • A third person camera (replaced the default first person camera)
  • Kismet driven events
  • Enemies and a boss that each have various states that dictate their behaviors
  • Once the boss' HP is less than or equal to 10, it can fire a trio of rockets or a beam that does minor damage and temporarily slows your movement