One Framework, and a Bad Theory About Money
Age 11, taught Drupal and left to it

People assume I was handed this. I was not. My father runs Bright Plum, a Drupal and PHP web shop, and he did not want me going into tech. Not a prohibition and not hostility; he was not going to stop me, and he would provide what I needed. What I got was an environment, not an education. A real codebase, a real client, and a real deployment existed within arm's reach at an age when most self-taught kids have only tutorials, and that mattered enormously. But the teaching was one framework, in late 2018, and nothing else directly after it.
The commit log agrees. Across all 86 repositories in my history my father appears in exactly two, both of them client work: my aunt's art portfolio, which he stopped wanting to maintain and I have now kept running for seven years, and my grandfather's law practice, which I scaffolded in a single week so he could run it himself. He still edits it. Handing the keys to a non-technical owner who can actually operate the thing is a harder deliverable than most professional handoffs, and I shipped it at fourteen.
The names came first, and they tracked who I thought I was. MathyCrafter at seven (from accidentally setting my Minecraft username to an old email password), GamerTeach at nine when I started teaching friends about the games I played, then GamerCoder215 at eleven. Gamer to teacher to coder, in three handles, before I had shipped anything real.
The Honest Origin
"I got into coding because I thought I was smart enough to market and grow a Discord Server that would somehow become profitable."
That belief built my first Discord bots in 2019, the year I made a GitHub account and the work became real. It was the wrong theory about money and the right theory about me. My early projects sit under the Bright Plum org because I decided they would get more reach there and worked out the transfer myself, which is a twelve-year-old doing distribution strategy with the only brand available to him. Every domain since has been one I bought with my own money: gamercoder215.me, teaminceptus.us for the studio I ran at thirteen, then gmitch215.xyz, .dev, .blog, and .fun. The engine of the whole thing was an eleven-year-old convinced he could turn a hobby into a business, and stubborn enough to keep going when it turned out to be a lot harder than that.
The Minecraft Awakening
First package, first plugin, first five stars
This is where the record truly begins, and where a pattern gets set that never breaks: I learn by building real, published software, in public, at a pace that embarrasses adults. In March 2021 I pushed nodejs-notebook to npm, my first published package. It reached version 1.2.2, so it saw real iteration, not a one-and-done upload.
Then Minecraft. Within two weeks that April I shipped MoreSurvival, a Bukkit survival plugin, and minecraft.js, a low-dependency API wrapper I wrote like a real library rather than a script, at thirteen. QuantumPen, a packet-level world editor, became my first published plugin on SpigotMC.
The Moment It Clicked
"I got my first 5-star review, and moved forward."
The code was exactly what you would expect from a self-taught thirteen-year-old: single-module Maven builds, copy-pasted boilerplate, a getter or two that returned the wrong field, and commits literally titled "replit updates" because I was building in a browser IDE. It worked. It had zero tests and zero documentation. It was a beginning, and I knew it.
The Craftsman Emerges
Gradle, a 25-version abstraction, and real users

The gap between 2021 me and 2022 me is the largest single-year leap in the record. In one year I went from a kid pasting getters to a developer running open-source projects like an adult, and my commit count went up fivefold. Three things happened at once.
I learned real build engineering. My Maven plugins migrated to multi-module Gradle Kotlin DSL, and Novaconomy grew a 25-version NMS abstraction layer: reflection-based adapters for every Minecraft server release from 1.8 to 1.20. Minecraft's internals are obfuscated and change every version; abstracting across 25 of them is the kind of thing that defeats professional plugin developers.
Then I shipped my best work. MobChip, an Entity AI Library for SpigotMC, wraps Minecraft's native mob-AI internals behind a clean, fully documented public API across 17 versioned adapters. It has 35 test files, CI, a Discord community, and a real Maven repository other developers depended on. At 88 stars it is still my most successful project by a wide margin, and after I stopped maintaining it another developer took it over, which is about the highest compliment an open-source library can get.
Then came the Big 4: Novaconomy, StarCosmetics, PlasmaEnchants, and BattleCards, alongside MobChip the library. By the end of the year a fourteen-year-old was maintaining multiple published libraries, with tests, CI, and versioned releases, that real strangers used. That is not a normal hobby. It is an apprenticeship completing itself.
Building Tools That Build Tools
And GamerCoder becomes gmitch215

Two things defined 2023. First, I stopped building only applications and started building tools that build applications, a taste most engineers never develop and almost no teenagers reach. InceptusNMS is my own documentation-generation engine: a Kotlin parser that reads JSON schema files and produces a JDK-Javadoc-style browsable website, with its own schema validator and template generator. A tool to document other tools.
Alongside it, KotlinMC automated my own distribution: an hourly GitHub Actions job that polls JetBrains for new releases, auto-bumps a Gradle plugin, and auto-publishes to Modrinth. I was fifteen, and I was already building the pipeline instead of running it by hand.
Second, GamerCoder became Gregory Mitchell, then gmitch215. My git display name flipped to my real name across every active repo that summer; the handle followed soon after.
Why I Rebranded
"I was getting older and needed to be more professional. I wanted a name that reflected my identity as a developer, not just a gamer."
The new name is just g plus mitch plus 215, a number I picked at eleven and am refreshingly honest about not caring much about. A teenager building a professional identity, deliberately, ahead of the rest of my life.
Ten Languages, Five Registries
Range, proved in a single artifact

2024 opened with the most advanced thing I ever built in Minecraft, then pivoted hard toward range. SocketMC pairs a server plugin with a client mod over a socket protocol, bridging the two halves of Minecraft development that normally cannot talk to each other. It was the technical capstone of my Minecraft years, and a direct ancestor of edgeport: both are fundamentally about making two machines talk over a socket.
Then I proved multi-language fluency in one artifact. benchmarks is a harness that compiles and runs the same algorithms across C, C++, Go, Java, JavaScript, Kotlin, Kotlin/Native, PHP, Ruby, Rust, and Zig, times them, and plots the results. You cannot fake that; it requires writing correct, idiomatic, comparably-optimized code in ten languages at once.
Published to the Grown-Up Registries
kasciffy and TabroomAPI to Maven Central. TabroomAPI to npm. gitle to the Gradle Plugin Portal. I built gitle specifically so I would not have to keep paying for a hosted repository just to consume my own unpublished libraries.
I also founded Calculus Games, an indie studio, and designed LevelZ, a human-readable file format for game levels backed with parsers in six languages, an IntelliJ plugin, a VSCode extension, and a CLI. That is more completeness than most formats get from an entire company. By the end of the year I had shipped libraries in three package ecosystems and written production code in ten languages. I was sixteen.
Other People's Repositories
Patches upstream, and a support desk I never signed up for
The easy story about a teenager with a lot of commits is that he worked alone. Mine does not hold up to the record. Across four Minecraft years I shipped 29 pull requests into 19 organizations I do not own and filed 91 issues into roughly 45 upstream projects, the first one merged when I was twelve. Some of it is real infrastructure: a SHA-1 bug in raylib that broke on messages longer than 31 bytes, JetBrains Runtime support in GitHub's own setup-java action, Linux ARM added to Doxygen's CI.
It ran the other direction too, and that part is less glamorous and more convincing. Strangers filed 69 issues on my projects and I answered them; 19 of 22 outside pull requests got reviewed and merged. MobChip alone took 13 patches from other people at a 100% merge rate, and I credited every contributor by name in the release notes, every time. One of them, datatags, spent two years pushing code into it. When I stopped maintaining it he forked it as MobChipLite and is still shipping it in 2026, two years after my last commit. Code I wrote at fourteen outlived my interest in it because somebody else had been made an owner of it.
I also lost, in public, repeatedly. Five Paper maintainers overruled me at once when I asked them to restore a method MobChip depended on; I conceded the technical point, wrote the reflection workaround, and shipped. The longer one is the one I would put on a resume if resumes had room. Over nine months in 2023, at fifteen, I took an idea my peers had already rejected, refined it anyway, submitted it as an API change to Bukkit itself, took review from three maintainers including the project lead, threw out my own design and rebuilt it on the API he pointed at, and then found out the objection was architectural rather than cosmetic.
How It Ended, in My Own Words
"It seems this approach is unpopular. I've decided to decline this PR and maybe make a new one overall in the future, perhaps with better implementation."
I withdrew my own patch rather than push something the maintainers did not want. That is the whole open-source loop, and I ran every stage of it before I could drive. One thing governs how all of this should be read: every line of it is pre-AI. I joined SpigotMC in March 2021 and wrote my last Minecraft code in June 2024, so the libraries, the version abstraction, the packet work, the upstream patches, and the arguments all predate the agentic tooling I picked up in 2026. It is the cleanest sample of what I produce unassisted, and it is 4,345 commits across eighteen repositories. The platform got the last word, and I mean it: without SpigotMC I would not be the programmer I am, and it got me into Dartmouth.
Pointing My Superpower at the Thing That Hurts
cmdfx, teaching, and the mission

Three storylines converge in 2025, and this is the year the mission gets discovered and decided. The first is cmdfx, a game engine for the terminal written from scratch in C, begun in January 2025, before Claude Code existed. CMake build, sanitizer harnesses, a hand-rolled assertion library, Doxygen docs, a Homebrew formula, and installers for Windows, macOS, and Linux. It is my control sample: a large body of hand-written, low-level, manually-memory-managed C that I can prove is mine, because the AI that could have written it did not yet exist.
The second is a job. That summer, at sixteen, I taught Java to seventh through ninth graders in downtown Chicago, an hour from home, writing my own curriculum and delivering the lessons myself. The nine-year-old who called himself GamerTeach grew up and actually taught, and it is not a coincidence that this is the same person who wants to study psychology.
The third is The Earth App. In May 2025 I founded the org and began the most ambitious thing I had attempted: a social platform to fight loneliness and the mental-health crisis, built as a five-language microservices architecture. The backend started as a hand-written TypeScript service on Hono and was simply too slow paired with CollegeDB, the sharding router I had pulled out of it. Facing a re-platform, I took my father's recommendation and went to Drupal. That is the only piece of technical advice from him anywhere in this story, accepted on its merits after a measured failure, and it is the seed that eventually grew into Drupflare. I submitted the app to the 2025 Congressional App Challenge in Illinois' 2nd District, and won.
This is where it crystallizes. I am easily drained, and more than anything I want to feel included; in 2025 I decided to point my one real superpower at the thing that hurts. From here on the code has a purpose that is not about code.
The Ceiling Breaks
Building the layer beneath AI

For four years my curve sat on a plateau near 2,000 commits a year, roughly the ceiling of what a fast human can hand-type while also going to school. In 2026 the ceiling broke: 4,810 commits in not quite eight months, more than 2024 and 2025 put together, because the constraint stopped being my hands. crust took 235 commits in a month. smoke took 113 in a single day. That cadence is not typing. It is directing agents.
And I spent the velocity building infrastructure for the AI era itself. edgeport is a from-scratch TCP library for Cloudflare Workers, with clients for SSH, SFTP, SMTP, IMAP, POP3, NATS, MQTT, STOMP, FTP, LDAP, and Syslog, tested against real Dockerized servers, because the platform advertised the capability and no maintained library wrapped it. It went up in a documented burst of 104 commits in one day, and it is the actual email library that smoke, my self-hostable support desk, imports. MyLoRA fine-tunes LoRA adapters on my own home RTX 4070 over an SSH tunnel, driven from a Cloudflare Workers UI. MyMCP turns any OpenAPI spec into a Model Context Protocol server.
The Single Most Important Pattern
I do not consume AI tooling, I build the layer beneath it. Every one of these was born from a wall I hit in a real project, and my reflex was to build and publish the missing primitive.
The way I use it is the tell: you can outsource the typing, but you cannot outsource the understanding. The architecture stays mine; only the keystrokes are shared. This was also the year I closed the old chapters for real. I graduated in June, got into Dartmouth, and archived every repository in Calculus Games, Team Inceptus, and LevelZ-File, along with MobChip itself, the 88-star library that was my best-known work.
The One Thing I Was Taught, Rebuilt
Drupal 11 and PHP 8.5, compiled to WebAssembly
On August 9 I started a feasibility spike in a scratch directory to answer one question: can Drupal 11 run on Cloudflare Workers? Eleven days later it is a nine-repository organization, 694 commits, and a working answer. Drupal 11, with PHP 8.5 compiled to WebAssembly, executing inside a Durable Object, using that object's own SQLite as the database. No VPS, no container, no origin server.
What makes it a real result instead of a stunt is the wall I hit on day two. workerd forbids WebAssembly codegen at request time but permits it during module evaluation, and every published php-wasm build in existence is a dynamic-linking build whose linker synthesizes trampolines at runtime. So extensions can never load, so Drupal's required dom, xml, SimpleXML, mbstring and gd are simply unavailable. A statically linked interpreter was not an optimization; it was a precondition. So I built one, and that is phasm.
Then I made it fit. The free plan allows a 3,145,728-byte compressed worker; the interpreter travels as a zstd frame inflated at module scope, and the shipping bundle measures 2,904,125 bytes, 241,603 under the ceiling, with no extensions dropped to get there. A cached page costs 1 ms of Durable Object CPU, a full uncached render 34 ms against 9.47 ms for native PHP, and cold boot is 1,398 ms. When it breaks at 3am there is a self-repair ladder, observe through rollback, behind 19 tripwires.
The Rule That Came Out of It
An absolute CPU figure comes only from cpuTime in wrangler tail on a deployed worker. In-PHP microtime() returns 0 on the edge, and Date.now() inside the isolate once reported 114 ms for a 1,374 ms invocation. Zero is obviously broken; 114 survives review. I reversed four free-tier verdicts in eleven days, and three of the four were the instrument being wrong, not the system.
Seven of the nine repositories stand on their own, including durabledb, which exists only because Durable Object SQLite's real limits are undocumented: 100 bound parameters where local PDO allows 32,766, a 50-byte ceiling on a LIKE pattern, and lossy integer reads above 2^53. Each broke something real before it got written down.
Drupal is the one thing I was actually taught: late 2018, in my father's shop, and nothing else directly after it. It came back at seventeen as his single recommendation, when my TypeScript backend proved too slow. Then at eighteen I took that one tool and did something with it that nobody in that shop asked for or advised on. Every architectural decision here is mine - my father has no commit in any of the nine repositories, and none anywhere in The Earth App. What I was given was one framework and one suggestion.
Build Software So People Feel Less Alone
CS and Psychology at Dartmouth, aimed at the problem

This is the payoff, and it stopped being a prototype. The Earth App is live in the app stores at v1.0.3, settled into four surfaces that each do one job: a Drupal 11 API for durable state, a Cloudflare Worker for the edge, a Nuxt web app, and a native iOS and Android app. 732 test files across the services that carry a suite. CollegeDB, my second-most-starred project at 30 stars, was extracted straight out of it and published to npm.
Then I compiled the whole mission down into one small app. recess says "Go Outside." A few prompts a day, filtered by clock, season, weather, and what you have already done. No server. No account. No competition. No social graph. An on-device CLIP model, sentence embedder, and Whisper check the nudges; nothing is uploaded, ever. The points buy nothing, because there is nothing to buy. I grew up inside engagement mechanics; I built the opposite on purpose.
I also went back to teaching for a second summer, and almost none of my plan survived. Java was too slow, so I pivoted to web design, then CodeCombat, then an Intro to AI unit. Half the class finished the final project, and half of those were pasted out of ChatGPT. I am presenting that unsoftened, because the failure mode is the research question.
What Two Summers Taught Me
"Developers have a problem-solving mindset; it becomes difficult for us to recognize when it shouldn't be us who solve the problem."
My interest in mental health is not academic. I am that same self-aware, easily-drained, wants-to-be-included kid, deciding to point my one real superpower at the thing that hurts. That is why I am pairing Computer Science with Psychology at Dartmouth, aimed at the problem rather than at a job title. I call myself the world's okayest developer. It is a good joke, and it is wrong. You only really need one or two languages to be successful; I learned ten because I had a reason to. It shows in every commit.
