Skip to content

Creating a Neutral Prison Programming Environment for Inmates

5 min read

I share how I tackled religious bias in prison programming, built a lightweight moderation tool, and used cost estimation to budget the infrastructure.

Cover image for "Creating a Neutral Prison Programming Environment for Inmates"

When I first started teaching prison programming classes, I quickly realized that the curriculum was being filtered through a heavily religious lens. The inmates were eager to code, but the prevailing tone made it hard to discuss anything that didn’t align with that worldview. I decided to build a small, language‑agnostic framework that kept the focus on technical skills while staying neutral. In this post I’ll walk through the cultural audit, the curriculum redesign, a quick moderation script, and how I budgeted the whole effort without guessing.

Why this matters: If you’re setting up any educational tech program in a constrained environment, the cultural contract you inherit can shape participation and learning outcomes more than the syllabus itself.

#Mapping the cultural landscape of prison programming

Before writing a single line of code, I spent a week listening to the existing instructors and students. Their concerns fell into three buckets:

  1. Religious framing – lessons were prefaced with verses that weren’t relevant to the code.
  2. Resource scarcity – old hardware, intermittent power, and no internet.
  3. Security policies – strict monitoring of network traffic and file access.

Understanding these constraints helped me define a neutral set of learning objectives that emphasized problem‑solving over ideology. I documented the objectives in a simple markdown file so anyone could audit them later.

#Designing a curriculum that stays neutral

I stripped out any religious references and replaced them with universally applicable analogies (e.g., “building a bridge” instead of “building a sanctuary”). The revised outline looks like this:

  1. Fundamentals of programming logic
  2. Version control basics with Git
  3. Building command‑line tools
  4. Simple web servers with Python/Node
  5. Debugging and testing strategies

Each module includes a short “why it matters” paragraph that focuses on real‑world impact rather than moral messaging. The goal is to keep the content technical, inclusive, and repeatable.

Tip: When you rewrite existing material, keep a side‑by‑side diff so you can prove the changes are purely technical. This also helps auditors verify that no hidden agenda slipped in.

#Building a lightweight content‑moderation tool

Even with a neutral curriculum, discussions can drift back into religious territory. To keep conversations on track, I wrote a tiny Python script that scans chat logs for a configurable list of keywords and flags them for review. The script runs locally on the prison’s isolated server, so there’s no external data leakage.

import re
from pathlib import Path

# Load prohibited words from a text file, one per line
PROHIBITED = {line.strip().lower() for line in Path("blocked_words.txt").read_text().splitlines()}

def is_flagged(message: str) -> bool:
    # Simple word boundary check, case‑insensitive
    words = re.findall(r"\b\w+\b", message.lower())
    return any(word in PROHIBITED for word in words)

# Example usage
if __name__ == "__main__":
    sample = "Let's discuss the algorithm for sorting arrays."
    print("Flagged:" if is_flagged(sample) else "Clean")

On line 5, the regular expression \b\w+\b ensures we only match whole words, reducing false positives. You can extend this script with a JSON‑based rule set to handle phrase matching or severity levels.

#Integrating the script with existing chat tools

Most of the prison’s communication runs through a self‑hosted IRC‑like interface. I added a hook that calls is_flagged for each incoming message and writes flagged entries to a log file that the instructors can review after class. The integration required only a few lines:

def on_message(user, text):
    if is_flagged(text):
        log_flagged(user, text)
    else:
        broadcast(user, text)

Warning: Never automatically delete messages; always let a human decide what to do. Automated removal can lead to accusations of censorship.

#Budgeting the infrastructure: why cost estimation matters

Running a small server farm inside a correctional facility isn’t cheap. I needed to know how much hardware, power, and maintenance the program would consume before I could convince the administration to allocate funds. That’s where a reliable cost estimation tool came in handy.

Tip: I used Estimate Website Cost to generate a quick, AI‑powered breakdown of server specs, electricity usage, and licensing fees. The output gave me a concrete number to present to the budget committee, turning a vague “we need resources” request into a solid proposal.

The estimate helped me:

  • Choose a refurbished Intel NUC that met the CPU requirements for compiling Java and Python.
  • Calculate the monthly electricity cost based on a 150 W draw, yielding roughly $30 per month.
  • Identify free, open‑source alternatives for Git hosting and CI, eliminating licensing fees.

With those numbers in hand, the prison approved a modest $2,200 cap, enough to cover the hardware and a year of power.

#Lessons learned and next steps

  • Start with a cultural audit. Skipping this step leads to hidden bias that can derail technical goals.
  • Keep moderation simple. Over‑engineering filters creates maintenance headaches; a keyword list works surprisingly well for low‑traffic environments.
  • Quantify everything. A clear cost estimate turns abstract ideas into actionable budgets, especially in bureaucratic settings.

By the end of the semester, the inmates completed a mini‑project building a text‑based adventure game—no religious references, just pure code. The success showed that when you strip away unnecessary framing and focus on the craft, even the most constrained classrooms can produce solid developers.

If you’re planning a similar initiative, remember that the biggest hurdle is often not the technology but the surrounding narrative. Align your curriculum with universal problem‑solving principles, add a thin moderation layer, and back it all with a solid cost estimate. The result is a sustainable, inclusive learning environment that lets the code speak for itself.

Related posts

  • Link to article
    5 min read

    How Reduced Staffing Forces Teams to Rethink Software Development

    Explore strategies for handling reduced staffing in software projects, from automation to budget planning, and keep delivery on track.

  • Link to article
    5 min read

    Sharing My Weekly Win: From Code Fix to Social Highlight

    I walk through how I captured a small coding win, turned it into a shareable weekly win post, and used a lightweight analytics tool to spread the story across socials.