Three stacked blue boxes with binary digits on them
Bit flipping laboratory & Personal website
No sneaky cookies haunt these pages, but whether someone tracks you I do not know. Information flows through many channels, and every action leaves a trace.

Hello, world...

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.

Professional experience

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.

University of Vermont
Burlington, VT
Graduate Research & Teaching Assistant
2023 to 2025

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 Software
Burlington, VT
Sr. Software Engineer
2020 to 2023

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
South Burlington, VT
Sr. Software Engineer
2019 to 2020

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.

OpenTempo
South Burlington, VT
Sr. Software Engineer, BI Architect
2014 to 2019

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
Burlington, VT
Jr. Software Engineer
2011 to 2014

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.

Pragmatic Technologies
Burlington, VT
Software Consultant
2007 to 2011

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.

Educational experience

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.

University of Vermont
Burlington, VT
PhD Computer Science
2020 to 2025

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.

Programming Languages
Fall 2020
Syntax, operational semantics, formal semantics. Big / small step reduction. Type systems, safety guarantee, progress, preservation.
Computer Security Foundations
Spring 2021
Mathematical foundations of computer security. Confidentiality, integrity, availability. Access controls. Information flow theory.
Information Theory
Fall 2021
Shannon entropy. Message compression techniques. Noisy channels. Error detection and recovery techniques. Principal component analysis.
Data Lab
Spring 2022
Data ownership and collection ethics. Time series data. Network visualization. Code organization. Managing large datasets.
Machine Learning
Fall 2022
Linear / logistic regression. Neural networks. Support vector machines. Random forests. Ensemble models. Clustering. Dimensionality reduction.
Computer Architecture
Spring 2023
Virtual memory. Instruction set architectures. Parallelism through pipelining. Caches and cache coherence. Graphical processing units.
Usable Privacy and Security
Spring 2023
Human factors in privacy, security, and usability failures. Human centered research methods. Review of case studies.
Cryptography
Spring 2023
History of cryptography. Number theory. Complexity theory. Quantum computing. Lattice based crpytography. Learning with errors.
Advanced Data Privacy
Fall 2023
De-identification, re-identification. Differential privacy. Privacy budget and composition. Sensitivity. Clipping. Synthetic data. Privacy in deep learning.
Secure Distributed Computation
Fall 2023
Secret shares. Adversarial views. Simulator proofs. Garbled circuits. Zero knowledge proofs. Partially and fully homomorphic encryption.
Abstract Algebra I
Fall 2023
Groups, rings, fields, homomorphisms, isomorphisms.
Proof Assistants
Spring 2024
Coq programs, tactics, and proofs. Curry-Howard correspondence. Proofs as objects. Modeling program execution in Coq.
Advacnced Algorithm Design
Fall 2024
Complexity analysis. Graph algorithms. Greedy algorithms. Divide and conquer. Dynamic programming. Network flow. Computational intractability.
Deep Learning
Fall 2024
History of deep learning. Convolutional neural networks. Natural language processing. Attention mechanism. Reinforcement learning.
Adversarial Machine Learning
Spring 2025
Membership inference. Adversarial examples. Differential privacy. Adversaries in federated settings. Image reconstruction from gradients.
Plymouth State University
Plymouth, NH
BS Computer Science & BS Mathematics
2000 to 2004

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.

Statistics I
Fall 2000
Biases in data gathering. Random sampling. Probability distributions. Statistical significance. Population and sample tests.
Thinking Intelligently
Fall 2000
First order logic. Formal and informal fallacies. Biased language. Lying by omission. Vagueness and ambiguity. Argument maps.
Calculus I
Spring 2001
Calculating limits. Central Limit Theorem. Derivatives of common functions. Visualization and problem solving using Mathematica.
Computer Hardware
Fall 2001
Digital logic. Labs with integrated circuits. Modeling digital circuits in software.
Client / Server Programming
Fall 2001
Socket communication using Java. Serverside and clientside architectures. Synchronization of state between clients.
Discrete Mathematics
Fall 2001
Boolean expressions. Factorials, combinations, permutations. Combinatoric counting techniques. Proof by induction.
Data Structures / Algorithm Analysis
Spring 2002
Temporal and spacial complexity. Lists, trees, and graphs. Hash functions and hash-based data structures. Huffman trees.
Calculus II
Spring 2002
Integration and integration techniques for common functions. Convergence and divergence of infinite series. Taylor polynomials.
Linear Algebra
Spring 2002
Systems of equations as matrixes. Linear transformations. Determinants, inverses, eigenvalues, and eigenvectors. Working with Octave.
Statistics II
Spring 2002
Hypothesis testing in two variables. Contingency tables. Chi-square tests, ANOVA tests. Multiple, linear, and logistic regression.
Computational Theory
Fall 2002
Regular, context free, and context sensitive languages. Finite state automata, uncomputable problems, and Turing machines.
Logic, Proofs, and Axiomatic Systems
Fall 2002
First order logic. Proofs by construction, contradiction, and induction. Sets, relations, functions, cardinal numbers.
University Physics I
Fall 2002
Position, velocity, acceleration. Newton's laws of motion. Rotation, forces, gravity, springs, momentum, torque.
Organization of Programming Languages
Spring 2003
Tokenization and parsing. Implementing a simple interpreted imperative language in Java with conditionals, loops, and function calls.
Multivariable Calculus
Spring 2003
Functions of multiple variables. Differentiation, integration, saddle points, and gradient vectors. Working with Mathematica.
Probability Theory
Spring 2003
Multivariable calculus applied to working with probability distributions. Discrete and continuous distributions. Cumulative probability.
Database Management Systems
Fall 2003
Relational databases in practice and theory. Referential integrity, hierarchy of normal forms, access management.
Software Engineering
Fall 2003
Design patterns. Software specification. Collaboration in a software development setting. Java client / server application at scale.
Computer Graphics
Spring 2004
Raster graphics and image compression. Matrix operations for 3-dimensional modeling. Working with GLUT in C.
Operating Systems
Spring 2004
UNIX as a case study. Memory allocation, process management, filesystems, and permissioning. Files as abstractions.
History of Mathematics
Spring 2004
Earliest number systems. Greek geometry. Quadratic equation and imaginary numbers. Alan Turing and John von Neumann.
Advanced Mathematical Problem Solving
Spring 2004
Application of multivariable calculus to probability theory. Focus on practical actuarial problems for exam readiness.

Steven Baldasty
Proud father, Barefoot runner, Chocolate enthusiast, Seasoned software engineer, Starry eyed PhD student, Novice human
Handsome brown haired man with glasses