about

Hello! I'm Caleb Greene, a high school senior at Moravian Academy, with an unwavering passion for cybersecurity and programming. Ever since I first got my hands on a computer, I've been fascinated by its complexities and behind-the-scenes operations. I wanted to learn how people could communicate with computers, manipulating them to carry out any specific task they asked for. I was also intrigued by how computers can be used not only to create things, but also to destroy things they themselves created. This duality between creation and destruction is what drew me to the field of cybersecurity.

My journey began in middle school, where I taught myself Python online before entering high school, allowing me to test out of Programming I and complete Programming II during my freshman year. I continued to hone and develop my skills throughout high school, keeping myself on track to complete every computer science course my school offered. Additionally, I continued to learn independently outside of school, competing in both local and international cybersecurity competitions and developing a research paper. As of now, in my senior year of high school, I am proud of all my published projects, competition placements, and research I have done thus far. Please check out my exhibits page to learn about my competitions and projects!

Aside from technology, I also have a strong passion for music and sports. I play the drums, piano, and bass guitar, with the drums being my main instrument. As of now, I actively play in my school's jazz band and wind ensemble. Jazz is by far the genre I'm most passionate about; outside of school, I've played the drums in countless fun jam sessions and some paid gigs, both with many different musicians from all across Pennsylvania. I have also had the honor of being selected to tour with a jazz band playing in 6 different countries in Europe. This was an amazing experience for me, both musically and culturally, allowing me to experience entirely different cultures and explore a wide variety of amazing cuisines. Regarding sports, in my Freshman and sophomore years, I played for my school's Varsity basketball team, transitioning to play Varsity Volleyball my Junior and now Senior year. Along with playing Varsity Volleyball in school, I picked up club volleyball alongside it, allowing me to connect with many more people in the volleyball community. I have made many new friends and connections through sports and developed valuable teamwork and team-building skills during my time playing.

skills

Image showing captured ICMP Echo Requests from a Raspberry Pi to my local machine using the packet analyzer Wireshark. (local machine's firewall blocked ICMP Echo Replies)

Languages & Core

Python Java Go Rust HTML5 Markdown Pytest SQL

Cybersecurity & Penetration Testing

Linux Fedora Linux Kali Linux Wireshark VirtualBox BurpSuite

Tools & Platforms

Git GitHub Raspberry Pi Bash Script LaTeX

exhibits

Independent Research DOI


I conducted independent research quantifying the degradation of human decision-making under time pressure through chess. By combining Claude Shannon's Theory of Information with chess engine evaluations of 22,500 chess games, I was able to study how people of various skill levels perform under different amounts of time allocated. Please click here to learn more!

ISC2 NJ Chapter: Capture the Flag for Novices 2025


A cybersecurity competition in which I competed as one of the few high school students, facing off against competitors from various colleges in New Jersey and the surrounding areas. My team solved all 57 challenges across all categories, with the categories being: OSINT, Forensics, Cryptography, Steganography, and Web Exploitation. My team placed 4th out of 27 teams, and I ranked 7th out of approximately 97 competitors, serving as my team’s top scorer.

RSAnalyze


Designed a lightweight GUI app to teach and explore RSA cryptography using Python, letting users calculate RSA keys and factor them using Pollard’s Rho integer factorization algorithm, displaying the factors along with the computation time and number of iterations.

CMU Africa picoMini CTF Write-up


Authored technical write-ups for the CMU Africa picoMini CTF competition, including challenge setups, custom Python scripts, and Linux commands, used across Web Exploitation, Binary Exploitation, Cryptography, and Forensics.

Check out my GitHub for my full project portfolio!

Quantifying the Degradation of Human Decision-Making Under Time Pressure Through the Self-Information of Chess

DOI Read the full paper here!

Abstract

Though it is well established that time pressure has detrimental effects on human cognition, its relative effects across different levels of competency remain largely unquantified. To address this gap, we extend Claude Shannon's work in information theory to the game of chess. To quantify the quality of human decision-making in a chess game, we calculate the probability of all legal moves in a given position from engine evaluations using a softmax function. Then, we sum the Shannon information of each played move in a single game to obtain the game's total surprisal. By applying this framework to a large dataset of $22,500$ chess games from the lichess.org Open Database, our results show that time pressure does not affect individuals of different skill levels uniformly. Highly skilled players effectively utilize additional time to improve decision quality, decreasing surprisal, whereas less skilled players exhibit poor baseline decision quality, high surprisal, which does not improve with additional time. These findings highlight the importance of distinguishing between skill-based and time-based limiting factors in any cognitive performance-based context, such as timed test-taking.

PGN Database Extractor

Engineered an optimized PGN database extractor in Go to parse a 29.9GB database containing 91,549,148 chess games, sorting them into separate CSV files based on time control and skill group, while filtering games by ply (game length) and Elo difference.

Chess Surprisal

Developed a Python program to calculate the surprisal of 22,500 chess games using a custom softmax function to create probability distributions of all legal chess moves in each position from Stockfish 17.1 (Linux x64, AVX2) chess engine evaluations, finally implementing Claude Shannon’s theory of information to quantify move surprisal in bits.

Mathematical Framework

$$p_i=\frac{e^{E_i/\Delta_0}}{\sum_{x\in L}e^{E_x/\Delta_0}}$$

A softmax function calculates the probability of a move from a set of all legal moves $L$ in a position, where $E_i$ is the evaluation $E$ of the played move, and $E_x$ is the evaluation $E$ of the move $x$ in the set $L$.

$$C = \sum_{i=1}^{n} -\log_2(p_i)$$

The total surprisal $C$ of a game can be expressed as the summation of the self-information of each move, where the upper limit $n$ represents the total number of plies in the game, such that:

$$\bar{C}_\text{per move} = \frac{1}{N} \sum_{i=1}^{N} \frac{C_i}{n_i}$$

To calculate the average surprisal $\bar{C}$ per move across all games in a given time control, let $N$ represent the total number of games, $C_i$ represent the total information of game $i$, and $n_i$ represent the total number of plies in game $i$. The average surprisal per move is then:

Citation

Greene, C. J. (2026). Quantifying the Degradation of Human Decision-Making Under Time Pressure Through the Self-Information of Chess. Zenodo. https://doi.org/10.5281/zenodo.18664813

Creative Commons License Creative Commons Attribution 4.0 International License

Elements

Text

This is bold and this is strong. This is italic and this is emphasized. This is superscript text and this is subscript text. This is underlined and this is code: for (;;) { ... }. Finally, this is a link.


Heading Level 2

Heading Level 3

Heading Level 4

Heading Level 5
Heading Level 6

Blockquote

Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan faucibus. Vestibulum ante ipsum primis in faucibus lorem ipsum dolor sit amet nullam adipiscing eu felis.

Preformatted

i = 0;

while (!deck.isInOrder()) {
    print 'Iteration ' + i;
    deck.shuffle();
    i++;
}

print 'It took ' + i + ' iterations to sort the deck.';

Lists

Unordered

  • Dolor pulvinar etiam.
  • Sagittis adipiscing.
  • Felis enim feugiat.

Alternate

  • Dolor pulvinar etiam.
  • Sagittis adipiscing.
  • Felis enim feugiat.

Ordered

  1. Dolor pulvinar etiam.
  2. Etiam vel felis viverra.
  3. Felis enim feugiat.
  4. Dolor pulvinar etiam.
  5. Etiam vel felis lorem.
  6. Felis enim et feugiat.

Icons

Actions

Table

Default

Name Description Price
Item One Ante turpis integer aliquet porttitor. 29.99
Item Two Vis ac commodo adipiscing arcu aliquet. 19.99
Item Three Morbi faucibus arcu accumsan lorem. 29.99
Item Four Vitae integer tempus condimentum. 19.99
Item Five Ante turpis integer aliquet porttitor. 29.99
100.00

Alternate

Name Description Price
Item One Ante turpis integer aliquet porttitor. 29.99
Item Two Vis ac commodo adipiscing arcu aliquet. 19.99
Item Three Morbi faucibus arcu accumsan lorem. 29.99
Item Four Vitae integer tempus condimentum. 19.99
Item Five Ante turpis integer aliquet porttitor. 29.99
100.00

Buttons

  • Disabled
  • Disabled

Form