My Adventures in Code - Area Under Construction

In this area, I have a collection of projects I have worked on. You will likely notice that, just like this website; I tend towards learning and experimenting with unique technologies. Though the technically difficulty of these projects varies greatly, I believe there is also alot to be learned from implementing simple technologies creatively in addition to understanding the technically complex.

#This Website - Status: Ongoing

Technologies Used : JS,Three.js,HTML,CSS,Git

Notable Feature Summary:
- Performant on web and mobile despite extensive 3d rendering
- Quaternion based day/night cycle, accelerated by scrolling
- Modular section tiles including camera and tile translations

This website went through quite a few initial design iterations but the goals were always the same:

- Learn Git and Manage a Larger projects
- Learn Three.JS using almost soley documentation
- Create something unique that would make people say "I've never seen a website like that"

This project took about a month and I learned alot about using Git safely to maintain the project (After breaking it quite a few times). I wanted to focus on learning through documentation to be better prepared for using technologies that were too obscure to have many tutorials or forum solutions, I ran into a few issue but overall it went smoothly and it was an enjoyable jump into webGL's capabilities.

My big takeaways from this project were more robust workflow practices, an appreciation for quaternions and practice compartmentalizing issues across a broader program. In the future I think i would work to seperate the components further as in the end many components did end up relying on eachother cyclically.




(Above) - An early iteration of the websites background using a lit texture mapped along a sinusoidal function, unfortunately the isolating the lighting of just the background from the rest of the scene would have added too much overhead to the project, and I think the final space-themed version better represents me anyways.

#Exam Buddy - Status: Completed

Technologies Used : Python,Google Mediapipe

Notable Feature Summary:
- Capable of handling many hands in frame
- Requires only a minimally-specced latop and laptop webcam
- Handling of inverted hands

The goal of this small project was to get some hand on experience applying computer vision as well as some linear algebra concepts.
The face is drawn to a polygon that has been created from several points on the hand and wrist. The face is then made angry or sad based on the determinant of some vectors forming part of that polygon. This was an interesting chance to apply the concept of the determinantbeing the area of a given parralellipiped and worked smoothly after I realised that the coordinate system openCV2 was using had its origin in the top right of the window.

This sparked my interest in augmented reality as when I dove into the field to try mapping my whole body to a 3d model using Google's broader mediapipe library found that the field was incredible young still. The second video is me experimenting with a media-pipe based program that was entirely documented in chinese and only 2 weeks old when I found it.

#Voronoi Map Generation - Status: Ongoing

Technologies Used : C++,OpenGL, Unity,C#

Notable Feature Summary:
- Implementation of a Voronoi dual mesh in c++ and OpenGl using Delaunay Triangulation
- Efficient traversal of graph representation within c#
- Self contained map-representation class.

This project was inspired by reading through Amit Patel's articles on dual-mesh map generation. My goal was to reimpliment the concept from mostly scratch (I used a delaunay triangulation library and a poisson distribution library) in C++.


I made significant progress using this method with just C++ and opengl and was very careful about structing my code effectively. Eventually however, my progress implementing the concept in c++ felt more like i was wrestling with OpenGL than geting a feel for this intersting data structure so I decided to try using someones unity implementation of it to try my idea more quickly more technical details about the C++/OpenGL variant included generation speed etc is listed on it's github page.

I had originally thought that this data structure would be amazing for simulation-style games and so I created a system for spawning random civilisations and their people and letting them traverse the area that worked very well. I am a big fan of the idea of gameplay emerging from complex systems as is the case with things like Tynan Sylvestor's "Rimworld" and Joar Jakobsson's "Rain World" and intend to continue trying my hand at it as more free time presents itself.

In the Unity version, each civilization is spawned inside a random safe biome polygon on the mesh. You can see in the video that the circles representing units are grouped in colours by their civilisation then move independantly throughout other regions avoiding the ocean.

(Below) - C++/OpenGL Dual-Mesh at various Generation Stages

(Below) - Unity/C# Implementation

#AutoHow - Status: Completed

Technologies Used : Python, OpenAI API, Flask

Notable Feature Summary:
- Robust AI response processing
- Image and text generation for each step
- Created in under 3 hours

This project was made leading a team of 3 in a 3-hour school hackathon themed around the OpenAI API. The website takes in a prompt to complete the phrase "How to ___ :" and python is used to structure the request to gpt in a way it gives consistently formatted replies. Each step is then fed into DALL-E, the prompts are reprocessed to attempt less error-prone images in response. All of the responses are then returned to construct the WikiHow-style page.


Initially I found the theme of relying on gpt's API a bit too simple, but after doing it myself and having students try their own hand at applying the api, I found that there is definitely still unexplored applications as this technogy becomes more prevalent.

The 3-hour time crunch and GPT theme constraint gave me a renewed appreciation for finding ways to innovate on the basics through their application rather than just their technical makeup.

This project gave an opportunity to challenge the drawbacks of current LLMs and and try to overcome them algorithmically. Takeaways are that double-entendres are to be avoided as they most often lead to unpredictable (and sometimes comedic) results

In addition to the time and technical constraints, I found being chosen to lead the team put me in a unique position to make the most of my groupmates varied abilities. I am happy to say my teaching experience helped tremendously in this regard and I was able to break of the tasks efficiently.


I definitely could not gotten runner-up own my own and I am thankful to my wonderful team!

(Below) - Some Examples of Generated Articles.

My Skills - Area Under Construction

I have been lucky in that the many jobs I worked outside of tech I believe have prepared me well for the field. This section is mainly dedicated to soft skills as I believe my technical skills as to not overlap in information with the Projects section.

Get In Touch

I am currently seeking SWE Internship or Research Assistant roles. If you would like to contact me about an opportunity or talk to me more about my projects please don't hesistate to reach out using your preferred method below!

https://www.linkedin.com/in/daniel-h-4103371a4/

d.harrington@mail.utoronto.ca

novus@hotmail.com

204-441-0062