Hello! My name is Branden Leong, and I am an undergraduate student at . I like to embark on random projects, mostly relating to mathematics or computer science, but I'm interested in a lot of seemingly disconnected fields, like linguistics and history. Among other hobbies, my favourites are origami, solving Rubik's Cubes, and doing sudoku.
My goal can be summarized in one word: self-sufficiency. I'm incredibly good at learning without any personalized guidance; I can learn to do many things just by reading about them (along with much practice, of course). Everything on this website, including the website itself, is built completely from scratch by myself (yes, the CSS was quite painful!). Self-sufficiency should be valued, especially in this day and age. We should not be told what to think, but instead how to think. Give a man a fish, feed him for a day. Teach a man to fish, feed him for a lifetime.
Here are all of my previous coding projects. I will add a small description and possibly some images for each site/program. A lot of these projects were sporadic and were only intended for my own use, so there are usually minimal aesthetic design and help information. In the future, I will update the other websites with the animation framework I made for this one. Clicking the header for each project should redirect you to it.
Cryptographic Hash Function. A unique cryptographic hash function similar to the SHA-256 algorithm intended for smaller text files.
Map Video Generator. For a map (I have to change it server-side. Its current display is a map of every province in the video game HOI4), it is possible to add troops and to record their movements. It displays various different movement rates and is able to create animations.
Sudoku Tool. A blank grid to import custom sudokus with custom-built tools for ease-of-solving. It is also capable of generating uniquely random sudokus and checking if a sudoku is complete.
Smart Flashcard. A smart flashcard tool that will show the user the flashcards he or she needs most help learning. Its main purpose is for learning languages/vocabulary, but it also has a built-in MathJax (\( \mathrm{\LaTeX} \)). It has both multiple-choice and free-response quizzing options.
Video Slideshow. Displays a slideshow based on the current videos uploaded (I have to change it server-side. Its current display is for my USC Internship). It is able to play any videos, but will be updated in the future to display also images. In addition, it will be updated to optimize a smooth transition between video clips.
Random Name Picker. Given a list of (new-line spaced) entries, spin a random name from the list. There are multiple degrees of customizability to the spinner.
Seating Chart Generator. Given a spreadsheet of names, nicknames, test scores, gender, and request to sit in the front, create an evenly balanced grouping of students in a classroom.
Test Randomiser. Given a spreadsheet of questions, question types, answers, and point values, randomly scramble the questions and answers based on seed value(s). There are additional formatting/stylistic options to customize the tests.
Dictionary. Stores and filters a list of vocabulary words for different languages. Tags help sort words of interest based on some categories. Words can also link to other words; useful for etymologies.
University Schedule Helper. Visualizes all possible schedules that can be generated from a list of classes to help select the best schedule without overlaps. Unwanted schedules can be hidden to narrow the selection.
Nonogram Generator. Implements multiple image processing features including custom kernel convolution and color quantization to generate puzzles for importing into external programs.
As I dove deeper into computer architecture, I found that I love making computers in esoteric environments, from video games to productivity programs. If it is Turing-complete, theoretically a computer could be implemented in it. Microsoft Excel (from which Google Sheets is derived) is indeed Turing-complete, and I set out to making computers in spreadsheets, purely for its comicality. I hope to eventually work my way up to larger and more powerful CPU designs.
16-bit processor, 64KB byte-addressable RAM, 64KB byte-addressable PROM
16-bit processor, 64KB byte-addressable RAM, 64KB byte-addressable PROM, 5-stage Pipeline design, Assembler included
Click the link above to read the full paper ("UbiPose: Towards Ubiquitous Outdoor AR Pose Tracking using Aerial Meshes").
ABSTRACT: Tracking the position and orientation, or pose, of a viewing device enables AR applications to accurately embed virtual content in physical spaces. Mobile OSs track pose by matching device camera images against street-level imagery. Thus, pose tracking is often unavailable at off-street pedestrian locations. UbiPose enables pose tracking at such locations using aerial meshes, generated from satellite imagery, that are likely to be more widely available at these locations. However, matching a camera image against an aerial mesh can be error-prone, even with modern neural matchers. These neural components are also compute-intensive. UbiPose contains a novel pose tracking pipeline that runs entirely on a mobile device using fast-path optimizations designed to accept or reject pose estimates in many cases, without sacrificing accuracy. Experiments on real-world traces show that it achieves tracking accuracy comparable to AR pose tracking in iOS in places where that is available, and is able to track pose accurately in places where it is not.
Click the link above to read the full paper ("iDriving: Toward Safe and Efficient Infrastructure-directed Autonomous Driving").
ABSTRACT: Autonomous driving will become pervasive in the coming decades. iDriving improves the safety of autonomous driving at intersections and increases efficiency by improving traffic throughput at intersections. In iDriving, roadside infrastructure remotely drives an autonomous vehicle at an intersection by offloading perception and planning from the vehicle to roadside infrastructure. To achieve this, iDriving must be able to process voluminous sensor data at full frame rate with a tail latency of less than 100 ms, without sacrificing accuracy. We describe algorithms and optimizations that enable it to achieve this goal using an accurate and lightweight perception component that reasons on composite views derived from overlapping sensors, and a planner that jointly plans trajectories for multiple vehicles. In our evaluations, iDriving always ensures safe passage of vehicles, while autonomous driving can only do so 27% of the time. iDriving also results in 5x lower wait times than other approaches because it enables traffic-light free intersections.
Click the link to view a higher-resolution image.
Here are things that I've done that don't fit into the other categories. I guess you could say they're my quirky hobbies.
Tsum Tsum Calculator Spreadsheet. Enter your values for your Tsum Tsum collection and it will calculate various statistics about your game progress.
\( 5^{4} \) Rubik's Cube Solve - Video. My solve of the Professor's Tesseract.
Do you like what I do? Have any questions? You can contact me through any of the means below.