Jacob Dennerlein is a Mathematics Ph.D. whose research is at the intersection of computational algebra and cryptography.
He is currently a software developer at Citi and a tinkerer in his spare time.
Experience
Programmer / Tech Lead
Citi
Tampa, FL
2023 - Present
Core Technologies
Java 17+, Spring, SQL, Python, Django, Kubernetes/OpenShift, Docker, AutoSys
Patterns
Microservice-based Architectural Design, Object-Oriented Programming, Spring Boot API, Test-Driven Development, Agile Programming
Awards
Tech Wall of Fame - Jul 2024, Gold & Silver Achievement Award
I have been a programmer and/or tech lead on various automation, modernization, security, regulatory, and performance initiatives within an internal document-management system at Citi. When not in the tech lead role, I have become the go-to engineer for diagnosing and resolving obscure problems in our software due to deep system knowledge.
Led a team of three developers to migrate a regulatory flow from the legacy version of a product to its new backend. This including parsing requirements, distributing work among the team and myself, coordinating with the frontend team to ensure smooth development, and configuring/monitoring the production release to ensure no downtime.
Developed and optimized software that reduced manual workload in onboarding new clients by over 90%, while still ensuring that risk-level of these client’s portfolio remained within Citi’s risk tolerance.
Developed a proof-of-concept replacement for a legacy vendor product within the company, demonstrating the viability of switching to more modern software at a reduced cost.
Added/improved automated testing and alerting to various services in order to ensure uptime. These efforts included generating a large integration test suite, configuring canary tests for early failure alerts, and creating a parallel testing pipeline in development and staging environments to analyze production changes before going live.
Led the effort to heavily reduce the number of microservices used in a project and delete portions of unused code. This effort drastically increased the maintainability and readability of the project. Our team was able to improve the reliability of the software so much that it requires almost no maintenance.
Led infrastructure modernization projects across the platform, including migrating legacy projects to Kubernetes/OpenShift and onboarding our various services to GitHub Enterprise and our new internal CI/CD platform.
Programming Consultant
Fefferman Lab
University of Tennessee, Knoxville
2021 - 2022
Core Technologies / Patterns
C++/R, Cache-friendly data structures, Graph-generation algorithms
I developed and optimized a library in C++ for performing fast computation with simplicial sets that was used in a research project within Dr. Nina Fefferman’s mathematical research lab. The work is yet to be published, and as such, the code is still closed-source.
Created a custom data structure in C++ that modeled simplicial sets.
Created an interface for this custom data structure with bindings in R for easier integration with the researcher’s already developed code.
Developed an algorithm for randomly generating large simplicial sets with specific target metrics. This was used to analyze commonalities across simplicial sets with similar metrics. These commonalities resulted in key insights during the research project that otherwise would have been difficult to find.
Math Research
Mathematics Department
University of Tennessee, Knoxville
2017 - 2023
Dissertation: Computational Aspects of Mixed-Characteristic Witt Vectors and Denominators in Canonical Liftings of Elliptic Curves
Advisor: Dr. Luís Finotti
My research was in computational algebra and cryptography, specifically mixed-characteristic Witt vectors and canonical liftings of elliptic curves. Many of the results in my dissertation were found using SageMath, an extension of Python that is widely used by math researchers, especially those researching computational algebra.
Discovered an isomorphism between finite-length $p$-Witt vectors over $\mathbb{Z}/p^\alpha\mathbb{Z}$ and a product of modular rings that enabled efficient computations within the ring of Witt vectors. See the paper below.
Created an extension adding Witt vectors as a native object in SageMath using techniques developed by Dr. Finotti, along with the aforementioned isomorphism. You can see my initial code here. The extensions has yet to be integrated into the main SageMath component, but work is still being done to get the pull request accepted.
Proved similar results to Dr. Finotti’s paper Weierstrass coefficients of the canonical lifting for $p=2,3$ and proved sufficient conditions for these liftings to have a particular structure. These results, some of which elude proof, drastically improve computations of the canonical lifting of elliptic curves, enabling new cryptographic algorithms to be developed that perform even better than the well-known Elliptic Curve cryptography.
Research
Computational Aspects of Mixed-Characteristic Witt Vectors
Paper — April 12, 2023
Abstract: The ring of $p$-Witt vectors is typically difficult to study computationally, as the sum and product polynomials grow exponentially in both the prime $p$ and the index $n$. However, some isomorphisms are known, e.g. $\mathbf{W}(\mathbb{F}_q)$ for $q = p^r$ is isomorphic the unique unramified extension of the $p$-adic integers of degree $r$. In this paper, we find an analogous result for $\mathbb{Z}/p^\alpha\mathbb{Z}$, including an explicit isomorphism that is computationally useful.
Computational Aspects of Mixed-Characteristic Witt Vectors and Denominators in Canonical Liftings of Elliptic Curves
Dissertation — April 3rd, 2023
Abstract: Given an ordinary elliptic curve $E$ over a field $k$ of characteristic $p$, there is an elliptic curve $\mathbf{E}$ over the Witt vectors $\mathbf{W}(k)$ for which we can lift the Frobenius morphism, called the canonical lifting of $E$. The Weierstrass coefficients and the elliptic Teichmüller lift of $E$ are given by rational functions over $\mathbb{F}_p$ that depend only on the coefficients and points of $E$. Finotti studied the properties of these rational functions over fields of characteristic $p \ge 5$. We investigate the same properties for fields of characteristic 2 and 3, make progress on some conjectures of Finotti, and introduce some conjectures of our own. We also investigate the structure of rings of Witt vectors over arbitrary commutative rings and give a computationally useful isomorphism for Witt vectors over $\mathbb{Z}/p^\alpha\mathbb{Z}$.
Abstract: In the late 19th century, Wilhelm Killing discovered a famous classification of the finite-dimensional complex simple Lie algebras. This result was later refined by Élie Cartan and is now referred to as Killing–Cartan classification. This result inspired many other algebraic classification results, and also manifested itself in classifications of seemingly unrelated structures. In this paper we begin an attempt to extend Killing–Cartan to encompass a certain family of ranked partially-ordered sets. We specifically focus on those posets whose structure may be described with a 2×2 integer matrix, and analyze the (in)finiteness of said posets.
Finiteness of Posets Structured by 2×2 Integer Matrices
Undergrad Thesis — April 2017
In my spare time, I like to do fun little side projects. I especially love challenge problems and, lately, tinkering with 50-year-old hardware. A small tasting can be found below for your enjoyment.
Witt Vectors in SageMath
Open-Source Contribution
An implementation of Witt vectors and their operations in SageMath. Includes optimizations from this paper by Dr. Finotti and original research of my own, which is summarized in this paper. The code is functional, but there are still tests and documentation to be written. At the time of writing, it has been forked and is on its way to be integrated with the main SageMath package.
Advent of Code
Programming Challenge
From adventofcode.com: "Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like." I completed all 50 problems in 2015, 2016, 2021, 2022, and 2024, along with a smattering of others. For 2022 and 2024, I wrote up my thoughts on all the problems, along with some cool animations (in some cases).
Toy Interpreter
Hobby Programming
I followed along with the first half of Crafting Interpreters to make this, including doing some of the "extra credit" to expand the language features. I always wanted to understand how the internals of a compiler worked, and Robery Nystrom's explanations were phenomenal. The compiler went from a black box to a clear box after I worked through this book. In fact, I think working through this improved my programming ability, as I now know what's going on under the hood when the compiler throws an error.