Zackary Crosley
Software Engineer
See my work
I am a backend software engineer with a passion for writing code, the outdoors, and coffee.
I got my start writing code in 2010 with a high school robotics team, and have been fascinated
by it ever since. Software is not just a powerful and flexible tool in the modern world, but
a way to think about problems. Finding problems, understanding them, and solving them is what
being an engineer is all about. If you have any challenging problems, I would love to hear from you!
Education
Master's of Science
Computer Science
Arizona State University
Aug 2019
Bachelor's of Science
Computer Science
Arizona State University
Dec 2017
Organizations
I have a wide variety of academic and work interests, and have run the gamut of
computer science subfields. I have a deep interest in computer security and the
methods for protecting users data. I greatly enjoy the process of analyzing
programs from an attackers view and finding creative solution to find and patch
vulnerabilities. Ultimately my interest in Computer Science is a philosophical
one of how to think through problems and answer tough questions.
Resume
Please visit my resume github
respository.
Experience
Software Engineering
It is not enough to simply write code, but to deliver working code to the user. This
requires CI/CD, containerization, microservices, performance monitoring, testing, and more.
My
experience with Censys has given me a large amount of experience in these areas. I have
constructed
data pipelines to ingest web data, transform that data into risks and vulnerabilities, and
deliver
that data to the user via a web portal and APIs. I have built gRPC microservices to support
individual features of the Censys product. I have defined containers for each of these
microservices
and the associated Kubernetes charts. I have configured services with OpenTelemetry for
observability
and alerting. Learning how to write code that is easy to read, performant, and secure is a
continual
learning process, and I am always looking for ways to improve my capabilities.
Computer Security
In graduate school, I worked with the
Security Engineering
for Future Computing (SEFCOM) lab for my thesis and significant coursework. In
classes led by
SEFCOM faculty, I learned the techniques for binary, web, and network security. This
included techniques
like Buffer Overflows, Format String exploits, Loop Overflows (Off-by-One exploits), Return
Oriented
Programming, Spoofing (ARP, IP, TCP), Cross Site Scripting, and SQL Injection. These
techniques were employed
with the Capture the Flag (CTF) team the pwndevils. Pwndevils was established by Shellphish
alumni and worked
closely with the team, frequently attending DEFCOM CTF events with them. My research project
for my thesis
was the application of inductive programming techniques to exploit generation, which enabled
the learning of
basic expoits from examples in a CTF environment. This research is ongoing and pending
future publication.
My role with Censys was development of tools like
Platform advantages
Exposure Management to
enable users to
identify vulnerabilities in their internet facing devices. Using internet wide scan data, we
identified
exposures and possible vulnerabilities and displayed them to the user via a web portal and
APIs.
Artificial Intelligence
I took multiple courses in artificial intelligence techniques, including heuristic searches,
classifiers, clustering, and reinforcement learning. My graduate work included the
mathematical
foundations for algorithms like SVM, Naive Bayes, Logistic Regression, Locality Sensitive
Hashing,
and Markov Decision Processes. My employment with the Navy involved the development of
genetic
algorithms to optimize aircraft Tactics, Techniques, and Procedures (TTPs). In my career
with the
Army, I developed a navigation system which generated a graph data structure from the
terrain to
enable intelligent path identification via heuristic searches, like A* and Djikstra, and
optimization
techniques like Ant Colony Optimization. I have also developed an architecture for
Utility-driven
AI which is used to define adaptive behaviors. The methodology for my thesis research,
inductive
programming, is an AI technique that uses Directed Acyclic Graph (DAG) intersections to
learn
from examples.
Scientific Computing
My career with the Department of Defense was in the field of Computational Sciences,
specifically Combat Modeling. My first job with the Navy involved development of a
deterministic, closed-form simulation used to evaluate aircraft Tactics, Techniques,
and Procedures (TTPs). This simulation mutated Subject Matter Expert (SME) encoded
strategies across a variety of scenarios to evaluate effectiveness of alternative TTPs.
Our work involved not only algorithm development but the maintenance of the two hundred
node, Windows Server cluster computer on which they were run. My work included performing
updates and developing utilities for job submission and server maintenance. My role at the
Army involved working a closed-form, Monte Carlo, discrete event combat simulator used for
analysis of acquisition decisions. I have worked on defining automated and intelligent
behaviors for entities within the simulation as well as extending the simulation to model
new functionalities.
Functional Programming
Since learning functional programming, I employ its techniques with growing regularity
as a useful methodology for solving data transformation driven problems. Clojure is the
most functional programming language I have used, but I reguarly apply the functional
programming features of languages like Python and Java to create simpler solutions. The
navigation suite I developed for the Army is mostly functional, with a Graph object that
merely manages basic state information and all other methods being written independent of
the object. This has the extra benefit of enabling these methods to be repurposed by other
developers, who have used the resulting library for various projects. As part of my
functional paradigm exploration, I studied Okasaki's foundational paper Purely Functional
Data Structures, and utilize his techniques regularly to improve my code (lazy evaluation,
memoization, and immutability).
Publications
Languages
Go
Used at Censys to develop microservices and recent personal projects. Knowledgeable
of language mechanics and common tools for service development; including cloud
libraries, database management, API development, testing, and telemetry tracking.
Python
Primary language I used in college and Navy career. Deep familiarity with
core libraries and language features. I also have experience with Numpy,
Scipy, Pandas, Pwntools, Scapy, Tkinter, MatPlotLib, and Pillow.
C / C++
First programming language used in previous jobs and in college. Familiarity with
pointers, the manual allocation of memory, garbage collection, and the C standard
library. Experience with OpenMP and Qt.
Julia
Used for personal projects. Huge fan of the type system and multi-dispatch. My
only complaint with this language is eager evaluation by default. If it was lazy
by default, it would be my new default language.
Clojure
Used for personal projects and college course project. This language was how I
learned functional programming and the advantages of homoiconicity with real macros.
I would love to use Clojure more, but it is a fairly niche language.
Java
Used in past job and in past college courses. Familiarity with features of the
language and core libraries. Experience with Maven, Log4j, JUnit, and Neo4j.
C#
Used for personal projects and college courses. Worked with members of Boy Scouts of
America to produce a registration system. Familiar with Entity framework and ASP.NET.
Rock Climbing
Rock climbing is a recent passion of mine, but one I have dedicated significant time to recently. I
enjoy both the problem solving aspect - how do you move your body to progress upwards - as well as
the strength and coordination it requires. I have learned to lead climb and am looking forward to
climbing more outdoor routes in the future.
Hiking & Backpacking
Since my time in Boy Scouts I have been an avid hiker. Backpacking was never as much of a passion of
mine, but my interest in returning to it grew during pandemic lockdown. My partner, our dog, and I
have begun backpacking again with a goal of completing a rim to rim trip of the Grand Canyon and Mt.
Whitney.
Cooking
Cooking began as a necessity, not an interest. In college my roommate and I were living
on our own, and had to feed ourselves. Since money was tight, eating out regularly was
not an option. We began teaching ourselves how to cook, and became quite good as college
progressed. I now cook both to eat healthy and to enjoy foods that I love, with recent
recipes including Pad Thai, Falafel, Turkey with Red Chili Sauce, and Sous Vide Filet Minon,
to name a few. I have also become quite good recently with my Latte machine.
Weightlifting
Weightlifting is a necessary training to gain and maintain the strength I need for other
activities, like rock climbing. Beyond that my regular visits to the gym organize my day
and motivate me. My current weightlifting goal is to build strength, increasing the
weight for compound lifts to help improve my rock climbing.
Philosophy
I have a keen interest in philosophy, especially the practical philosophies of the Hellenistic
period. While philosophy is often portrayed as armchair theorizing, and some certainly
is, others ask important questions about how we should live our lives and make
difficult decisions. I am particularly interested in the Roman Stoic philosophers, whose
virtue ethics emphasized the identification of what is within our control and was the basis
for Cognitive Behavioral Therapy.