Posts Tagged "computing"

See All Tags

The Great 2026 Redesign

For a couple years now, maxwelljoslyn.com has been sorely in need of a facelift and some new functionality for user-friendliness. Over the last few weeks I've finally gotten around to that, and if you're reading this, you're on the new version of the site.

The rest of this post is a showcase comparing what the site looked like before and after mid-September 2026, for the sake of future visitors (including me).

A Better Homepage

The homepage is a better experience for new and returning readers alike. "Greatest Hits" comes first, is updated for 2026, and is slimmed down to make room for a photo gallery! After that, we segue cleanly into new posts.

Continue reading

A successful first run for Slartibartfast

Last night's first overnight Slartibartfast run was a success. I marked 4 issues as acceptable for it to work on, and it produced a draft pull request for each.

Tonight I whipped up a quick status monitor as an admin page on this website, so I can peek at what it's doing.

The costs shown below are not what I'm actually paying. To my knowledge, there's no straightforward way to understand how many tokens you have access to within each 5-hour Claude subscription window. Slartibartfast maintains statistics on how much work it can perform in 5 hours, then estimates both that window size and the cost per worker process, so I (and it) can eyeball how much work it can do in the remaining time. The actual stats are measured in tokens, but since those are large numbers, everything's converted to an approximate dollar cost for the end user.

Continue reading

Slartibartfast: hands-off coding in the wee hours

I've spent the last few nights rolling myself a "software factory", a system for using an unattended coding agent to autonomously pick and work on issues from my GitHub repositories.

The system's name is Slartibartfast, after the hapless designer of fjords in Hitchhiker's Guide to the Galaxy. For short, I call it "Bart".

The primary Bart process is a good old-fashioned program, not an AI. It runs on the same server that hosts my 3 live websites (Zingor; Unsphere; and this blog).

On startup, Bart builds a list of all open issues from my GitHub repositories which satisfy the following criteria:

Continue reading

You can adopt the IndieWeb in stages

If you spend time in IndieWeb discussion circles, such as chat.indieweb.org or the get-togethers listed on events.indieweb.org, or if you spend time wandering through the indieweb.org wiki, you will find evidence that many of us share the view that UX must come first.

There are one-click-setup IndieWeb entry points. The most prominent is micro.blog which gives you a personal blog/site with all the latest IndieWeb goodness and costs $5/month.

But most people interested in the IndieWeb these days are devs, i.e. nerds, and want to roll things themselves, which is why IndieWeb-related blog posts can feel like tech soup.

This is something IW members would gladly see change! Adoption by non-nerds is something the IW cares about. David Shanske, for instance, has spent much time in the last decade on plugins that implement IW tools for Wordpress.

Continue reading

Speeding Up the Market Table

Ahhh, it's a good night to do some coding. I improved the performance of the market page in my D&D application, reducing overall page load time from 2 seconds to 0.8 seconds.

Players purchase items using a "Buy" form. The DM has additional controls in that form to "Give" a player character tradegoods directly. One of those <form> elements exists for each player-purchasable tradegood, and there are about 1,200 of those now. While profiling, I discovered that the 100ish <option> tags on each "Buy/Give" form (one for each potential buyer or recipient of the purchase) were bloating the page to a horrific 25 MB.

Continue reading

An Early Look At Convoke

A coincidence involving a book club led me to make the acquaintance of David McEnulty, one of the two people working on Convoke, an RPG support application which has just entered (very early) beta testing. McEnulty said he'd read my master's thesis and wanted to get my opinion of his app. We had a pleasant video call that lasted almost three hours. I've already privately given him feedback on design, functionality, and marketing aspects of the tool. Below, I explain what it is and assess how applicable it seems to be for the average DM.

What Convoke Is

Convoke is an RPG support application designed to let the DM and players carry out certain parts of gameplay in between a typical group's regularly-scheduled game sessions. DM-facing functionality includes:

Continue reading

This is what all technical tutorials should look like. Well-composed and generally free of grammatical errors, spends just the right amount of time explaining each new topic as it is introduced, comes with full code samples, and includes visual samples of what the code does. Also, lengthy enough to treat the material in depth, while still being sufficiently self-contained that I can follow along -- without having read part 1 and without more than a few months of Common Lisp under my belt from a couple years back (tho I've done a decent amount of Clojure and Emacs Lisp.)

Bravo, awkravchuk/Andrew :^)

The Job Search Bears Fruit

My job search of half a year has finally come to an end. I've accepted an offer from Epic Systems to be a Server Systems Engineer! Roughly speaking, half of the job is being a sysadmin; the other half of the time, I'll be a sort of engineering consultant for sysadmins and DBAs at hospitals that use Epic's health-record software.

I'm excited about the job itself, and also excited about moving to Madison, Wisconsin. I've never been there, but it seems to be a bit like Portland, Oregon, where I lived for seven years during and after undergrad at Reed.

Continue reading

Hi, MatthewDailey. Couldn't find your email so I'm contacting you here.

I don't recall how I found you and your projects -- probably HackerNews -- but I was intrigued by your GPT DND. You aren't the first to do "AI as Dungeon Master", but you are the first I've seen to add voice to the equation, so kudos.

I thought you might be interested in my gm-trainer project, which comes at things from the other direction: using LLMs as pseudo-players, rather than the GM, to provide GMs with a sort of training sandbox. Still early days, and not as configurable as I'd like it to be for other people. But to my knowledge I'm the first to flip things around like that. (Which makes sense if we consider that most people working in the nascent "AI + RPG" space seem to want to replace the "scarce resource" that is GMs/DMs).

Continue reading

Feeling Fresh

It's been a long time since I've written here. In 2022, I was fairly busy with my master's studies and attending Recurse Center. Then, from fall of 2022 all the way through to the end of 2023, the lion's share of my time went to writing my master's thesis. Because I'm still dealing the hand injuries I sustained in 2019 and 2020, I often had to limit my time spent at the computer to just what I needed for working on my thesis. Writing for recreation was a no-go zone.

Continue reading

Game Analytics and Procedural Content Generation Questions for a Gaming Company

I will soon be interviewing at CZ, a large company which develops casual mobile games in several genres, including slots, match-three, and word puzzles. The team I'm interviewing with is focused on procedural content generation and analytics/data science infrastructure.

In pre-interview emails, the recruiter suggested I play some of CZ's games. I did so. Here are my thoughts and impressions.

For purposes of professional courtesy, I have changed the name of the company and all games discussed in this article. Unfortunately, preserving CZ’s anonymity also means I cannot show screenshots.

I originally had another section in this post discussing ad placement and characteristics, but I removed it once I understood that the "analytics" side of this team is focused more on content analysis than ad performance. Email me if you want it.

Continue reading

What I've Been Up To

Four factors have combined to keep me from posting on this site for six months, which feels like an eon.

  • The janky setup behind this website Imposed too high an activation energy for creating new posts.
  • My poor hands, though in a somewhat better state than at the beginning of 2021, are still suffering from an undiagnosed source of pain.
  • I started graduate school.
  • I’m busy as heck outside of school.

However, aside from my hands, things are really looking up. For the benefit of my lovely readers, here’s what I’ve been up to since the final episode of The Drongo.

Continue reading

The Drongo, Interview #12: Jacob Hall

Welcome, each and every drongo, to The Drongo's first interview since our summer hiatus. We've got a real rock star for our guest today!

The Drongo: Our guest for this round of The Drongo is Jacob Hall. He's provided us the following third-person biography.

Jacob Hall: "You'd likely recognize Jacob Hall pretty quickly if you ran into him on the street: he's always barefoot, he's either wearing his pants or either of his two shorts, and his hair keeps changing colors.

He currently lives in Williamsburg, VA, studying geology at William & Mary, producing educational media for the on-campus Studio for Teaching and Learning Innovation, and co-managing a student-run house/venue/coffee shop called The Meridian. In his free time (read: procrastinatory sprees) he develops websites for himself and friends, cooks for anyone in earshot, and goes on very long walks."

Continue reading

Letter to h0p3 about Hands, Interviews, and Software Stupidity

h0p3,

I didn't expect to write you another letter so soon, but my mind kept piling up phrases which I could tell were destined only for you.

I have continued to spelunk your wiki. Your turns of phrase give me unceasing enjoyment; it would be clear from your diction alone - if it were not already clear from all of the philosophy that wrestle with - that you are deeply immersed in language. I must also note that I adore your term of art "Fireman Time." I often wake up to find I have unconsciously summoned a monster into attack mode. Yu-Gi-Ohhhhhh...

Continue reading

It's Time for Better No-Hands Computer Interfaces

Introduction

I have typing-induced RSI aggravated by a fall off a bicycle. I've struggled for months with available voice-input software. I've been forced to place nearly all of my personal projects on hold, and I'm uncertain how I will perform a normal job without further degrading my hands.

I will not stand for this. Computers can do anything. My mission in 2021 is to build the best possible no-hands interface for textual work at the computer.

I'm currently seeking funding which would allow my mission to become my job. Failing that, I will at least find mentors to guide me as I create this interface myself.

Continue reading

Labels for Blog Titles

A couple weeks ago, I added "new" labels to the front page of my website. They are rectangular and ugly, but soon they will be round.

I realized I could reuse the same labels in my blog index, so that each post's name will be followed by its tags, like this.

I wanted to differentiate them from the "new" labels. Since "new" was the odd one out (expressing recency rather than a topic), I changed its shape and color scheme. Here's how looked before.

Continue reading

Software Parody

It is relatively easy to define "parody" when the object of parody is a book, poem, movie, or piece of music. What would it mean to parody a piece of software?

Functional Objects Can Be Parodied

It will not do to claim that software is immune to parody because it is a functional construct. A building is functional, yet its structure could be parodied, perhaps by a distorted replica having stretched hallways with non-rectangular cross sections, and doorways which are too small for humans or which lead nowhere. (Architecture in general can also be parodied: consider the ridiculous effect of a diminutive Arc de Triomphe in the middle of a normal-sized roundabout.)

Continue reading

Poetic Meter Analyzer

Does this exist?

Type in words. For each line you type, this program will do its best to categorize the line by its pattern of stressed and unstressed syllables. It does this by retrieving the stress pattern or patterns for each word from an ordinary dictionary (maybe several dictionaries), and comparing all possible paths through the line to determine, for words with multiple possible stress patterns, which is most likely to be right. Or, which would lead to what patterns. [Aside: run spell checker before doing analysis.]

Oh, typing is getting me nowhere. Examles of desired behavior will do better.

Continue reading

Letter to Maya

Maya,

Thank you for sharing Mike Hoye's "Citation Needed" (which documents the strange-but-true origin of the programming-language convention of array indices starting at zero, instead of one.)

A piece of writing born of someone's realization that nobody else has investigated this,as with "Citation Needed." Part of that magicalness comes from the novelty of the discovery, which, in the hands of a good writer, will be unfolded for the reader so that it feels like they could have discovered it, too. Another part of the magicalness is the same feeling one gets when one reads about an archaelogical or historical find from the unlikeliest of places: you mean we didn't know?! As you said in your reply, so much of computing history is being lost to time every day.

Continue reading

An Integer That Only Decreases?

Is it correct to say that a type system needs to implement dependent types if it is to allow the expression of an integer that can only decrease? The goal would be to define a type R Integer such that a function R Integer -> R Integer would only compile if the Integer inside the output value was equal or less to the one inside the input.

Why Beeminder?

I vigorously encourage you to use Beeminder for tracking, maintaining, and modifying habits.

Several people have recently asked me to explain why I like this service so much. This page is my evolving answer.

So, why Beeminder?

Design

The core feature of Beeminder is the "bee sting." The service charges you money if you fail to meet a certain rate of progress toward a goal.

For instance, if I declare to Beeminder that I will meditate 5 minutes per day, and I fail to perform meditation at that rate, Beeminder will "derail" me, charge me a small amount of money, and -- after a weeklong grace period -- rearm the sting.

Continue reading

Taking this Website Dynamic

I've spent the last couple weeks developing version 2 of this website as a Python Flask-based web application. This has required learning more about server administration, as well as putting into use the web-app development skills I've been chipping away at all year.

I'm happy to report that the new version of this site will be going live next week, with Micropub support implemented. Your end user experience should not change at all (but please report any broken links!) Improvements to navigation, content discovery, subscription, tags, and syndication are forthcoming.

My main motivation for this upgrade was to lower my self-imposed barrier to public writing and interaction.

Continue reading

Speech Synthesizers

My friend Matt and I just discovered that Android's (default) text-messaging app can now send voice messages.

Voice messaging (on WeChat) was everywhere when I lived in China, and I've missed it as an option for texting in the States. I suppose the demand for voice messaging is filled here by Snapchat, whatever Facebook does, and voice iMessages for the Apple ecosystem. I don't use those, so I have been a text-only plebeian -- until now!

I think I'll be using voice messages a lot, especially during the coronavirus pandemic. My words, in my voice, represent me more closely than writing can. I'm glad to find a way to move some of my normal communication away from pure text.

Continue reading

Testing Poem Annotations

As I write up explanations and annotations for my poems, I find myself wanting to use lines and shapes to pick out particular areas of each work.

Here's a rudimentary prototype, drawing heavily on the LeaderLine library. Try clicking or hovering one of the bracketed sections.

I'm a fake poem, sure to spin
A top around its bottom

I am a fine explanation! And I am his lovable pal.

I'm not currently planning to turn my annotations into sidenotes or marginalia, but I'll certainly draw inspiration from the numerous attempts at that style of web design. I'll also be investigating annotation platforms like Hypothesis, which may have something to offer.

Linguary

Introduction

This page describes Linguary, an application to support two major activities in language analysis: (1) storing source material which has caught the user's interest, and (2) grouping and commenting on source material to attack or defend a hypothesis. This page, like Linguary, is a work in progress.

Linguary was born to serve my own needs in translation, linguistics, and recreational language learning, but I intend to make it useful for others (though there are no plans to make it applicable to non-Chinese languages.) The application was first mentioned on this site under the earlier name "Linguist's Working Environment," in my June letter to h0p3.

Continue reading

The Joys of Open-Source Docs

Yesterday's good deed: revising and rewriting technical documentation for a cryptocurrency company's open-source project.

I've long had the habit of emailing people I find on the Web to notify them of typos, or dead webpages, but only recently have I realized:

  • how little time and energy companies typically devote to writing documentation (relative to resources spent on the systems being documented)
  • how many projects have software docs and similar written resources in public version control repos
  • how easy it is to fix written documents when they're hosted on version control platforms like GitHub

I hope to continue helping out with FOSS projects' technical-writing needs, especially when there's an opportunity to help Chinese-speaking teams translate material into native English.

Uses This

Software, tools, and services that I use. Search keyword: "uses this."

  • writing and editing: GNU Emacs Neovim
  • operating system: macOS (laptop); Debian (server - but I'm not picky about my GNU/Linux)
  • memory training: Anki (with several extensions, including AnkiConnect for programmatic interaction, and Low Key Anki to present just two choices on each review and adjust easing factors, and True Retention by Card Maturity to ensure my reviews are having an effect.)
  • keyboard: Kinesis Advantage2 Ergodox EZ
  • mouse: Anker Vertical Ergonomic Mouse Kensington trackball
  • headset: an unknown brand with around-ear earpieces and a taped-up frame; a pair of "1More"-brand Bluetooth earbuds

Continue reading

Redesigning the Blog Index

For the sake of readers' eyes, I've redesigned the blog index. This post explains what changed, and why.

Before the Changes

A picture of the blog index before 2020-06-30.

Here are the problems with the "before" picture.

  • Cluttered presentation of notes

    The reader can be told, "This is a note," without nearly as much text as shown at (1). Let's take a lesson from Tufte and not put so much ink on the screen.

    Notes are the foundation on which specialized IndieWeb post types are built, and are so basic they don't even need titles. The note's presentation should get out of the reader's way.

    Furthermore, if there are multiple consecutive notes (not pictured), then, whether they are on the same day or not, the clutter pointed out in (1) makes it hard to tell when the date changes.

Continue reading

Web Services for Programming with ISBNs

Introduction

Paper Republic (PR) is a charitable organization which promotes Chinese literature in translation. PR's founder, a well-known translator named Eric Abrahamsen, doubles as the organization's sole technical staff member. He recently recruited me to assist with creating new platform functionality permitting PR website users to add to a database of Chinese literature. I'll provisionally refer to this new feature as "Book Lookup."

As currently designed, Book Lookup will ask the user to type in an ISBN. After being validated, the ISBN will be submitted to internal or external lookup services, through which Book Lookup can automatically populate the PR database with verified information.

Continue reading

A Text-Adventure Game Engine

Introduction

As a work sample for a job application, I spent some time writing a Python library which lets a game designer create basic text adventures. Though the library is a mere prototype, I was able to use it to implement a sample game called "Bread Master."

My library and its documentation are available on my public GitLab account. The rest of this page reproduces some introductory sections from the library's README, as of 2020-05-09.

Continue reading

Choosing a Notation for Mandarin Romanization

Decision: Standardize on gei3-type citations for source material. Can use scripts in the build process to automate find-replace for publishing. I don't care about academic or legal standards right now, and any Chinese linguistics writing I do will probably not be for laymen.

Here is the case for using gei3 instead of standard Pinyin gěi.

Pro:

  • only need ASCII to search (except for lü, but that can be typed lv), which is helpful for build-process mechanisms and scripts like spell check, as well as fewer edge cases for implementation of projects such as full-text search
  • if I ever switch to doing it the other way, I can more easily replace text like gei3 into gěi than the other way around (and the procedure for determining which letter takes the tone accent mark is a straightforward algorithm).

Continue reading

Today is Day 2 of 2 for IndieWebCamp Online 2020, which means today is Hack Day! My goal for the day is to reconstruct my poems page.

[As of 15:32:57, I'm all done!]

My first task today is to solve the page-redirect woes that I've been blogging about since a few days ago. Diligent implementation of the solutions given in S3's documentation got me nowhere, so I'll use a little JavaScript to redirect from the old poems URL to the new one.

[2020-02-09T09:38:25-0800: first task complete!]

With the redirect in place, I can proceed to the larger of today's tasks: breaking out each poem onto its own page. This will accomplish two goals:

Continue reading

Edit, 2020-02-09T13:52:23-0800: I've finally solved this problem by replacing poems with a stub page that redirects to poems/index, using JavaScript to preserve the URL fragment. Mission accomplished--no thanks to S3!

Edit, 2020-02-07T20:15:29: I've tried using the other form of S3 redirect: uploading a zero-byte file called poems and adding a redirect from that file to the new /poems/index location. We'll see if that works.

Edit, 2020-02-07T10:48:32: Dammit, I don't know what I'm doing. Can anyone help?

Redirecting from the no-longer-existent poems file to the new poems/ in the "Static Website Hosting - Redirection Rules" section of the S3 Console is not working at all: I get the AWS-default 403 (Access Denied) return code (which AFAIK is masking an underlying 404 Not Found, given that poems has been deleted from the bucket.) I'm already stuck, and it's only step one of the plan below! Here are the routing rules I'm using.

Continue reading

My first hobbyist programming project was to enhance my D&D game with a system for determining the prices of in-game items. To reach this goal, I built up a pipeline of tools which generated terrain with elevation, moisture, temperature, and climate; used pathfinding to construct a road network; rendered the world map as a vector-graphics file; and specified "recipes," like this one, delineating the raw materials and labor needed to construct each purchasable trade good.

Pouring thousands of hours into a sprawling project over two years solidified my love of programming, expanded my brain, and got me seriously writing on the Web for the second time. However, as the work of a beginning developer, "the economy project" is sloppy.

Continue reading

Swordfighting Videogame with Two Modes

I propose a videogame with two modes. Mode 1 is played in a 3rd-person or 1st-person perspective (I think 1st-person would be more satisfying.) On your turn, you swing your sword toward the enemy's body. The motion of the sword can be precisely controlled, as can the hit location; part of the game skill is hitting a "juicy" place on your enemy.

Continue reading

Before this morning, I had two barebones Emacs commands which I used to open my website in a browser. One opened the index page in the build folder, and one opened the index page on the deployed site.


(defun mj/browse-my-website ()
  (interactive)
  (browse-url "https://www.maxwelljoslyn.com"))

(defun mj/browse-my-website-locally ()
  (interactive)
  (browse-url site-build-folder))

Since I frequently used the "browse-locally" command to check how the site looks before deploying, but rarely used the command to browse the deployed site, I turned the latter into an option triggered by passing an argument.

More substantially, browsing the index page is still the default, but if I'm viewing a webpage's source in Emacs, the command instead browses that page on the (local or deployed) site. This is usually what I want when checking pages.

Continue reading

Workout Weight Progression

Novice weightlifters are typically encouraged to use one weight until they can perform a certain number of reps, then go to the next-biggest weight and repeat. This straightforward approach, called linear progression, is the standard recommendation for those new to weight training.

Continue reading

Yesterday, I learned the basics of setting up a Linux virtual server on Amazon's "Elastic Compute Cloud" (EC2) service. After some false starts with other hosting providers, the developer documentation for EC2 felt blessedly straightforward.

Server-side application development is a new programming paradigm for me. I've written a lot of programs, but nearly all of them were designed for me to consciously start running on my own computer. I've created material on multiple websites and blogs, but until now I've relied on free blog hosts or Amazon S3, and have never run a server to handle web traffic.

Continue reading

Terrible UI Design in MacOS Chinese Input

MacOS Chinese input allows you to cycle through the tones with TAB. I just discovered this after years of (begrudgingly) using this input method. Harrumph! They could have put the tones on the number keys to kill two birds with one stone:

  1. Number -> tone is a straightforward, well-known mapping, so I wouldn't have had to discover this feature at random.
  2. It would have forced them to find a smarter, more ergonomic way of letting me pick candidates, rather than having to lift my fingers from the letter keys to identify every single character I want to use.

I'd like to represent my Chinese name in the h-card markup that makes this website's authorship information machine-readable. How should I do that?

Some time later:

The answer seems to be "use the p-nickname property." The wiki documentation of that property clearly states that it can be used for a handle or alias. I don't like that "nickname" is the microformats keyword for this purpose: I prefer "alias," since all nicknames are aliases, but not all aliases are nicknames. However, I'm glad to at least have solved my problem.

(Another scenario where using this property would be useful: a European friend named "Juerg" spells his name "George" when communicating in English. On his business cards, he writes Juerg 'George' Lastname; on his website, he could mark up the 'George' with the p-nickname property.)

Turning Off Lisp Semantics

The reason Lisp is special is because you can TURN OFF semantics.

(+ 1 1) is pure form. (+ 1 1) is syntax. (+ 1 1) is a syntactic expression: it has structure. But, until we evaluate it, it doesn't have meaning. [It might appear to be "add one and one," but in a programming language focused on bits and bytes, (+ 1 1) might well be the command to put together two bits, resulting in 11.]

In all the Lisp-family languages I know of, because they are programming languages, and by default the programmer expects to evaluate syntactic expressions, the default notation for an expression which will be evaluated is simpler than that for one which will not be evaluated.

Continue reading

Scope of Variables in Inform 7

Consider this snippet of Inform 7 code:

To improve the mood of (character - an animal):
    if the mood of character is less than friendly, now the mood of the character is the mood after the mood of the character.

I am not sure whether or not the statement "the mood after the mood of the character" wraps around. That is to say, I am not sure whether the above code would "improve" the character's mood from the best one possible to the worst. I would hope it doesn't do that, but I'll have to investigate.

The if statement above can be translated into pseudo-Clojure as follows:

Continue reading

With advice from Greg McVerry, Aaron Parecki, and Ryan Barrett, I finished getting this blog set up for subscription using the `h-feed` microformat, and made other improvements along the way.

How this benefits you:

  • You can now subscribe to this website if your reader understands h-feed
  • Posts which have received updates since publishing now display their "last updated time"
  • For posts with explicit titles, the blog index displays them, making it more rewarding to manually browse the index

In addition to the above, all pages' titles now link to themselves, and each link in the blog index now has proper h-entry markup.

Continue reading

Improved Time Stamps

As of right now, the publication timestamp before this paragraph reads "Published on 2019-10-20, around 18:14:20". This timestamp is also a permalink for this page.

The dates on these posts ("2019-10-20") have been there since soon after I started this blog, but I just added the time-of-day information ("around 18:14:20") today. A machine-readable version of the time, including the time zone, has also been invisibly included in the permalink's HTML.

I did this as one step in upgrading my website so that other people can subscribe to it. If I only provided the date of publication, but not the time, someone else's reader program wouldn't be able to put my post in chronological order when compared with another post.

Continue reading

Fedoradventure

Introduction

You are Fedora, and it is a good day for lounging about the house.

Play Fedoradventure online here: it only takes a few minutes to finish.

Fedoradventure is a super-small adventure game I wrote as a gift for a friend named Fedora, who was quite pleased with it.

Ryan Quest

Ryan Quest cover image: the phrase 'MAXWELL JOSLYN PRESENTS RYAN QUEST' superimposed on a picture of the protagonist, Ryan Wright.

Play Ryan Quest in your browser.

Introduction

From 2018-10-01 to 2019-02-01, I created an adventure videogame based on the life of my friend Ryan Wright, an American who is studying game design in Copenhagen. The game has been enjoyed by all who've played it, including the titular Ryan.

  • estimated play time: 1-2 hours (too long? Try the five-minute Fedoradventure.)
  • difficulty: easy/medium. An UNDO command is included.

The game is usually played by one person, but friends have found it even more entertaining to play as a group: everyone suggests things to try next, and one person does the typing.

My friends team up to play Ryan Quest during the final beta test.
My friends team up to play Ryan Quest during the final beta test.

Continue reading