Hello!
Thank you for checking out my website.
I am a C++ and Python developer doing applied research in robotics. How computers interact, observe, and represent the physical world fascinates me. My work intersects with machine vision, computational geometry, controls, and more.
There exists a near-infinite number of programming blogs. Hopefully, these ideas will inspire others working at the intersection of robotics and computer vision. It is not my intent to add noise or repeat hello world
examples. Rather, this is a place to catalog my thoughts with small experiments or addendums to my GitHub projects that don’t fit nicely in a readme
file. A way to continue my growth as a researcher and programmer.
So again, thanks for stopping by! I hope you also find value in this content.
How did I end up here?
Journeys are important. Experience guides our interpretation. So why am I writing about programming?
I certainly did not begin as an expert in anything. I started using Linux in high school. Truth be told, I didn’t understand it. I learned the obvious: computers were complicated. I had no idea how powerful bash
was. I knew to occasionally run sudo apt-get update
but could not say why.
Perplexed by computers, I opted for mechanical engineering in college. The neat physics of mechanical systems were tangible. The enigmatic movement of electrons in computers was not.
I was seriously incorrect. Backward, in fact.
In mechanics, the classic physics and closed-form equations only get you so far. They work for special cases and develop the critical intuition a designer needs. With any complexity, work becomes an exercise in (educated) guesswork supported by probabilistic models, experimentally derived equations, and simulation parameter studies.
Don’t get me wrong. This was still fascinating. It just left me unsatisfied. Especially when learning how to use modern tools like SolidWorks or Ansys but not how they worked.
The sophomore-year Numerical Methods course was as close as my program got to computer science. The class used MATLAB to introduce that numbers are specifically arranged bits in memory, some math operations can only be approximated by computers, and algorithms are explainable and approachable.
It clicked. Computers are vastly complicated things. But they follow specific rules that I could understand. What was stopping me from learning computer science?
I immediately signed up for a minor in computer information science.
The intersection of our physical, mechanical world and abstract, computational representation inspired me. (And still does.) Robotics and computer vision exemplify this domain. I was finally learning the second language I needed to comprehend this world.
In my senior year, my university unveiled a new minor in robotics. I may have been the first person to earn it. Between my electives and my existing minor, I had already taken the required coursework.
This is only one half of this story. Why applied research?
The simple answer is that I needed a job after my sophomore year. A passing mass email caught my eye: come labs on campus were hiring summer assistants. This led to a brief interview with Dr. Nan Hu that ended with an offer to join his new Versatile Structures lab.
The research focused on design: architecting macro-scale patterns in materials to mimic natural structures. Even in my assistant role, I was engaged in meaningful work.
As a rising academic, Dr. Hu’s time at Ohio State was relatively short. My time in his research lab was brief but impactful. It left me with nascent researcher skills and a curiosity to explore beyond what classes covered. But no structured outlet.
Searching for what to do next led me to Dr. Haijun Su’s Design Innovation and Simulation Lab. Here, I incorporated my expanding knowledge of computer science into my research. I chose to pursue an undergraduate research thesis and investigated visuomotor control of robotics.
At the same time, I collaborated with a multidisciplinary student team on a capstone project sponsored by the Air Force Research Labs. Provided with a Yaskawa Motoman GP 7, a DSLR camera, and an eddy current probe, we were tasked with designing an autonomous, non-destructive inspection system. We divided this ambitious task into several subsystems; I spearheaded the generation of high-resolution object models from photogrammetry.
It was a challenging learning experience. I found inspiration in the research and development of a system needed to meet the urgent needs of the Air Force. And this work led me to an internship at the Air Force Research Labs.
I continued to work on computer vision problems during this time. It was a practical interlude between earning my bachelor’s and beginning my master’s. It solidified my interest in application-driven research.
I continued this through my master’s degree. Nominally still in mechanical engineering, my research explored view selection algorithms and voxelized data structures for robotic reconstruction tasks in autonomous systems.
In short, this is how a mechanical engineer winds up as a software developer.