Q4 2022

AI Arrives, Metaverse Fades, Reality Bites

I've had a few conversations with venture capital without soliciting them (this sales process made me feel pretty), but I'm not keen on giving up control nor having a boss. Freedom, as a company value, requires vigilance. The best thing about not taking external money is that I can goof off until I have operational responsibilities, so I took a whole quarter mostly off as evidenced by the lack of technical updates.

But I did the hard thing: I got honest about where Adama actually stands.

Since Adama is exceptionally generic -- a compute-centric data store with storage and reactive networking -- there are many markets to work towards. I scored Adama against industry leaders on a 1-5 scale. Board game infrastructure: 5/5, best in show. Jamstack state service (vs Convex.dev): 3.5/5. Workflow engine (vs Temporal.io): 3/5. Static site hosting (vs Netlify): 2.5/5. Firebase alternative (vs Supabase): 2/5. Document store (vs MongoDB): 1/5. Serverless database (vs CockroachDB): 1/5. Low code (vs Bubble): 1/5.

I'm 100% delusional. But delusion with honest self-assessment is at least organized delusion.

The plan for 2023 crystallized: finish billing, launch as "infrastructure for side projects" to find early adopter developers, and build a "roblox for board games" platform within Adama. Within that platform, ship a single game I can play with friends. Board games are the golden path.

Then ChatGPT showed up and was just better than me at copywriting. I played with it extensively. "Describe an online platform for building online board games?" -- it basically outlined my 2023 roadmap. "Invent ten cards for a dungeon crawling trick taking card game" -- interesting for writer's block, but "Rusty Sword" dealing extra damage doesn't jive (perhaps the sword is better than nothing?). "Sell me a pen" -- generic but functional. It generates lists of ideas well. It's the ultimate writing aid and prompt.

But then: "What woe befalls anyone that uses a WebSocket?" The machine responded with bland corporate nothing. "It is not accurate to say that using a WebSocket will cause any specific woe or misfortune." Well, that's just plain wrong. The machine has no soul, clearly.

The deeper question: what does it mean to be a creator when such power is available? There's a bit of hubris in thinking AI replaces humans. Instead, it will focus humans in a new way. The future of original content may depend on more contrarians producing things the training data can't predict.

I spent time thinking about the metaverse, having worked at Meta and thought much about it. From a technical viewpoint, the metaverse is powered by a single universal game engine and game server -- one runtime for all experiences. The client runtime already exists in a weaker form: the browser. The browser is a solo experience rather than a multiplayer experience. The metaverse application is a multiplayer browser.

But the metaverse needs two networking layers. The first is real-time person synchronization (WebRTC, low latency). The second is a transactional coordination layer -- not powered by your daddy's database either. The "Hello World" of this transactional layer is chat. There's a chasm between hosting a traditional website and hosting a chat application. The metaverse should radically change that cost function.

I believe board games are a representative model of every type of online interaction possible. Building this infrastructure is akin to simplifying the infrastructure for the planet. Time will tell if I'm a madman or something else entirely.

I switched gears toward a new game runtime called Roslin. The philosophy: modern game engines are for AAA games, yet AAA games are exceptionally expensive for an increasingly inferior medium. The important aspect of a game isn't the graphics but the socialization. My competition isn't Unity or Unreal. My competition is a pack of cards and pieces of cardboard. Roslin is a set of composable components operating against Adama's streaming data. Start with a deck of cards (because the first game is a trick-taking card game), add tokens and token mats, and more games unlock as more components are added.

The production workflow separates a board game logic developer (transcribing rules to Adama) from a graphic designer (using design tools to bind data to visuals). The engineering cost is minimal because Adama does the heavy lifting. Data binding at design time is the key. A single person should be able to build an online board game.

Meanwhile, I wrote what was essentially a manifesto about infrastructure for hippies. Are you sick of cloud bullshit? Do you hope blockchain drowns in crypto-bro tears? I'm a cranky old man that aspires to be a dirty hippie. Sadly, I got addicted to these infernal machines. The modern world shreds relationships. We're social creatures and yet we do our damndest to cut connections. Board games are a surprisingly effective antidote to loneliness. Use voice chat plus a game -- that's a good evening. The bare-bone infrastructure is a pack of playing cards and knowledge.

Adama is 100% open source. You could run it in your own cloud, your house, or even an RV in the middle of nowhere. The revolution isn't a weekend affair, but a slow march. Maybe it's my death march, but it's a fun one.

One year out from leaving Meta, I gave myself a performance review. Language: OK. Service runtime: OK. Custom storage (Caravan): good enough for two-three years. Networking protocol: great. Fleet health (gossip): great. SaaS: good enough. RxHTML: needs love around error handling. Roslin: just started. IDE: meh, it's something I can show people.

Compared to some languages, my language is ugly -- just an ugly baby that only a code-father could love. But it does three things your language can't. First, differentiable transactional memory as a superpower -- no "new" operator, memory managed like a relational database. Second, moving beyond the process model where state is a first-class structured citizen, failures manifest as latency blips, and programs can move between hosts. Third, deployment linting across schema versions that warns about one-way doors like truncating a long to an integer.

My cathedral will start to make sense in a year or so. I have faith.