I got my master's degree in mathematical sciences at Portland State University, studying graph theory, algebra, game theory, and quantum information. Lately I've been reading up on symmetric monoidal categories, operads, sheaves, and linear logic. I'm looking for ways to apply these and other topics to problems in areas such as:

I'm available for work in software development or mathematical research, as well as speaking engagements or workshop sessions. Contact me at tom (at) mathpunk.net.


There is a copious amount of structured and unstructured data on servers belonging to corporations, governments, and citizens. I'm interested in finding ways to optimize the transformation of noisy data into useful information, and to mitigate the social harm done when data is misused. Related topics: machine learning, data science, artificial intelligence, linear algebra, information theory, tropical geometry.


More data means more to process, and more noise. I'm interested in finding ways to use resource logic to balance the competing resources of storage, processing time, compute power, and electricity, to maximize information gain within the constraints of scarcity — including scarce attention. Related topics: linear logic, graph theory, tropical geometry, cumulative computing, sheaf theory, matrix representations, persistent homology, optimization.


We're living among many interacting complex systems, each of which is made of many interacting complex systems. It's hard enough to understand the system represented by your phone, much less the global industrial and intellectual enterprises that got it assembled, programmed, and delivered to your pocket, and the surrounding infrastructure that powers and connects it. I'm interested in tools for decomposing very complex things into simpler pieces, such as how software is broken into modules, and how user goals are broken into workflows and mental representations of a system's state. I draw a lot of diagrams. Related topics: information visualization, virtual reality, t-SNE, operads, symmetric monoidal categories, string diagrams, ribbon diagrams, wiring diagrams, Feynman diagrams.


Computers are where the abstract logic of language meets the concrete physics of chemistry and electricity. Data science and data engineering pose interesting problems in cleaning, transmitting, processing, and summarizing large amounts of data. User experience design and human-computer interaction pose different problems, in managing and representing complex system states to people who are just trying to get things done.

As for industrial practice, I recently went through an apprenticeship in software craftsmanship, where I learned about methods for managing risk in software development, and tools and practices around iterative design and collaboration.

Related topics: formal languages, functional programming, object-oriented programming, test-driven development, xtreme programming, data science, data engineering, complex systems.