My name is Steven. I live in Vermont where I enjoy wandering in forests, exploring ideas, having everyday adventures, and indulging a healthy dose of silliness. I try to live lightly and be kind. I'm thankful for my friends, family, and significant other.
This site is a home on the Internet for some of the projects I have done, for some of my writing, and for whatever else I choose to add. Everything here is always a work in progress.
I also welcome the opportunity to connect professionally. I have a long history in software development, and am curious what new and exciting ideas people and companies are pursuing to make the world a better place - using information technology or otherwise. With that in mind, here is a bit of a resume.
Technology changed a lot over my software career. Many of the skills that were important in my early years are not as important today, and many important skills I have today did not exist when I started. Constant throughout though, and something I believe will remain a constant well into the future, is that stakeholders need reliable innovative systems and efficient processes (software and otherwise) to move their goals forward. Success in business or research is a game of forever learning and exploring, always increasing the chances that decisions made will turn out to be good ones. It is a game I love to play, and I am lucky that there have always been interesting problems to solve.
I joined the PhD program at UVM to follow my dream of helping discover interesting ideas in computer science, and to improve my math skills. I was especially interested in techniques for proving things about the runtime behavior of software, and in how such techniques could be incorporated into an IDE and made usable enough for actual industry teams to adopt.
My first semester I worked as a Teaching Assistant in the department's Computer Security Foundations and Computability & Complexity. My second semester I taught two sections of Introduction to Programming. Since then, my research focused on secure multiparty computation and adversarial machine learning.
Asure provided time tracking and payroll services to small and medium size businesses. I helped maintain our time and attendance product, mostly characterized by making small changes to brittle legacy code. I also contributed to Azure CI/CD pipelines for our applications.
Additionally, our team maintained a system that used timeclocks and facial recognition. I helped maintain the applications associated with that system and built an ETL process and analytics dashboard to track the performance of our facial recognition time clocks.
My favorite innovation was a .NET adaptation of the Guava library's range set to simplify our business logic around sets of time intervals. I left Asure to work full time on my PhD.
QGenda sold a SAAS physician scheduling system. Working there was also my fist real exposure to the Microsoft technology stack. I maintained user interface components in React and ASP, and wrote web services.
Carrying forward my Business Intelligence efforts from OpenTempo, I also joined my colleagues in building out the data pipeline for a new physician workforce analytics product.
Even though I worked on a talented and supportive team, I learned that remote work is not a good fit for me. I left for an in-person job as the Covid pandemic progressed.
I developed new functionality for our SAAS physician scheduling product, including user interfaces and backing schemas. Internally, I helped establish and enforce coding and design conventions, making incremental improvements to transition legacy code safely into the future. I unit tested new and old business logic.
Before QGenda acquired OpenTempo in 2019, I advocated a metaheuristic approach to automated scheduling, and spearheaded that project. I rewrote a portion of our database-intensive rule checking engine to efficiently calculate degrees of compliance for the objective function. I designed an architecture using AWS Batch for triggering and monitoring off-node Opt4J scheduling jobs from within our user-facing Tomcat application.
Dealer.com provided customer-facing websites and other services to automotive dealerships. On the Analytics team, I helped maintain a suite of projects related to website analytics. I wrote Java-based ETL processes, Spring web services, Hadoop mappers and reducers, customer-specific reports, and data visualizations for our dashboard.
I also monitored the data pipeline of an analytics solution built for a business partner from a clone of our own infrastructure and code. When we decided to transition ownership to the business partner, I consulted in duplicating the infrastructure and setting up the applications.
They were a good company; but seeking technical challenges more interesting to me than data pipelines and a mission more inspirational to me than selling cars, I left Dealer.com in 2014.
Working at a very small consultancy meant touching all parts of the software development lifecycle. I met with stakeholders to gather and understand requirements. I designed and built user interfaces, and the relational database schemas that backed them. I gave live demonstrations on-site, bringing feedback into the next development cycle.
I mostly worked for a client in the financial sector, building out an Eclipse-based platform with an Oracle backend. I learned I loved teamwork, close collaboration, and thinking up innovative solutions. But then Dealer.com acquired Pragmatic Technologies in 2011.
My favorite innovation was introducing three-value logic into our fund compliance checker so it could sometimes successfully evaluate user-defined predicates over the properties of a fund’s securities, even when some of the properties were unknown.
Education isn't just about skills. It's about learning new ways to think about problems and about the world. It's about taking the time to dive deeper into interesting questions than is often wise in a corporate setting where time and attention are money, and they mostly need to support pragmatic efforts. I'm thankful to my parents for supporting my curiousity about computer programming when I was young, and for supporting me as an undergraduate. I'm also thankful for my recent employers for supporting my return to school.
While still working as a full time software engineer, I enrolled as a Master's student, taking one class at a time. I joined the PhD program full time in January 2023. I continue working towards publishing original research and completing my degree.
I enrolled as a computer science major, looking forward to a career in software engineering. When a professor showed me the value of a strong mathematical background for understanding the deeper ideas of computer science, I added a math major.
I stayed in Plymouth the semester after graduation and taught an introductory computers course.