So it’s been awhile since I posted anything here. I kind of went offline during non-working hours, hanging out with my kids, focusing on other things, and the job I had last year required a lot of travel to New Hampshire.
I also ran into Jason Scott and asked him why he blocked me on Twitter. He didn’t give me a straight answer, but I’m aware that I can voice IF community frustration at times. I looked back at some of my commentary and cringed. I’m done with that. We’re all doing cool things, I support all of the cool things, and I hope we find time to help each other as time and alignment allow. If I can help anyone, feel free to reach out and I will honestly try to accommodate any request that aligns with my background. Mostly I can provide hosting on plover.net, support any effort to leverage FyreVM Web, and maybe offer insight into general IF knowledge.
What am I doing now? Well, I picked up a Raspberry PI and an old Digital Equipment Corporation DecWriter III (LA120) and I have an emulated PDP-11/70 running RSTS/E with DUNGEO and ADVENT. So in my home office you can play those two games on a green bar paper console. Another PDP hobbyist has a z-terp running and more games are possible, but not sure how the windowing would impact a paper terminal’s output. This was a ton of fun to get working and highly nostalgic. My very first experience with any computer was an LA120 dialed into Milwaukee Public School’s PDP-11/70. I was 15 years old, so that’s 40 years ago.
I’ve also decided to hold off on writing IF for a bit since it’s time consuming and I’m frustrated with the current set of tools. There are idiosyncrasies in Inform that are well-known and have no resolution, mainly the way emitting text is deeply integrated in the underlying Inform 6 platform. I’ve also always been interested in platform development and have tried several different approaches over the years. My current interests lie in leveraging an in-memory graph data store with an event-driven architecture managing the contents of said data store. Parsing and Text-emission would come out of change events on the graph. This aligns with my professional interest in Domain-Driven Design, the premise of which is to reduce complexity by pulling things apart into their “domains” or “bound contexts”. In the case of IF, I do believe text emission should be its own bound context, receiving a list of events from the engine, then combining the text based on rules, before sending them to whatever type of output. I suspect text generation is already tackling some of the concepts here, like if the player manipulates an object, how is that reported and at what point in the output? Is it first or embedded in the main output or is it a part of a summary? Not to mention all of the hullabaloo around punctuation, paragraphing, and other aspects of text generation. But imagine having a set of output at the end of a “turn” and having complete control over its format. That would be quite amazing.
The other thing I want to investigate is the syntax of an IF language. I like the idea of pipes and fluent syntax. Inform’s NL-like implementation was a ground-breaking achievement. Even so, as a life-long programmer, I have often been frustrated in how to implement things. I have often struggled with declarative-styled languages. I hated XSLT’s twenty years ago when it was all the rage.
So my goal is simply research and development around graphs and fluent syntax and bound contexts. I have no goals, no promises, no announcements per se. I’m going through the new compiler book by Bob Nystrom http://craftinginterpreters.com/. It’s very accessible, compared to the Dragon book.
I hope everyone is staying safe during the lockdown and looking forward to some of the NarraScope events. Hopefully we’ll all be together next year.