Timeline ⏳
The Beginning
My interest in technology began at a very young age with typing on
a computer. I was amazed that my teacher was able to enter
students' names without even looking at the keyboard or
monitor. During typing classes, I would aim to complete the
lessons as fast as possible and improve my speed.
In
middle school, each student got a laptop. I was able to continue
improving my typing speed, but most importantly, I got to learn a
lot about Windows machines and technology in general. I would
offer my help to any student having issues with their device. I
fixed minor issues with printers, projectors, and other devices
around the school. I also got my first experience with programming
by making a Minecraft mod in Java through an online course.
Early High School, Early Programming
My high school had a similar take-home device policy with
Microsoft Surface tablets. After receiving the device, and before
the start of freshman year, I decided to install the Eclipse IDE
and continue my programming journey.
I started from
scratch with the classic "Hello World!" program. After
experimentation with basic text apps, I started working with Java
Swing, which allowed me to build GUI applications. The idea that I
could build an application and share it with anyone via a single
file was incredibly exciting.
I made many simple GUI
applications, such as a Soundboard and a Rock Paper Scissors game.
The Soundboard application interested me, but I wanted it to be
user customizable. This led to the creation of WaveBoard. The name
was a split inspiration between "Soundboard" and the
Waveform Audio File Format (WAV), which was the preferred format
of the user-determined sound files. Each sound could be named
corresponding to a key on the keyboard. When the user pressed that
key within WaveBoard, the audio file would play. For version 2, I
implemented an audio visualizer, and the user could set the app to
be an always-on-top window.
High School: Final Years
In Junior year, I took AP Computer Science, later scoring a 5/5 on
the AP exam. I was given a structured view of the Java language,
which helped me refine my style and consistently apply
object-oriented programming (OOP) principles throughout my
code.
With a greater understanding of programming and
the Java language, I was driven to create more complex projects.
That year, I created OSEffects, an
application to add audio and visual effects to mouse clicks and
keyboard presses. The app shipped with built-in effects, but the
user could add their own and configure them in the settings.
Near
the end of Junior year and throughout Senior year, I worked on a
much bigger project: A 2D, timed survival game using playable
shapes with varying abilities and traits. I called it
Shapescape, a combination of the words
"shape" and "escape." The game was built
without a third-party engine, using native Java Graphics2D and
Swing. It never reached completion, despite having playable
development builds, but it taught me a lot.
Throughout
the rest of high school, while working on Shapescape, I created
even more applications, including an English/Binary converter and
a text-to-speech application.
Project O.N.E.
After graduating from high school, I knew I wanted to save money
and stay at home. We lived in an old house, which meant many
things that would be common today were missing. This included door
locks. Living with a big family teaches you many things, including
the importance of securing important belongings, or they will be
inexplicably "missing!" I figured I could just buy a
regular lock for the door, but then I had an idea. What if,
instead of buying a lock, I
created a
lock? What if it didn't require a key or passcode, but simply
used my fingerprint? Ideas kept coming, and I had a vision for how
to execute it. I was far beyond just solving my original problem.
I saw an opportunity to learn and make something great. After
writing down tons of ideas and doing extensive planning, I began
ordering parts and creating the project.
It continued
to evolve throughout development, but my preparation paid off
immensely. Developing Project O.N.E. required learning new skills
in order to execute efficiently, with safety always in mind. It
gave me a chance to learn more about hardware, while interfacing
it with my software.
The system has been fully deployed
since March of 2023 and has been incredibly reliable. I have
written down around 10,000+ words of ideas, bugs, updates, and
more — and that's not including any code. Documentation was
extensive, including hours of video footage, keeping me on track
even through busy periods of work and school. You want to see this
for yourself; check out the
project page!
PiPAA (Picture-in-Picture Anything Anywhere)
I missed working on something significant in my spare time. I had
various small endeavors, but none of them were substantial. Eager
to use what I had learned from Project O.N.E. and fresh with
inspiration, I started working on PiPAA. The idea came after
frustration with the picture-in-picture features built into most
browsers. They only work on some sites, with certain media, and
they have a fraction of the features compared to typical media
players. Regular media players work, but they have rough support
for web media and rarely offer an always-on-top mode for
multitasking. I saw a vision for something which does both.
Rather
than reinvent the wheel, I used the open-source library powering
one of the most popular media players, VLC. PiPAA can load media
from your computer, or from a web source. It's as simple as
drag/dropping or copy/pasting onto a window and the application
handles the rest. These windows remain always-on-top, and they can
be moved and resized with ease. Most importantly, they maintain
typical media player functionality and controls. You don't
have to sacrifice this like you would in other picture-in-picture
windows.
PiPAA is my most recent, and current, project.
It is still being developed. This is where I am dedicating much of
my personal programming time. I have many big improvements
catalogued, planned, and in-progress!
Take a look at my
Projects!