In 2012 I left a position as an Assistant Professor in Mathematics
at the University of Colorado giving in to a longstanding interest
in information technology. Since then I have been working as a
software engineer and data scientist, developing into the tech lead
of the team that has been developing the realtime streaming engine
at KPN. I am interested in a position with a great team solving
challenging practical problems.
Technologies
I have used all standard platforms (Windows, OS X, and Linux) for
extended periods of time; for the last years I have mostly been on
OS X. I have used different development environments
(e.g. Microsoft Visual Studio, Intellij, Eclipse, RStudio, and
vim/emacs with different plugins) for extended periods of time; for
the last years I have been using mostly the Intellij, RStudio, and
Emacs environments.
I have developed using many different languages. Quite a few
languages for small projects, for instance MIX (the language Knuth
uses in The art of computer programming) in which I implemented
Thompson NFA for regular expressions, i86 assembler for some data
structures, and ML for some theorem proving. For website
development html, css, php, and javascript. C++, Python and java
for learning these languages a bit and playing with different
technologies. C++ with SQL and web languages while I was at CoachR.
Lots of Clojure (using Cascalog for Hadoop jobs) and R at Adgoji,
doing analysis of big data (near a TB a day to permanent storage and
many thousands of events a second). And currently Scala for flink
jobs, java for our custom components, and python and bash scripting
for management of the cluster.
Positions
Apr 2020–current: Software Engineer, Digital Engine Platform, KPN, Amsterdam.
 General goal: help digital engine teams.
 This was a direct continuation of the security position. From the security team I
was working with the Platform team.
Jan 2019–Apr 2020: Security Engineer, Technium Security Team, KPN, Amsterdam.
 General goal: help teams within Technium improve their security.
 This is my first job formally in the security field; hence there will be
a large learning component.
Oct 2015–Jan 2019: Data Scientist, KPN, Amsterdam.
 General goal: Architecture and implementation of the realtime
streaming engine, and help build a team to accompplish this,
 Note: even though my official job title was data scientist, I
was operating as the tech lead of the engineering team,
 plan the basic architecture of the streaming engine, and where
the engine fits in with the general digital architecture.
 ensure compliance with privacy and security policies, and
working together with the privacy and security officers.
 building basic flink jobs for streaming event handling.
 making architecture choices to ensure maintainability of the
platform.
Feb 2014–Sep 2015: Sr. Data Scientist, AdGoji, Amsterdam.
 General goal: Analyse the data flowing through our system to improve targeting and
system health,
 improved the storage infrastructure for improved query speed and accuracy (querying
using cascalog, storing on S3 using pail and thrift),
 create an offline environment for approximate model testing (extract the data in
the right form from our data storage, and run different scenarios in R).
Feb 2013 – Feb 2014: Data Scientist, AdGoji, Amsterdam.
 General goal: Analyse the data flowing through our system to improve targeting and
system health,
 research and implement (in clojure using cascalog) different clustering
algorithms,
 research and implement (in clojure and R) different data modeling and
prediction algorithms.
May 2012 – Jan 2013: Software Developer, CoachR Development, Dodewaard.
 Functional design (in close cooperation with the customers describe the functional behavior of the software),
 technical design (setting up the global design of the software to have the
structure in place for building it),
 programming the backend in C++ using the internally developed framework, MySQL and SQLite,
 improvements to the framework,
 frontend implementation with javascript.
 I also helped with further professionalization of the organization
helping with company culture and application security.
Jun 2009– Jun 2012: Assistant Professor, University of
Colorado, Boulder.
 Research in mathematical logic,
 teaching (e.g., undergraduate and graduate logic classes (model theory
and computability theory), undergraduate algebra and introduction to
proofs),
 coorganise the BLAST 2010 conference (BLAST: Boolean Algebras, Lattices,
Algebraic Logic, Quantum Logic, Universal Algebra, Set Theory, Settheoretic
Topology and Pointfree Topology),
 coorganise a logic seminar joint with neighboring universities,
 department administration, e.g. member of several committees including the
Graduate Committee.
Sept 2006– May 2009: Van Vleck Visiting Assistant
Professor, University of Wisconsin, Madison.
 Research in mathematical logic,
 teaching (e.g., undergraduate and graduate logic classes (set theory
and computability theory), undergraduate linear algebra, introduction to
proofs, and calculus (a large lecture with 270 students and a group of
graduate students to do recitation sections)).
Jan 2006 – May 2006: Graduate Student Instructor, University of
Michigan, Ann Arbor.
 Research in mathematical logic (finishing and defending my thesis),
 teaching (precalculus, and calculus at different levels).
2005: Visiting Scholar, Sun YatSen University,
Guangzhou, China.
 Research in mathematical logic,
 teaching (one undergraduate and one graduate set theory class).
Aug 2000 – Dec 2004: Graduate Student Instructor,
University of Michigan, Ann Arbor.
 Research in mathematical logic,
 teaching (precalculus, and calculus at different levels).
Education
2000–2006: University of Michigan, Mathematics, PhD.
1999: Mathematical Research Institute, Master Class in
Mathematical Logic (with honors).
1995–2000: Vrije Universiteit Amsterdam, Mathematics,
MSc (with honors).
Publications

My Thesis: Cofinitary Groups and Other Almost Disjoint Families
(written under supervision of Andreas Blass and Yi Zhang)
pdf file
abstract
Abstract:
We study two different types of (maximal) almost disjoint
families: very mad families and (maximal) cofinitary groups. For
the very mad families we prove the basic existence results. We
prove that MA implies there exist many pairwise orthogonal
families, and that CH implies that for any very mad family there
is one orthogonal to it. Finally we prove that the axiom of
constructibility implies that there exists a coanalytic very mad
family.
Cofinitary groups have a natural action on the natural
numbers. We prove that a maximal cofinitary group cannot have
infinitely many orbits under this action, but can have any
combination of any finite number of finite orbits and any finite
(but nonzero) number of infinite orbits.
We also prove that there exists a maximal cofinitary group into
which each countable group embeds. This gives an example of a
maximal cofinitary group that is not a free group. We start the
investigation into which groups have cofinitary actions. The
main result there is that it is consistent that the direct sum
of ℵ_{1} many copies of Z_{2} has a
cofinitary action.
Concerning the complexity of maximal cofinitary groups we prove
that they cannot be K_{σ}, but that the axiom of
constructibility implies that there exists a coanalytic maximal
cofinitary group. We prove that the least cardinality
a_{g} of a maximal cofinitary group can consistently be
less than the cofinality of the symmetric group.
Finally we prove that a_{g} can consistently be bigger
than all cardinals in Cichon's diagram.

Cardinal Invariants Related to Permutation Groups, with Yi Zhang
(Ann. Pure Appl. Logic 143 (2006), pp. 139146)
pdf file
abstract
Abstract:
We consider the possible cardinalities of the following three
cardinal invariants which are related to the permutation group
on the set of natural numbers:
a_{g} := the least cardinal number of maximal cofinitary
permutation groups;
a_{p} := the least cardinal number of maximal almost disjoint
permutation families;
c(Sym(N)) := the cofinality of the permutation group
on the set of natural numbers.
We show that it is consistent with ZFC that a_{p} =
a_{g} < c(Sym(N)) = 2; in fact we show that in the
Miller model a_{p} = a_{g} = ℵ_{1}
< ℵ_{2}= c(Sym(N)).

Very Mad Families (published in Contemporary Mathematics 425, Advances in
Logic, The North Texas Logic Conference, October 810, 2004,
University of North Texas, Denton, Texas, edited by Su Gao, Steve
Jackson, and Yi Zhang, pp. 105112)
pdf file
abstract
Abstract:
The notion of very mad family is a strengthening of the notion
of mad family of functions. Here we show existence of very mad
families in different contexts.

Analytic and Coanalytic Families of Almost Disjoint Functions,
with Juris Steprans and Yi Zhang (JSL, Vol. 73 (2008), no. 4,
pp. 11581172)
pdf file
abstract
Abstract:
If F Ì N^{N} is an
analytic family of pairwise eventually different functions then
the following strong maximality condition fails: For any
countable H Ì N^{N}, no
member of which is covered by finitely many functions from F,
there is f Î F such that for all
h Î H there are infinitely many
integers k such that f(k) = h(k). However if V = L then there
exists a coanalytic family of pairwise eventually different
functions satisfying this strong maximality condition.

The Complexity of Maximal Cofinitary Groups (Proceedings AMS, Vol. 137
(2009), no. 1, pp. 307316)
pdf file
abstract
Abstract:
A cofinitary group is a subgroup of the infinite symmetric group
in which each element of the subgroup has at most finitely many
fixed points. A maximal cofinitary group is a cofinitary group
that is maximal with respect to inclusion. We investigate the
possible complexities of maximal cofinitary groups, in
particular we show that (1) under the axiom of constructibility
there exists a coanalytic maximal cofinitary group, and (2)
there does not exist an eventually bounded maximal cofinitary
group. We also suggest some further directions for
investigation.

Comparing Notions of Randomness, with Steffen Lempp.
(Theoretical Computer Science, Vol. 411 (2010), no. 3, pp. 602616)
pdf file
abstract
Abstract:
It is an open problem in the area of effective (algorithmic)
randomness whether KolmogorovLoveland randomness coincides with
MartinLöf randomness. Joe Miller and André Nies
suggested some variations of KolmogorovLoveland randomness to
approach this problem and to provide a partial solution. We show
that their proposed notion of injective randomness is still
weaker than MartinLöf randomness. Since in its proof some
of the ideas we use are clearer, we also show the weaker theorem
that permutation randomness is weaker than MartinLöf
randomness.

Stability and Posets, with Carl G. Jockusch, Jr., Steffen Lempp,
Manuel Lerman, and Reed Solomon (JSL, 74 (2009), no. 2, pp
693711)
pdf file
abstract
Abstract:
Hirschfeldt and Shore have introduced a notion of stability for
infinite posets. We define an arguably more natural notion
called weak stability, and we study the existence of infinite
computable or low chains or antichains, and of infinite
Π^{0}_{1}chains and antichains, in infinite
computable stable and weakly stable posets. For example, we
extend a result of Hirschfeldt and Shore to show that every
infinite computable weakly stable poset contains either an
infinite low chain or an infinite computable antichain. Our
hardest result is that there is an infinite computable weakly
stable poset with no infinite
Π^{0}_{1}chains or antichains. On the other
hand, it is easily seen that every infinite computable stable
poset contains an infinite computable chain or an infinite
Π^{0}_{1}antichain. In Reverse Mathematics,
we show that SCAC, the principle that every infinite stable
poset contains an infinite chain or antichain, is equivalent
over RCA_{0} to WSCAC, the corresponding principle for
weakly stable posets.

On Computable SelfEmbeddings of Computable Linear Orderings, with
Rodney G. Downey, and Steffen Lempp (JSL, Volume 74, Issue 4
(2009), pp. 13521366)
pdf file
abstract
Abstract:
We make progress toward solving a longstanding open problem in
the area of computable linear orderings by showing that every
computable ηlike linear ordering without an infinite
strongly ηlike interval has a computable copy without
nontrivial computable selfembedding.
The precise characterization of those computable linear
orderings which have computable copies without nontrivial
computable selfembedding remains open.

Isomorphism Types of Maximal Cofinitary Groups (BSL, September
2009, Volume 15, pp. 300319)
pdf file
abstract
Abstract:
A cofinitary group is a subgroup of Sym(N) where all
nonidentity elements have finitely many fixed points. A maximal
cofinitary group is a cofinitary group, maximal with respect to
inclusion. We show that a maximal cofinitary group cannot have
infinitely many orbits. We also show, using Martin's Axiom,
that no further restrictions on the number of orbits can be
obtained. We show that Martin's Axiom implies there exist
locally finite maximal cofinitary groups. Finally we show that
there exists a uniformly computable sequence of permutations
generating a cofinitary group whose isomorphism type is not
computable.

An Example of a Cofinitary Group in Isabelle/HOL (In: G. Klein,
T. Nipkow, and L. Paulson (ed), The Archive of Formal Proofs,
http://afp.sourceforge.net/entries/CofGroups.shtml,
August 2009, Formal proof development)
pdf file
abstract
Abstract:
We formalize the usual proof that the group generated by the
function k ↦ k+1 on the integers gives rise to a
cofinitary group.

On Cofinitary Groups, with Yi Zhang
(Kazan. Gos. Univ. Uchen. Zap. Ser. Fiz.Mat. Nauki, 2012, Volume
154, Book 2, Pages 159–166)
pdf file
abstract
Abstract:
A cofinitary group is a subgroup of the symmetric group on the
natural numbers in which all nonidentity members have finitely
many fixed points. In this note we describe some questions
about these groups that interest us; questions on related
cardinal invariants and isomorphism types.