λ

I’m Graham Greenfield, a full-stack developer specializing in Python, Go, C, JavaScript, Java and Clojure, as well as a hobbyist game developer. In this blog, I share my experiences, challenges and journeys. For those interested, my résumé is publicly available.

Recovering Hidden PDF Attachments from the Epstein Document Release

Following a challenge posed by Mahmoud Al-Qudsi, I set out to build an automated pipeline for recovering base64-encoded email attachments buried inside the DoJ’s Epstein document release. Here’s what I found. The Problem When the Department of Justice released thousands of documents related to Jeffrey Epstein, they made a peculiar choice: rather than preserving email attachments digitally, they printed the raw email source — including base64-encoded binary attachments — and then scanned those printouts as JPEG images embedded in PDFs....

February 5, 2026

Tools to Enhance Your Workflow with AI Models

In the evolving landscape of AI-assisted development, effectively managing and presenting code context to large language models (LLMs) like ChatGPT and Claude is crucial. Several command-line interface (CLI) tools have been developed to streamline this process, enabling developers to consolidate their codebases into single prompts for more efficient AI interactions. Below is a curated list of notable CLI tools designed to assist in this endeavor: code2prompt (March 17, 2024) A CLI tool that converts your codebase into a single LLM prompt, featuring source tree visualization, prompt templating, and token counting....

January 26, 2025