I work with scientists at the Coral Resilience Lab (formerly Gates Lab) to design and build custom automation and monitoring tools for coral research. Current projects include building aquarium tanks and automated photogrammetry pipelines for research related to selective breeding of corals.
The lab runs two dozens of temperature-controlled water tank for experiments. The tanks follow predetermined temperature profiles over time - sometimes it's to replicate an old temperature time series; sometimes a predicted one decades in the future. The researchers would then measure the effect of the temperature profile on the coral samples. I designed the user interface for these temperature controllers so that each tank can be configured by a researcher with minimal instruction. I also made user interface for the operators to monitor the operating status and states of the tanks in real-time, even remotely.
I built and maintain a "camera gantry" to take high resolution macro photos of coral babies kept in the lab. The gantry moves a camera over predetermined positions along a programmed path with configurable imaging settings. It takes several hundreds of photos per hour.
The user interface is made such that the user can control which positions to visit, and the sequence to visit these positions. A time series of the coral babies is built as this process is repeated as frequently as the experiment design dictate (typically weekly to monthly).
A common theme when I find solutions for these one-off projects: the system must be understandable for future self / the next untrained person, and it has to be usable by "normal people" besides "computer geeks". As I build more and more tools for various projects, the day to day operation, maintenance, and training can easily consume all of my time if I'm not careful about how I design these tools (e.g. tech choice, component selection, what feature to leave out etc.). The more self-sufficient the users are, the more free time I have to take on new projects.