Family portrait with Pikes Peak in the background

Biographical Sketch

I studied computer science at Furman University as a James Buchanan Duke Scholar and received the Computer Science Faculty Award for my performance in the major. While working with Professor Christopher Healy on static timing analysis, I discovered my interest in academic research and developed initial expertise with empirical evaluation. Consequently, I completed my PhD at the University of Virginia under the direction of Professor Alfred C. Weaver. My doctoral research focused on keyword search in relational databases. Major contributions of my work include an empirical evaluation of existing techniques, which demonstrated major scalability issues with current approaches, and novel ranking methods to improve search effectiveness. Prior to graduating, I received a Graduate Student Award for Research and a Graduate Student Award for Education and Service.

After completing my PhD, I joined the Johns Hopkins University Applied Physics Laboratory (JHU/APL) as a member of the Senior Professional Staff where I participated in a variety of sponsored and internally-funded research and development projects. As an individual contributor, I typically provided software engineering expertise and experience with empirical evaluation to address scalability issues and to improve the dependability of research prototypes. From 2013–2016, I served as the technical lead for a 10-person team contributing security features to OpenStack, including encryption for persistent volumes and ephemeral storage; the integrity of virtual machine (VM) images; and PyKMIP, a Python implementation of the key management interoperability protocol (KMIP). In 2016, I became co-Principal Investigator (co-PI) of Proteus, a multi-year study in the effectiveness of software diversity to eliminate the reuse of software exploits, thereby inverting the economics of cybersecurity against cyber attacks.

Beyond technical contributions, I served in a variety of other roles at JHU/APL. As the (acting) Chief Engineer for the Enterprise Systems Group, I led the review of technical deliverables for 60+ staff members. As the Assistant Program Manager for the Computer Science, Cybersecurity, and Information Systems Engineering programs as part of Engineering for Professionals (EP), Hopkins’s part-time graduate program, I supported the program chair and program manager with the day-to-day operation of the programs that served nearly 2000 students pursuing advanced degrees.

Starting in 2014, I also taught part-time in the Whiting School of Engineering, teaching graduate-level courses in software engineering and cloud computing security. These courses primarily built on my experiences contributing security features to OpenStack, an open source cloud computing platform. In 2015, I received a New Faculty Teaching Award for my face-to-face software engineering course.

After several years teaching part-time, I decided to pursue an academic position where I could focus on teaching. I joined the faculty at the United States Air Force Academy in the Department of Computer and Cyber Sciences in 2018. The department offers accredited degrees in computer science and cyber science, offering a unique opportunity to bring my educational background and professional experience into the classroom. I currently teach introductory computer science and cybersecurity, software engineering, and databases.

Favorites

Authors and Books

Bodie and Brock Thoene
The Zion Covenant, The Twilight of Courage, The Zion Chronicles, and The Zion Legacy
C.S. Lewis
The Chronicles of Narnia
The Bible
Matthew, Philippians, James, and I Peter
Alfred Lansing
Endurance: Shackleton’s Incredible Voyage
Howard Dayton
Your Money Counts
Dave Barry
Year in Review

Quotes

I believe that in the end the truth will conquer. ~ John Wycliffe

Truth is incontrovertible. Panic may resent it; ignorance may deride it; malice may distort it; but there it is. ~ Winston Churchill

In truth, people can generally make time for what they choose to do; it is not really the time but the will that is lacking. ~ John Lubbock

What information consumes is rather obvious: it consumes the attention of its recipients. Hence a wealth of information creates a poverty of attention, and a need to allocate that attention efficiently among the overabundance of information sources that might consume it. ~ Herbert Simon

Never tell people how to do things. Tell them what to do and they will surprise you with their ingenuity. ~ George S. Patton, Jr.

Never mistake activity for achievement. ~ John Wooden

The irony of the Information Age is that it has given new respectability to uninformed opinion. ~ John Lawton

[…] if you work hard and creatively, you can have just about anything you want, but not everything you want. Maturity is the ability to reject good alternatives in order to pursue even better ones. ~ Ray Dalio, Principles: Life and Work (2017)

The function of education, therefore, is to teach one to think intensively and to think critically. … Intelligence plus character – that is the goal of true education. ~ Martin Luther King Jr.

Financial

Abundance, it turns out, is the enemy of appreciation. ~ Elizabeth Dunn and Michael Norton, Happy Money: The Science of Happier Spending (2013)

So much dissatisfaction comes from focusing on what we don’t have that the simple exercise of acknowledging and valuing what we do have can transform our outlook. Indeed, some people would say that once we’re above the survival level, the difference between prosperity and poverty lies simply in our degree of gratitude. ~ Vicki Robin and Joe Dominguez, Your Money or Your Life: 9 Steps to Transforming Your Relationship with Money and Achieving Financial Independence

Two things I ask of you, O LORD […]:
Keep falsehood and lies far from me;
give me neither poverty nor riches, but give me only my daily bread.
Otherwise, I may have too much and disown you and say "Who is the LORD?"
Or I may become poor and steal, and so dishonor the name of my God.
~ Proverbs 30:7–9

If I pray and weep for freedom from the tyranny of kings, how can I accept the yoke of bein’ owned by things? That is another tyranny sure, but slavery of my soul, just the same. Do I belong to my possessions? I ask myself sometimes. If I can’t give them up […], then I am not a free man. ~ Bodie and Brock Thoene, Of Men and Angels

People above the line of base subsistence, in this age and all earlier ages, do not use the surplus, which society has given them, primarily for useful purposes. They do not seek to expand their own lives, to live more wisely, intelligently, understandingly, but to impress other people with the fact that they have a surplus […] spending money, time and effort quite uselessly in the pleasurable business of inflating the ego. ~ Stuart Chase, forward to the The Theory of the Leisure Class: An Economic Study of Institutions (1934)

Software Engineering

Perfection lies in small things, but perfection is no small thing. ~ Henry Royce

Things that are complex are not useful. Things that are useful are simple. ~ Mikhail Kalashnikov

There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies. ~ Charles Antony Richard (C.A.R.) Hoare, “The Emperor’s Old Clothes,” 1980 Turing Award Lecture

Besides a mathematical inclination, an exceptionally good mastery of one’s native tongue is the most vital asset of a competent programmer. ~ Edsger W. Dijkstra, Selected Writings on Computing: A Personal Perspective, “How Do We Tell Truths that Might Hurt?

The most dangerous enemy of a better solution is an existing codebase that is just good enough. ~ Eric Steven Raymond, The Art of Unix Programming, Plan 9: The Way the Future Was

If the poor workman hates his tools, the good workman hates poor tools. […] Working with defective or poorly designed tools, even the finest craftsman is reduced to producing inferior work, and thereby reduced to being an inferior craftsman. No craftsman, if he aspires to the highest work of his profession, will accept such tools; and no employer, if he appreciates the quality of work, will ask a craftsman to accept them. ~ Gerald M. Weinberg, The Psychology of Computer Programming

The beginning of wisdom for a programmer is to recognize the difference between getting his program to work and getting it right. A program which does not work is undoubtedly wrong; but a program which does work is not necessarily right. It may still be wrong because it is hard to understand; or because it is hard to maintain as program requirements change; or because its structure is different from the structure of the problem; or because we cannot be sure that it does indeed work. ~ Michael Jackson, Principles of Program Design

Research

Most advances in science come not from eureka moments but from “hmmm, that’s funny.” ~ Irv Biederman (Lewis, The Undoing Project: A Friendship That Changed Our Minds, 2016)

[…] when you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot […] your knowledge is of a meager and unsatisfactory kind […]. ~ William Thomson (Lord Kelvin)

Always keep one hand firmly on data. ~ Amos Tversky

Nothing so sharpens the thought process as writing down one’s arguments. Weaknesses overlooked in oral discussion become painfully obvious on the written page. ~ Hyman G. Rickover

The secret to doing good research is always to be a little underemployed. You waste years by not being able to waste hours. ~ Amos Tversky