From BASIC to Rooms.xyz

Bruno Oliveira
6 min readMay 22, 2023

--

Growing up in the late 80s, there was nothing quite so magical as a computer. Even unicorns, which really existed for a while back then, were completely ignored and disappeared as our eyes were all glued to our shiny 386s IBM PCs with their 16 colors and dozens of megabytes of hard drive space.

Computers weren’t (yet) like Hollywood or Netflix where you’d just sit and watch content.“Entertain me, machine!” I commanded as I plugged it in, yet it just replied humbly with “C:\>”. What does one reply to this cryptic, yet wonderful exhortation? I was supposed to type commands, direct it, program it. I was supposed to make things.

Discovering BASIC

It was my cousin who first showed me that if I typed “QBASIC” into the “C:\>” prompt, I’d get this:

A screenshot of QBASIC, a BASIC interpreter from the late 80s.
MS-DOS QBASIC

And then he showed me that I could type instructions and then run them, and the machine would do whatever I wanted.

My first QBASIC program. We programmed in UPPERCASE back then. We had to shout at our machines.

What kind of evil sorcery is this? “This is BASIC. It’s a programming language.” I was 12 then, and suddenly I knew exactly how I was going to spend the rest of my teenage years.

Back then we relied on printed books for technical information (the Internet sort-of existed but it beeped and chirped, blocked the phone line and cost a lot of money). I got my hands on a BASIC book that my dad brought from the US. I learned as much BASIC as I learned English from that book (sometimes I learned English from BASIC, like the English word “paint”, which I figured must mean “fill with color” since that’s what the code did).

Every computer game I played, I asked myself: how would I program this in BASIC? Everything I learned in school was an excuse for a little BASIC program. Need to add two numbers? BASIC. Shopping list? BASIC. Organize my room? Sure, let’s do a BASIC program so I can record and retrieve where I stored physical objects (I never actually finished that program, or organized my room).

There was an indescribable joy in creating these silly programs and watching them come to life. I’d make little games or utilities and distribute them to my friends in floppy disks. I think most of them just pretended to enjoy them, but some of them would come after school to sit at the computer with me and we’d work together on making changes to them. Can the player move faster? Sure can. Can the sword cause more damage? Yup, let’s change line 2560. Can the sword actually look like a sword and not like a 1-pixel-wide white line? Er… well... where is your imagination?

Paychecks and stuff

Then I grew up, became better at programming, got hired as a software engineer, wrote more complex programs (but still never organized my room).

Programming became all “serious” and all. Frameworks, engines, algorithms, data flow diagrams, database normalization, unit tests, optimize this, refactor that, reimplement this whole obscure thing in this new obscure framework. It was bewildering that they gave me paychecks in exchange for these clearly very boring things.

Of course I enjoy “serious programming” — I wouldn’t have worked in tech for twenty years if I didn’t! But there was always a part of me that longed to reconnect with that pristine, carefree and fun side of programming, that is perhaps closer to art than it is to engineering. Not just for me, of course, but thinking about future generations of programmers.

3D + Geocities + BASIC = ?

So, this brings me to why I quit my well-paid tech job after 11 years, and went off to build Rooms.xyz with my colleagues Jason Toff and Nick Kruge. Jason had the original idea to allow people to make “rooms” in 3D, to try to tap into the magic of Geocities in the 90s.

Adventure Labs room by juliestrator

Then I thought: what better place and opportunity than this one, to also tap into the magic of BASIC?

There was of course the fear that putting coding into the mix was going to make it complicated or intimidating. But that’s one thing that irks me: why do so many people think code is complicated and intimidating? People who want to learn programming are constantly kept back from it by “wiser” people who think “no, we shouldn’t show them code yet! They will run away! Here, go play with these little visual twinkly squeaky logical blocks.” And then they invent some kind of programming-substitute system that’s full of incomprehensible visual metaphors and weird little wires and colors. Anyone who has tried to do anything beyond the basics in such systems quickly realizes it’s way more limited, and also harder than programming, not easier.

We wanted “low floor, high ceiling”: that is, easy to get started but with a lot of room for growth. So I said: give people real programming! So I embedded the Lua scripting language, and designed an API for Rooms with the goal of making it simple and understandable, but also powerful so people could let their imagination run wild.

The code that makes the ball bounce in https://rooms.xyz/blue

It has physics, sound effects, transform-based animation, messaging, asynchronous calls, etc, all wrapped in what (I hope) is a straightforward envelope. You can “view source” on anything, so people can, and should, look into how things work, copy and paste code from object to object, etc.

Rooms.xyz

Rooms.xyz launched less than a week ago (as of this writing), and we got great press coverage, ignited initially by this very detailed and precise TechCrunch article. I had zero expectations for this product so it was to my absolute delight that I realized that people actually get it, the message came across exactly as we intended it, and it resonates to a level that I didn’t expect was possible.

It’s about the fun of making things, the joy of building and programming. Everyone can come up with something and see it come to life. Everyone is a creator and a consumer. This isn’t yet another social platform: it’s the grassroots spirit of Geocities. This isn’t yet another five-star restaurant: it’s a neighborhood potluck. This isn’t a shrink-wrapped action figure you put on the shelf: it’s a bucket of LEGOs, where everything comes apart and comes back together.

This is for everyone: coders, artists, musicians, people who want to learn programming, kids, fan clubs, people who want to carve out their own 3D space on the web. Make memes, mini-games, choose-your-own-adventure stories, or whatever else you can imagine!

You can even create ChatGPT-enabled characters that converse with the user based on a simple prompt:

Code that creates an AI-powered character that talks to the user.

All these functions (and much more) can be found in our extensive API documentation.

And as for organizing my room, I can now make a 3D version of it so I can arrange the objects optimally, and then I promise I’ll go organize the real one when I’m done.

--

--