Geek Orthodox

Fr. Justin (Edward) Hewlett

Orthodox Christianity and geek subculture, hosted by Fr. Justin, an Orthodox priest and life-long book-, computer-, game-, sci-fi-, and fantasy-geek. geekorthodox.substack.com

  1. 3d ago

    It's the End of the World of Code as We Know It

    I’m going to do something a little bit different for this “final” World of Code podcast. Interspersed with the cleaned-up transcript below, I’m going to add some expanded thoughts and annotations using the “callout” block, like this: I’ll start by noting that I really do not feel that I’ve achieved what I set out to achieve with the World of Code podcast. My hope, at this point, is mainly that it has at least achieved some small part of what I was hoping for, and, in particular, I hope that those who don’t know much about the “world of code” will at least have gleaned a little understanding of how computer programming works (or worked—see my thoughts below about AI) and that some of the details and ideas that I’ve shared may have got us all thinking a bit more about how the invisible foundation of code upon which much of our modern world has been built has shaped and is shaping our society and, thereby, all of us as individuals. Hello, and welcome to Geek Orthodox. I’m Fr. Justin, geek from youth. This is the final — at least formally — the final episode of the World of Code arc of the Geek Orthodox podcast. All good things—and even all mediocre things—must come to an end.. It’s been almost two years, and I knew this was going to be a big topic, which is why I planned to devote an entire arc of the podcast to the issues it raised. I did not expect the subject to take over for two years, nor did I expect the subject itself to change so dramatically over that time. We’ve gone from what I described as the world of code in which we live and move and breathe and have our being — starting from the very beginnings, from my early engagement with BASIC — all the way through to AI. And as we’ve done so, AI has radically changed the whole landscape of the world of code. Starting last December, when AI finally got good at coding. Here’s my thoughts on how that happened… We’ve gotten somewhat technical along the way, and that was deliberate, because I wanted to look at the technical underpinnings of this world of code that we’ve created, which has become the foundation for most of the information exchange and economic activity of our modern society — and is being rolled out in all sorts of other aspects of life as well, right down to the humble light switch. And all the while, AI has been getting better and better. And, speaking of light-switches… Near the beginning of this arc — actually, even before I started the World of Code podcast — I was working on a personal project where I was taking my very favourite computer game, Stellar Empires, which I played as a kid on my TRS-80 Color Computer and which really inspired me to get into the world of code. I was trying to port it so I could build myself a little handheld version. I thought I would use AI to do it. That didn’t work. This was almost two years ago, and the AI simply wasn’t up to the task of porting from one obscure BASIC dialect to another almost-equally-obscure BASIC dialect. I documented this more than two years ago, actually, on my personal blog, which is shown in the video, the posts from which I’ve transferred to my Back to BASIC Substack, with the most relevant one here: Fast forward to now, almost two years later, and I’ve managed to get AI to port the original Stellar Empires from TRS-80 Color Computer BASIC to a multiplayer online web version — as faithful to the original as it can possibly be made, or as the AI can possibly make it. Right now I’m going to send a fleet using command number 6 from Capella to Mizar — I happen to know it’s called Mizar because I’ve played this game so many times — sending five ships, and by turn two, Mizar is part of my empire. It’s a great little game, and I’ve got it up on my personal website; I’ll put a link in the description of the video. Here’s the link (click the screenshot): And here’s my story of the game: The point is, AI has radically changed how we code, how code is generated. It hasn’t replaced code — and that’s actually one of the most important points I want to make here. It’s been said that English is the new programming language. That’s kind of sort of true, but not quite, because when we prompt AI to create an app for us — which we can now do with great ease — what the AI does is generate an application coded in one of the many intermediate computer languages we have created to make it possible for us to interact with computers. All of this infrastructure that we’ve been discussing is now being backgrounded by AI, but it’s still there. It’s still what our world of code runs on. As an example, check out my “rogues’ gallery” of entirely AI-created Rogue clones: This matters, because it’s a continuation of the overall trend we’ve seen throughout the history of computer science as we’ve extended computing into the world we live in. We started with pretty basic stuff: computers made of vacuum tubes — essentially large banks of light bulbs turning off and on. We moved from that to transistors, then to silicon chips with massively integrated circuits. As we miniaturized the hardware, we got more and more computational power to work with. As we got more power, the programs we needed to take advantage of it got more and more complicated. And as that happened, we had to abstract away from the basic hardware to what we call high-level programming languages — C, for example, or BASIC, which is what we’ve been looking at here. These high-level languages were designed to look something like English; if you go back to earlier episodes where we were actually building a BASIC application, you can see the if-then statements that look a little like sentences. We were abstracting away some of the complexity of the computer hardware behind something that resembled the English language we know and mostly love. Then as we got still more power and were able to build even more complicated programs, we added more layers: integrated development environments, software development kits, entire physics engines like Unity or Unreal Engine, where much of the coding is no longer done by the individual programmer but by other programmers in the background, allowing the new programmer to build on top of all those accumulated layers of complexity. So the pattern we see is: increasing hardware power leads to increasing complexity, which leads to the need to abstract away some of that complexity — first with machine code, then higher-level programming languages, then software development kits. And now we’re seeing the continuation of that same abstraction with AI. As we discussed in the last episode, AI is essentially a massive prediction engine — at least, AI as it’s currently in the news and currently revolutionizing our society. These large language models are basically mining language for patterns of meaning and functionality, some of which we didn’t even anticipate. For example, we didn’t necessarily set out to create a better translation tool, but because of all the language datasets AI was trained on, it became apparent that AI is actually quite good at translation — better in many ways than what we used to rely on, like Google Translate. When I went to Japan recently, I was able to get in touch with a Japanese friend in Osaka who speaks Osaka-ben, the local dialect, and I could ask the AI to translate not just into Japanese, but right into Osaka-ben. Which capabilities I reference and utilize in these two posts: So AI has moved us from “hey, it can almost generate a computer program that works” to a point where programming now consists, for many people, not so much of actual coding — though there are still plenty of people doing actual coding, and probably will be for some time — but of prompting the AI to create code that does what we want. And when it doesn’t work and there’s an error, all we need to do is feed that error back to the AI and say “this isn’t working, please fix it” — and it will. It’ll do really cool things, like recreate my favorite BASIC computer game as a multiplayer online game, which if anyone wants to play, I’m more than happy to set up. Anyone up for Stellar Empires? ehewlett.net/stellemp (Message me and, if I’m free, I’d love to play a game with you!) Since this is the last formal episode of the World of Code arc, I want to ask: what does this all mean? Is AI going to destroy the world of code? I don’t know. It’s early days; it’s a new technology. It has some potential for that — just watch the Terminator movies or The Matrix. But AI is also kind of dumb, in the sense that it’ll do exactly what we tell it to, much like computers have always done from the very beginning. If we tell it to do something unclearly — say, “solve this environmental problem” — and it concludes that the basic environmental problem is human beings and therefore we should just get rid of human beings, that could be bad. Is this actually going to happen? I don’t know, but the very real potential for this is one of the reasons I think it’s essential to ensure there’s always a “human in the loop”: Or it could go in the direction of something like atomic technology. We discovered, for better or for worse, how to split the atom. That led to a massive buildup of nuclear weapons, which are still out there in the background such that we could probably destroy most of civilization many times over if someone pushes the wrong button. But at the same time, we’ve somehow managed to avoid doing that for the last generation or two that we’ve had this technology. So it’s not impossible that with AI, we’ll actually manage to use it responsibly and wisely — or at least, maybe more accurately, semi-responsibly and somewhat wisely. It’s not impossible. We’ve done it before with every technology we’ve invented so far. Is this one goin

  2. Jan 17

    AI and the World of Code

    Hello and welcome to Geek Orthodox. I’m Father Justin, geek from my youth. AI has taken the world by storm. Whether we like it or not, it’s embedded in pretty much everything. My wife was just on the phone with an AI agent. This technology is being promoted, pushed, and distributed in all areas of our society. It comes from the world of code and is becoming an essential part of it. In fact, it’s part of the reason why I started this “World of Code” arc of my Geek Orthodox podcast. I want to try and explain in the simplest possible layman’s terms what this world of code is that we are immersed in, so that we can understand how it is affecting our lives in a better-informed way. However, undertaking to explain even the Large Language Model (LLM) version of AI is a massive task. Some of the introductory videos I’ve seen are three hours long, and I don’t want to get that deep. I’m not that much of an expert myself, but I do have a long-standing relationship with AI, thanks in part to the oldest AI chat-bot that took the world by storm back in the 1970s: Eliza. The Legacy of Eliza Eliza was a chat-bot written by Joseph Weizenbaum. It was the first chat-bot to “kind of, sort of” pass the Turing test—the informal test of whether a computer can fool a user into thinking it’s human. It shares a number of attributes with modern AI. It was originally written in a relatively obscure programming language called MAD-SLIP, but it was popularized in my favorite language, BASIC. Weizenbaum didn’t release the original MAD-SLIP code of ELIZA, but he did publish a paper documenting what the program did and how it worked, which inspired reconstructions in a number of different computer languages. BASIC was the universal language of the early computer revolution, and a BASIC implentation of Eliza was published in Creative Computing Magazine in 1977. My own first exposure to it was a version customized for my beloved TRS-80 Color Computer by my friend Bruce. I actually have some of the handwritten code he used to customize it, including sheets containing all the variables—something you had to do back when variables were limited to single or double letters. Most of the program consisted of “DATA” statements, which were essentially fragments of conversation. Eliza worked by taking your input, looking for keywords, and then rearranging the relevant portions of your input into a grammatically appropriate response which incorporated one of the conversation fragments which was most relevant to your most important keyword. It functioned best as a “Rogerian” psychologist—the kind of psychologist who asks questions to get the patient to provide more information. For example, if I said, “I have bad dreams,” Eliza might respond, “What does that dream suggest to you?” This illusion tricked many early users into thinking a real person was on the other end of the terminal. However, the illusion fell apart quickly. If you repeated yourself or challenged the bot, it would fall back on canned responses like, “We were discussing you, not me.” From Keywords to Transformers If Eliza was the height of AI back then, current versions are like Eliza on steroids. Well, that’s oversimplifying, of course, but we have to oversimplify something as complex as AI in order to understand. What modern LLM AIs are doing now is not simply looking for single keywords, but using conversation patterns to respond to combinations of keywords. The core of my understanding of AI comes from this wonderful video by Andrej Karpathy, who was one of the founders of OpenAI and also worked with AI for Tesla. He’s more recently famous for inventing the term “vibe coding,” which brings us back to the world of code. And in this video, which is now getting very old—it’s two years since it was posted—he builds a large language model (LLM) AI from scratch using Python. Python is, of course, the modern programming language that's fairly easy to use which we've touched on before in previous episodes of the World of Code. In this case, what he does is he creates what's called a transformer. The “GPT” in ChatGPT stands for Generative Pre-trained Transformer. You train it ahead of time on data with patterns, and the computer analyzes those patterns to generate new text that follows them. In this video, Karpathy builds a transformer that analyzes the works of Shakespeare character by character (i.e., letter-by-letter), which then is able, by statistically analyzing the relation of each letter to the characters that tend to follow it, to predictively generate Shakespearean sounding language, producing sentences like, “Verily, my lord. The sights have left thee again the king.” Like this, modern AI doesn’t just look for single keywords; it looks for relationships between common combinations of words. It “tokenizes” text, giving numerical representations to words, parts of words, and punctuation. To illustrate this, I’ve “vibe coded” with AI a tool that analyzes text patterns. If you feed it some “training text”—preferably something with a limited vocabulary that is somewhat repetitive, like the first chapter of Genesis in Basic English—it analyzes the relationship of each word to the next word and then to the third and fourth following words. It creates a statistical map of relationships between words and word-parts that allows it to function, much like a modern LLM AI, as a next-word predictor. So, if I type “God saw,” into my Genesis 1-trained mini-AI, the model predicts “that” as the next word with high likelihood (“God saw that”), and “everything” with a lower likelihood (“God saw everything”). And this is essentially how large language models work. The example I always use is the classic typewriter test-phrase, “The quick brown fox jumps over a lazy dog”, since as soon as we say “the quick brown,” anybody who knows that phrase will assume that the next word is most likely going to be “fox”—or possibly “dog” because people sometimes switch the test-phrase around. But what large language models are doing is not simply predicting the next word, but generating whole phrases and compositions based not on a single small passage of Scripture, but on patterns observed across a massive corpus—all of Scripture, all of Shakespeare, and much of the internet. LLMs, as they analyze the whole corpus of a language for the patterns inherent in such data structures, are essentially mining language for representations of meaning. Stochastic Parrots and the World of Code Another important concept to understand with modern LLM AIs is temperature. Temperature determines how random the next word selection is, which is important because usually we don’t want every AI generated response to a particular query to be exactly the same. In order to generate new patterns that are meaningful to us, we need to introduce, alongside the pattern-derived response, some element of randomness. High temperature introduces more variety but also leads to “hallucinations” or weird responses. I once ran the “quick brown fox” test-phrase through ChatGPT, and it started talking about a “quick brown table.” It’s a legitimate grammatical construction, of course, but tables—even brown ones—aren’t usually “quick” unless they’re on the back of a truck! AI models are often called stochastic parrots. “Stochastic” basically means semi-random. If you roll a single six-sided die (1d6), you'll get a value between one and six, and, on multiple rolls of that die, those values should be fairly evenly distributed. But if you roll two dice, while the outcome is random it follows a pattern, in that you are much more likely to roll a seven (1+6, 2+5, 3+4) than a two (only 1+1). AI follows patterns derived from language, but, given that those patterns are nothing more than vast arrays of statistical interrelationships between words and parts of words represented as numbers, AI doesn’t actually “understand” anything. It just semi-randomly puts together patterns of text that, statistically speaking, are more frequently associated with one another, which generally results in our perceiving meaning—and often useful meaning—in those generated texts. In the coding world, we’ve moved from machine language to higher-level languages like BASIC to reduce complexity. AI now offers a way to reduce that complexity even further by using our own native languages to generate code. My “vibe coded” tool was created by giving the AI English instructions, which it then translated into functional JavaScript and HTML. AI is actually getting pretty good at this, aided, in part, by the deliberately disambiguated nature of computer languages, which, in some ways, makes them statistically much simpler to master. However, there is a catch. In BASIC, a command is deterministic—it always translates to the same machine code. An LLM is non-deterministic. Because of that semi-random element, we can’t always be sure what the translation will be. So, as we offload these tasks—any tasks—to AI, we must ask: What does this mean for us? What impact does this offloading have on our intellect, our character, and our morality? These are questions we that we—as people who care about things like faith, morality, and meaning—must consider as we think about the impact of AI on the world of code in which we “live and move and breathe and have our being.” References * an excellent site on the history of the ELIZA chat-bot * the BASIC port of ELIZA in Creative Computing’s Big Computer Games * Jeff Shrager’s original BASIC implementation of ELIZA * a playable version of the BASIC version of ELIZA at Archive.org * a great list of visualizations of how GPT AIs work * a relatively simple visualization of how GPT “transformers” work * an in-depth interactive visualization of how LLM AIs work * the

  3. 10/25/2025

    The Tale of My Beloved Stellar Empires

    It’s story-time again! This one has a bit of almost all things World of Code about it: early computing history, strategy gaming, programming, BASIC, some actual code analysis, engagement with real-live early programmers, me getting names mixed up, the relationship between computer hardware and software, an actual hardware/software BASIC programming project, and AI triumphs and failures (mostly failures). Let me take you back in time to the early days of my programming and computer-gaming history, and forward to a significant future programming project intended to take folks back to the past, and down into the weeds of debugging and building what, for me, is a pretty significant project. I do get a little bit technical towards the end, but, if you make it that far, do bear with me… I try to make it mostly understandable and my intention as a story-teller is to give you a sense of the joys and perils of programming that is hopefully at least impressionistically accessible to the non-programmer. I feel particularly bad about mixing up Ted and Drew Shorter, the son and father duo who ported my favourite game, “Stellar Empires” (the main subject of this story), to the TRS-80 Color Computer, where I encountered it. For the record, Ted is the son and Drew is the father, and it was Drew (now more than 80!), who, as far as we know, added the “computer player” feature to the game that enabled me to get into it as a solo player—and that really got me digging into the code to reprogram it! I didn’t “re-shoot” that portion because this whole video-podcast was actually done in a single take (and then lightly edited), and I didn’t want to mess with the continuity. I owe a debt of deep gratitude to them and to the game’s original author, Graham Wilson, that this story and this project are attempting to honour. This episode is based, in part, on the following blog-posts, which I hope to transfer over soon to my brand-new technically focussed Substack, Back to BASIC: * The Stellar Empires Project, Part I: The Program, Its Significance to Me, and the Project Proposal * The Stellar Empires Project, Part II: Porting and the Early “Open Source” Community * The Stellar Empires Project, Part III: The Plan, the Problems, and the Development Environment And I would be remiss if I did not also include a link to Graham Wilson’s very enjoyable StellarEmpires.net site! This is a public episode. If you'd like to discuss this with other subscribers or get access to bonus episodes, visit geekorthodox.substack.com/subscribe

  4. 09/19/2025

    World of Code: Switching Things Up II

    In this second half of this two-part World of Code episode in which we dive into actual code and the experience of coding, we’ll take our BASIC light-switch program and re-implement it in a modern programming language, Python, on a modern computer, my M3 MacBook Air. The main takeaway from the experience, I hope, will be a sense of how the ever-increasing power and capabilities of computer technology leads inevitably to more complex code, which then makes necessary the development of new tools that help us to manage the increasing complexity and to take advantage of the increasing power and capabilities the new computer technology. If we track this in terms of the computer technologies and programming languages we’ve covered or alluded to in the World of Code arc of the Geek Orthodox podcast so far, a simplified timeline might look something like this: * computers are hard-wired to do specific tasks * binary code (machine/assembly language) simplifies the process of reprogramming computers * higher-level languages (C, BASIC, etc.) simplify coding and control of computers * operating systems (DOS and then Mac/Windows) simplify control and increase the capabilities of computers but make programming more complicated * modern programming languages are themselves programs, and use Integrated Development Environments (like IDLE) to simplify programming * AI may make programming more accessible (simpler?) by allowing us to “program” computers using natural language (prompts) → see next episode… For those interested in the technical details, here are the four “light-switch” programs we made (two in BASIC, two in Python) over the course of these two episodes: Basic Light-Switch (On/Off) in BASIC: 10 CLS(0) 20 I$=INKEY$ 30 IF I$="" THEN GOTO 20 40 IF I$=CHR$(94) THEN CLS(5) 50 IF I$=CHR$(10) THEN CLS(0) 60 GOTO 20 Notes: In TRS-80 Color Computer BASIC (every early version of BASIC was slightly different, as each version was customized to control the computer it ran on), there are nine colours, 0 = black, 5 = white, the CLS command clears the screen, the INKEY$ command polls the keyboard, and CHR$ refers to characters by their ASCII values, in which 94 = up arrow and 10 = down arrow. Advanced Light-Switch in BASIC: 10 CLS(0) 15 T=5 20 I$=INKEY$ 30 IF I$="" THEN GOTO 20 40 IF I$=CHR$(94) THEN CLS(T) 50 IF I$=CHR$(10) THEN CLS(0) 60 IF I$=CHR$(8) AND T>3 THEN T=T-2:CLS(T) 70 IF I$=CHR$(9) AND TNotes: Early versions of BASIC only allowed one- or two-character variable names, so here T = color temperature; ASCII values 8 and 9 indicate the right- and left-arrow keys, respectively; the colon (:) in BASIC allows multiple commands to be strung together on a single line, with all commands on the same line following an IF statement only being executed if the statement is true; and colours 3 and 7 on the TRS-80 are magenta and dark blue, respectively. Hidden Display Layer and Functions Starting Both of the Light-Switch Python Programs: import pygame # pygame setup pygame.init() screen = pygame.display.set_mode((1280, 720)) UP = pygame.K_UP DOWN = pygame.K_DOWN LEFT = pygame.K_LEFT RIGHT = pygame.K_RIGHT def theUserClosedTheWindow(): # poll for events # pygame.QUIT event means the user clicked X to close your window for event in pygame.event.get(): if event.type == pygame.QUIT: return(True) return(False) def cls(colour): screen.fill(colour) # flip() the display to put your work on screen pygame.display.flip() def inkey(): return(pygame.key.get_pressed()) Notes: Imports the pygame library to detect key-presses and display coloured rectangles, sets up a 720p screen, defines the UP, DOWN, LEFT, and RIGHT keys as nicely named constants, defines a function that determines when the user closes the window, and implements the BASIC commands CLS and INKEY to make clearing the screen and detecting keystrokes look more familiar. Basic Light-Switch (On/Off) in Python: running = True colour = "black" cls(colour) while running: if theUserClosedTheWindow(): running = False i = inkey() if i[UP]: cls("white") if i[DOWN]: cls("black") pygame.quit() Notes: Follows and depends upon the first portion of the program, above. Turns the screen “on” (white) when the up-arrow is pressed and “off” (black) when the down-arrow is pressed. Advanced Light-Switch in Python: r = 255 g = 255 b = 255 running = True colour = (r,g,b) cls("black") while running: if theUserClosedTheWindow(): running = False i = inkey() if i[UP]: cls((r,g,b)) if i[DOWN]: cls("black") if i[LEFT] and r > 0: if b 0: if r Notes: Replaces the “basic switch” code above, and likewise follows and depends upon the “hidden display layer” code. Represents the “coolest” colour temperature as light blue (cyan), which it moves towards as the left arrow key is pressed (r,g,b = 0,255,255), and the “warmest” colour temperature as yellow (r,g,b = 255,255,0), which it moves towards as the right arrow key is pressed. This is a public episode. If you'd like to discuss this with other subscribers or get access to bonus episodes, visit geekorthodox.substack.com/subscribe

  5. 08/15/2025

    The First Literary Death of Arthur: Geoffrey of Monmouth

    Continuing the process of re-issuing the first arc of my podcast, following on from Episode 1, “The Historical Deaths of Arthur”, available here. In which we examine the transition from the treatment of Arthur as a primarily historical to a primarily literary figure in Geoffrey of Monmouth’s History of the Kings of Britain, and the resultant changes to the handling and implications of Arthur’s death Geoffrey of Monmouth, for all his claims to be writing a history of the kings of Britain, seems actually to have been much more interested much more interested in establishing Arthur as a legendary, heroic figure, and succeeds in establishing many of the main themes of Arthurian legend, despite Geoffrey being (in the words of my hero, C.S. Lewis) “an author of mediocre talent and no taste.” Show Notes: 1. Geoffrey of Monmouth, History of the Kings of Britain * Date: AD 1138 * Causes of Arthur’s death: * Mordred’s betrayal: Arthur’s nephew, who is left in charge during Arthur’s Roman campaign, rebels and marries Guinevere * Civil war: Arthur dies fighting his fellow Britons and a collection of enemies, primarily Saxons, but also “Scots, Picts, Irish” and others * Aftermath: * Guinevere (Guanhumara) flees to a convent * Arthur “mortally wounded” and carried to the isle of Avallon to be cured * kinsman Constantine succeeds the throne, but a rapid succession of rivals replacing one another as well as civil war over the next ten years or so leads to the wasting of what is left to them and the domination of the Saxons * Beginnings of the subsequent shape of the “matter of Britain”: * Theme of freedom: Uther, on defeating the Saxons (leading his troops on a litter due to illness): “Victory to me half-dead is better than to be safe and sound and vanquished. For to die with honour is preferable to living with disgrace.” * Mordred’s betrayal, left in charge because he is Arthur’s kinsman (though here nephew, not son) * Guinevere’s infidelity (though with Mordred) * Single-combat between Arthur and Flollo looks a lot like a joust * Tournaments: three-day tournament at the coronation, with prizes given on the fourth, including: “The military men composed a kind of diversion in imitation of a fight on horseback; and the ladies, placed in a sportive manner darted their amorous glances at the courtiers, the more to encourage them.” * Civil war, which Geoffrey condemns: “Why foolish nation! oppressed with the weight of your abominable wickedness, why did you, in your insatiable thirst after civil wars, so weaken yourself by domestic confusions, that whereas formerly you brought distant kingdoms under your yoke, now, like a good vineyard degenerated and turned to bitterness, you cannot defend your country, your wives, and children, against your enemies?” * Geoffrey’s account, written in Latin and thus widely disseminated, was hugely popular and influential, but was not well received by all his contemporaries – or even by later critics, like C.S. Lewis. * William of Newburgh (c. 1196) condemns Geoffrey for weaving “ridiculous figments of imagination” around historical events recorded by the Venerable Bede and cloaked these old, British “fables about Arthur … with the honorable name of history by presenting them with the ornaments of the Latin tongue.” It is interesting that one of the possible motives he ascribes to Geoffrey for doing so is “to please the Britons, most of whom are known to be so primitive that they are said still to be awaiting the return of Arthur, and will not suffer themselves to hear that he is dead.” William wonders how “the old historians, to whom it was a matter of great concern that nothing worthy of memory should be omitted from what was written … could … have suppressed with silence Arthur and his acts, this king of the Britons who was nobler than Alexander the Great,” and further disparages Geoffrey for translating “the fallacious prophecies of a certain Merlin, to which he has in any event added many things himself” into Latin. * Gerald of Wales, who writes an account of the discovery of King Arthur’s body (more on that later), condemns Geoffrey’s Historywith the story of a man who could see demons: “When he was harrassed beyond endurance by these unclean spirits, Saint John’s Gospel was placed on his lap, and then they all vanished immediately, flying away like so many birds. If the Gospel were afterwards removed and the History of the Kings of Britain by Geoffrey of Monmouth put there in its place, just to see what would happen, the demons would alight all over his body, and on the book too, staying there longer than usual and being even more demanding.” * Lewis, on the other hand, condemns Geoffrey from a more modern, literary perspective: “Geoffrey is of course important for the historians of the Arthurian Legend; but since the interest of those historians has seldom lain chiefly in literature, they have not always remembered to tell us that he is an author of mediocre talent and no taste. In the Arthurian parts of his work the lion’s share falls to the insufferable rigamarole of Merlin’s prophecies and to the foreign conquests of Arthur. These latter are, of course, at once the least historical and the least mythical thing about Arthur. If there was a real Arthur he did not conquer Rome. … The annals of senseless and monotonously successful aggression are dreary enough reading even when true; when blatantly, stupidly false, they are unendurable.” 2. Intermediate sources I’m going to skip Geoffrey’s influential History established Arthurian legend as the English ur-text, the “matter of Britain” and inspired a whole range of imaginative elaborations, most notably the addition of Lancelot by the French, writing in the “courtly love” tradition which Lewis engages with in his most important academic work, The Allegory of Love, as well as English works such as the alliterative Morte Arthure, which seems to have inspired the beginnings of Malory’s great Arthurian work. * French prose cycle: Lancelot, Quest for the Grail, Mort Artu (Malory’s “French book”) * 14th C English alliterative Morte Arthure * 14th C stanzaic Le Morte Arthur This is a public episode. If you'd like to discuss this with other subscribers or get access to bonus episodes, visit geekorthodox.substack.com/subscribe

  6. 07/23/2025

    Thinking through and Implementing the Algorithm

    This is a free preview of a paid episode. To hear more, visit geekorthodox.substack.com It’s been a while since I posted any bonus content for my few paying subscribers! Since I’ve chosen to put only optional extra content behind my paywall, consistent with the principles I’ve outlined previously, my tendency is to make almost everything public. However, today I have a treat for any paying subscribers who are interested in my approach to programming and/or who would like to learn to program in TRS-80 Color Computer BASIC. While I’ve already covered the basics of BASIC (pun intended) in previous videos, most notably in my latest World of Code episode, in this exclusive excerpt you can see me thinking through the algorithm I want to use to implement our virtual light-switch, and then programming it on my virtual TRS-80 Color Computer. The video also provides a glimpse into the relatively primitive world of programming as it existed way back in the 1980s: editing tools were necessarily a lot more basic and unintuitive back then! Besides the need to juggle the use of BASIC as both the programming language and the “operating system”, without a mouse or a dedicated editor, line-editing had to be done entirely with pretty unintuitive keyboard shortcuts. Geek Orthodox is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber. Besides giving me a chance to share fun bonus content with my few paying subscribers, my hope and my strategy in making paid content available at a deeply discounted price is to give folks a way * to encourage me to devote more time to creating more geeky content of various types, and * to encourage more general paid support of internet content that we actually love, at an affordable rate.

  7. 07/22/2025

    World of Code: Switching Things Up

    Having wrapped up the first arc of this “World of Code” arc of the podcast with an examination of the ways in which some of the attributes of computer code have had an impact on two very human activities that are very near and dear to my heart: telling stories and playing games; we now begin a new arc in which we examine some of the impacts that the inherent complexity of computer code has on our world, beginning with the complexity of actually creating code by programming a simplified virtual version of our code-enhanced wireless light-switch. This is the first half of a two-part episode: in this first half, we’ll implement a BASIC version of the light switch on my TRS-80 Color Computer—not to teach programming, of course, but to experientially engage with how code is created and how it works, in order to better understand both what code is and how it rapidly scales up in complexity. In the second half, we’ll re-implement the light-switch program on more modern hardware (my Mac) in a more modern programming language (Python), which will illustrate how the addition of more computing capabilities further increases the complexity of code, leading to all sorts of significant problems which we need to address with new tools that simplify through abstraction but which themselves add even more layers of complexity. This is a public episode. If you'd like to discuss this with other subscribers or get access to bonus episodes, visit geekorthodox.substack.com/subscribe

    World of Code: Switching Things Up

About

Orthodox Christianity and geek subculture, hosted by Fr. Justin, an Orthodox priest and life-long book-, computer-, game-, sci-fi-, and fantasy-geek. geekorthodox.substack.com