Shotwell is the leading photo management application on the open desktop and ships out-of-the-box with Fedora and Ubuntu. I worked on Shotwell throughout my four-year stint at the Yorba Foundation and wrote perhaps 25,000 of Shotwell’s ≈115,000 lines of Vala code. For two years, I was a staff programmer under the excellent technical leadership of Jim Nelson, Shotwell’s creator. For the remaining two years, I served as Shotwell’s technical lead. I did a lot of project and product management in addition to the usual tech lead stuff like reviewing code and laying out system architecture. Shotwell is a highly-visible project, and everything from its user guide to its architecture spec is already documented elsewhere. Hence, my page here has more to say about my experience building Shotwell than with Shotwell itself.
Studio580 is an interactive painting system that employs concepts from machine learning and image processing to create style-adaptive, non-photorealistic paint effects. It started as a research project in a graduate computer science class at the University of Michigan. The class was numbered EECS 580 in Michigan’s course catalog, hence the name. Studio580 was genuinely innovative when developed in 2007-2008 and remains impressive even by today’s standards. It makes full use of modern, programmable, graphics hardware to achieve style-adaptation while retaining the fluid responsiveness required of an interactive system.
The link above takes you to my Studio580 page where you can download a source code kit and a binary package (for Windows systems), view screenshots, read documentation, download additional brushes and see a gallery of paintings created with Studio580.
MPI/RT is a parallel, distributed-memory Monte Carlo ray tracing system, targeted at the massively parallel nyx supercluster at University of Michigan’s Center for Advanced Computing. It was developed to explore how the use of bounding volume hierarchies—a common acceleration technique used in modern ray tracers—can complicate load balancing in parallel systems, and how such complications can be overcome. A fully parallelized, distributed software system, MPI/RT dynamically balances loads over many compute nodes, even in the presence of bounding volume hierarchies, and uses the industry-standard MPI library for inter-node communication. Clicking the link above takes you to my MPI/RT page, where you can read a more extensive description of the problem MPI/RT was designed to solve and download source code.