Legendary Game Dev Jonathan Blow | The Standup
By The PrimeTime
Summary
Topics Covered
- Rewind Enables Tensionless Puzzles
- Fuse Complete Games for Hypercomplexity
- C++ Baggage Blocks True Innovation
- Benevolent Dictator Beats Committee
- 2-Second Compiles Unlock Flow
Full Transcript
Thank you everyone for joining us to the standup today. We have with us legendary
standup today. We have with us legendary game programmer Jonathan Blow. If you do not know, he is upcoming releasing a game, Order of the Sinking Star. Josh,
play the trailer.
>> Let us begin. Template for Combiner.
North, a world of heroes.
>> Can you charm that goblin?
>> It's too far.
>> I'll swap him out.
East, the mirror is >> Will the mirrors repair my soul? Will I
pass the test?
>> West, endless caverns, beams of light.
>> Nobody else could get this old mind suit working. So, all the rewards go to me.
working. So, all the rewards go to me.
>> Skipping stones to lonely homes. I'm
close to the treasure. Just a few more minutes.
>> If you don't get back before that storm hits, we're both dead.
>> Fuse and grow. We will it. So,
>> who are you? And what are these beams?
They're very useful. Watch this.
>> Can you push a stone back across the water?
>> That's water.
When the portal appeared and I stepped into this overworld, I had never imagined such a device that could fuse realities.
Not just mashing together terrains, it weaves the very laws of nature into a composite hole. The result surprises me
composite hole. The result surprises me constantly. But who has done all this?
constantly. But who has done all this?
And what do they want with me?
>> That was really good. You did kind of nail that.
>> Yeah. Thank you. Thank you very much.
Make sure that that all happened. Okay.
Fantastic.
>> Yeah. Yeah.
Uh, anyways, sorry. And as always with us is Tee DV, >> legendary Tee, and of course, Casey Mera Tori, uh, the one and the only. Thank
you so much, everybody.
>> Legendary game developer.
>> Also, you guys always say that, but then I'm like, what? Legendary for what?
There's nothing. We have an actual legendary game developer with us. You
don't need to to try to hype up the showcast. We're all done.
showcast. We're all done.
>> Thank you. Thank you. But uh it's it's it's great to say that because you got to remember that uh you're legendary in the web development space because you're that one guy that always knows what he's talking about just absolutely ravaging
people on the internet and so you're the legendary game developer.
>> Maybe I also I also heard direct from uh the source that Casey, you're the one who helped come up with the idea for Braid.
>> That's that's not really true. That was
just it was a mailing list. We could
tell the story, John, if you want to tell that story. But it's it's it was it was sort of just like a mailing list argument.
>> Yeah, >> that was it.
>> No, but it is true. So So back I don't I mean whatever year this was, 2002 or something.
>> It was ancient history.
>> You were still at a AAA gaming at that point right?
>> I 2004 in my research, but yeah, something like that. Well, it might have the the actual mailing list argument might have been earlier, but like I was sort of doing a mixture of like contracting for AAA Studios and then
sort of working on my own little games, right? Which often didn't go anywhere
right? Which often didn't go anywhere cuz like many people, I would sort of work on something for a little bit and then my motivation for it would fizzle out or something. So, I was in this mood of like, I want to do something really
cool. I'm not figuring out what that is,
cool. I'm not figuring out what that is, right? So, and then, okay, so there was
right? So, and then, okay, so there was an argument with uh I it's probably okay to name drop some of the other people in the argument. Um, so Casey was in there.
the argument. Um, so Casey was in there.
Um, Doug Church, who was a guy whose career started at Looking Glass on like the Thief games and stuff like that and who still still in gaming today working on some major things.
>> Uh, I think we actually mentioned him yesterday, right? He's the one who
yesterday, right? He's the one who invented Church.
>> Yes, >> he made church numerals actually.
>> Okay. Yeah.
>> Um his his father invented Church >> and Church's thesis also. Yes.
>> Yes. Um and then Mark Leblanc, who's also a guy, if you look up his credits in the game industry, you know, they're substantial. And so they were all just
substantial. And so they were all just trying to figure out, you know, game design of the future. And and uh the original Prince of Persia: Sands of Time
had come out. Not the original Prince of Persia, but the original Prince of Persia remake >> that had like rewind in it, which has also since been remade, I think, which
is why I have to specify that, right?
But so this came out, it did it did rewind for the first time that I recall seeing that in a game. Maybe somebody
else. Anytime you say this thing, >> the Time Sweeper may have had it already.
>> I think that was after, but I'm not sure. I honestly don't know. But
sure. I honestly don't know. But
somebody will be like, "Actually, >> yeah, somebody PC Junior game did this."
>> Yeah. Yeah.
>> What was that?
>> Am I right? That was PlayStation 2, the remake.
>> It was on all platforms. >> It was on everything.
>> It was era, right? It was like the PS2.
>> Um, >> okay. It doesn't really matter. Sorry.
>> okay. It doesn't really matter. Sorry.
>> Whatever with 200.
>> You correct. It would have been PS2.
Yeah, PS3 was not out yet.
>> Hey, is that HTTP? Get that out of here.
That's not how we order coffee. We order
coffee via ssh terminal.shop. Yeah. You
want a real experience. You want real coffee. You want awesome subscriptions
coffee. You want awesome subscriptions so you never have to remember again. Oh,
you want exclusive blends with exclusive coffee and exclusive content? Then check
out CRON. You don't know what SSH is?
>> Well, maybe the coffee is not for you.
terminal coffee in hand.
Okay. So, so it started talking about like, well, this is cool. Uh, obviously
they could have done a technically better job. It was kind of shoehorned
better job. It was kind of shoehorned into the game design and and stuff, right? And and so, but then there was
right? And and so, but then there was also this thing where like you had rewind, but you also had a traditional game where you have lives and like you run out of rewind juice and then you get killed and then your game's over. And it
all seemed very cumbersome. And there
was just this argument about what is the best way for games forward. And one
thing that Casey said was like look this is a technical capability just like you have the technical capability to like rewind a movie back in the days. So a
VHS tape in a VCR was an appropriate metaphor still at this time. So he was like um you know you should really be able to rewind any Yes. Oh wow.
>> I don't even have one of those.
>> That's actually impressive.
>> I have props. I have I have props ready for this. You think I'm not prepared for
for this. You think I'm not prepared for this conversation?
>> Yeah.
>> Come on.
>> So, just like just like you could rewind one of those um this should be a technical feature in games going forward. And other people in the
forward. And other people in the argument were like, "No, you can't do that because it takes away the tension of maybe dying if you can undo anything." And there were points on both
anything." And there were points on both sides of the argument, but everybody was also just like busy and doing their own projects. And so nobody actually
projects. And so nobody actually followed this up with action. And then I was between pro I wasn't even really a participant in the argument. I might
have dropped some side comments. I was
not one of the main people with strong opinions cuz I didn't know. It wasn't
something that I really thought about.
And then I was on vacation. I was like, "Okay, it's time to start a new thing.
What if I do this rewind thing and then do it?" So both at a technical level
do it?" So both at a technical level that's goes to the core of the system.
So it's built into the game. it's not
like shoehorned on to to reverse state on on some other system that that it's fighting with, right? Um and then also just design the game design around it.
So if people are saying uh it removes the tension of dying or Okay, so we're just not going to have that in the game.
Let's see if we can replace that with something else that's uh a different kind of interesting than cuz you know if you play a bunch of games and all these games are about I'm worried that I'm
going to get killed by a monster. They
could have different moods and graphical styles and stuff but at some point you're playing the same thing over and over and the mindset. So I had been doing this thing at the game developers conference called the experimental gameplay workshop where we just try to
think every year about look at examples of things that people had done that were different and new and be like what can I do that's different and new and so I was like okay let's just do that and just see where it goes and yeah that's how it
started >> and long answer sorry I'm I'm known for long rambling answers so >> this is the standup okay if there's anything that's canonical about all standups it's that there's someone that
always has a long answer and that this is a good Yeah, >> I will make it I will make it worse by saying the reason that I had made that comment on that mailing list in the
first place was because I was playing through some old games from the Nintendo Entertainment System and I was playing
them on an emulator and emulators even in that era had added the ability to like fast checkpoint so you could kind of just like you basically could rewind.
I don't remember if the emulator that I was playing had literal rewind, but it had the ability to just like whail on a button as often as you wanted to just save your state. So every time you like walked into a room of something you
could just save. And I was like, you know, for playing through these games, that's actually a lot more satisfying because it's like I can control how much replay I have to do of this game. And it
just made it a more pleasant experience to like experience the game honestly.
So, uh, that was why I even posted it.
That was that that was it.
>> Casey, you're clearly outing yourself as not a real gamer right now because obviously real gamers would >> save himself right there. Well, not not
really because the most the most nerdy I mean I I'm saying this as a joke obviously, but like the most people who sink the most time into games are like the tool assisted speedrun guys, which
like that is not fun at all.
>> But they also produce the absolute most hardcore speedrun of a game that you will ever see. Right.
>> That's true.
>> So >> I was just I was just on my way to tool assisted speedrun, guys. Like
>> invented the tool assisted speedrun.
unfortunately got hit by a build system he wrote for C and just never quite got the tool assisted.
>> I don't see the problem. It's fine.
>> So anyway, >> so that Yeah. Well, so that's that's actually good because that kind of leads into one of the first questions I was hoping we could talk about like cuz I know you know a decent amount about sort
of how you got started thinking about braid and a little bit to the witness.
I'm interested to know sort of like how did you get into thinking of the idea of your upcoming game and like we'll we'll get there of course but like obviously we want to talk about your language and
like making an engine and a bunch of other stuff there too.
>> Uh so I'm interested to hear like >> when when those decision points happened when you're like I think it's time to just write a new language for this game.
>> Yeah. other way around. I think
>> it's time to write a new game for this awesome language is what you're trying to say >> a little bit.
>> Well, yeah. I mean, the the idea for the language came before I decided what game to use it on. For sure. I don't know which which order should I answer these questions in.
>> Let's start with what motivated you for order. uh because the big thing is that
order. uh because the big thing is that we're just going to go to very technical so it's very good so that most people that are listening can have a chance to understand more about you and your decision-m process and then we can get into >> so we're going to talk about the the
design idea and stuff to ground it I guess. Okay. So, you know, usually every
guess. Okay. So, you know, usually every time I finish a game, it leaves me with interesting ideas to do in a follow-up game, but the the follow-up game usually is really different from the previous
game because that's just how it like if you start with the actual idea that you want to do, then different forms of game mechanics or structure or whatever might do that idea better. Whereas I think I
think a lot of the game industry likes to do sequels just because it's safe commercially and all that, but I've like literally never done a sequel. So, um,
in The Witness, um, it's this game, uh, that came out in 2016, so quite a while ago.
>> Um, and the the way the game starts is you see these puzzles. They're like
little iPad screens mounted in the world really weirdly. And um you can trace
really weirdly. And um you can trace lines on them and there's little symbols like in these grids and stuff and you don't know what the symbols mean like and the game doesn't tell you and you figure out what they mean just by
experimenting and being an intelligent puzzle player you slowly build up this idea of what these symbols mean and then at some point there's curve balls like oh wait
there's a surprise where it does kind of mean what I thought but there's something deeper about the way this puzzle symbol works and that's sort of one of the fun things about the game.
So, I really like that part of that game and that design process. And so, after I was done, I was just really interested in this idea. So, so when I'm designing
the symbols, right, at first I was just like, what are some interesting rules that I could attach to these symbols that would make interesting puzzles? But
then, as I charted out the game ahead of time in my head before building it, I'm like, okay, the interesting part is going to be when we make these combinations puzzles with the symbols
coming together. And so we want them to
coming together. And so we want them to come together and generate surprise. So,
so like one example, um, not to spoil too much of the witness is like, um, uh, okay, there's these little uh I just thought of them as ghost stones
initially, but they're like rounded rectangles, and you have like black and white stones in the beginning, and you're just trying to group them with the line, and then eventually there's multiolors, and you're like, "Oh, this could apply to any color." And then when
there's other symbols, the color of the other symbol matters. And it's not just it's not just grouping those things, it's grouping them with anything of that. So the your idea of the rule like
that. So the your idea of the rule like expands over the course of the game, let's say. Okay. So I just became very
let's say. Okay. So I just became very interested in this um in this idea that uh
what game designers do in some sense uh for any kind of game, not even just puzzle games, is they come up with these rules. But the rules aren't just like
rules. But the rules aren't just like there are fundamental things that the rules have to do. Like if they result in a broken game that doesn't run, that's not playable, right? If they result in a
very boring game that you don't want to play, that's really bad. But then, you know, at some point like a good game is when the rules are designed that they create emergent complex situations out
of simple beginnings. And the reason that works is because the simple initial ideas is what can go in your mind and and you can understand and can be communicated to you effectively. But
then the surprise and the revealing of new things is what keeps you playing because you haven't seen everything yet.
There could be more that you could get out of this experience, right? And the
thing that I realized about that though, so there's there's other this is not just my idea about game design. So there
was a very famous I think it was like Kim Swift at GDC talking about how they designed Portal or something and they do this thing where they put a spreadsheet and they say like here's all the object
types and you could put an X in the spreadsheet cell. Uh I'm bringing it
spreadsheet cell. Uh I'm bringing it back to standup style, right? So we got spreadsheets. Um you put an X in the
spreadsheets. Um you put an X in the spreadsheet cell when objects interact with each other's type and then you want that spreadsheet to be like full of X's or whatever, right? M that's that's an
oversimplified way of talking about it but you could imagine that right >> um so the thing is game designers don't
actually know why that works okay so it's like we can come up with rules and design them so that they'll interact but
like what like why do they actually interact like what's the engine in the universe that makes things interact and generate complexity, right? And this is something that you see um in mathematics. So, you know, if you look
mathematics. So, you know, if you look at like the the Mandelro set or something, you any kind of fractal, you have a very simple equation that when iterated blows out into enormous complexity that you didn't expect there
or like Steven Wolf stuff, he has all these very simple cellular automa, right? So, there's something about the
right? So, there's something about the universe that does that. And we game designers don't actually make that happen, right? It's like we're we're
happen, right? It's like we're we're exploiting an underlying phenomenon about reality that we we don't stop to think about anymore because we're too busy actually making games. So, I wanted to make a game that was about looking at
at that very closely. And part of that was like, okay, instead of starting with these simple puzzle symbols, what if the ingredients in the soup that we're going to mix together are themselves games
that are already fun and complete by themselves and then we'll mix those together and they'll blow up into like a big like hyper reality with way more dimensions than you would usually get.
So, here's the other thing. If you're
designing a game, you know, at first you just have some idea and it's usually not as good as you thought. it's like not as fun as you thought or whatever. And so
you implement the idea and then you start adding sophistication to it or like oh this thing happens that I don't like. Let's change the rules to
like. Let's change the rules to disincentivize that or whatever. And at
some point you iterate on that enough to where it's fun or or you lose out on the game of game development. But assuming
you succeed, you get to the point where it's fun and then you ship the game because it was so hard to get there that that's basically all you could do, right? And so what happens is games sort
right? And so what happens is games sort of have converged at a certain level of complexity of game design, right?
Because the process of making them is always iterating up till you reach that and then and then shipping it. And so
this was also a way of trying to force ourselves above that ceiling that everybody hits about how complex is the game in terms of the amount of interactivity because we're starting with things that were already in that
zone and then mashing them together and having you know >> um I don't know it's like if you if you have a vector and you do the outer product with another vector you get a
square matrix right for the math people.
And then you could outer product another vector and you get a cube and then you get like a four-dimensional thing. And
so we have kind of this four-dimensional space of games >> interacting with each other. So that was that was the idea >> and that's like the you don't have to give any spoilers, but that's like the
four different kind of like lands that we see in the trailer and everything.
And each one >> so like the idea is if I'm understanding correctly, each of the like four islands I think you called them or something like that, right? Is like its own. It
could be its own game. Effectively,
>> it is its own game. In fact, when you start playing them, they're completely separate from each other and they they have separate characters, >> separate stories, and separate game mechanics, right? And then later on, um
mechanics, right? And then later on, um we show this in the trailer, so it's not that big of a spoiler, but um >> later on, you know, some dimensional combination things happen and the games
then come together and you start playing with the magic mirror from this game, you know, with like the monsters from this game or whatever. and and you see
how those rules play out and and yeah, that's the fun part or really the whole game is the fun part. But yeah,
>> so uh I wanted to throw one thing in here just because uh to the extent that I have anything to contribute to this podcast, it's like digging into the back
catalog that some people might not know about. Mhm.
about. Mhm.
>> Would you say it's worth talking a little bit about Raspberry here? Cuz I
kind of see that as sort of like an early experiment with a different sort of like a continuous version of this that you didn't decide to make it to a full game, but it kind of feels a little similar.
>> Yeah. Okay.
>> Could you give a little background on what Raspberry is?
>> That's what I was prompting. Sorry.
>> This is something you could actually download the old version of. There is a I actually worked and never re-uploaded.
I have a much more sophisticated version of this game, but you can download the one. I made Raspberry and a couple other
one. I made Raspberry and a couple other prototypes while I was working on Braid.
I was feeling burned out like two years into development, and I spent like two months just working on other side projects. Um, if you search for my
projects. Um, if you search for my homepage, I still have some like handcoded HTML thing that I barely don't really maintain. Like every seven years,
really maintain. Like every seven years, I'll go and like tweak something, >> put under construction on it, who >> I never did. I never had the guy with the little pickaxe or whatever.
>> Marquee tab.
>> Um but but there's a game prototype on there called Raspberry. It only runs on Windows. Sorry. Um and so the idea
Windows. Sorry. Um and so the idea behind this was a little bit different, but it was about combining game mechanics. And I didn't I didn't think
mechanics. And I didn't I didn't think about it this way, but it was like, okay, what if you made a game where you tried to use game mechanics like music where you have you'll have one interaction that's like you're trying to
click on things or something, right? and
you have another interaction that's like you're trying to dodge things and what you could imagine some number of very simple things like that and then like in a song you might have like drums come up really loud for a little bit and do
stuff and then you'll have you know guitar come in or whatever and and sometimes you have everything and sometimes you have one thing um it was about just composing these gameplay
interactions in that way over time and it was a good experiment what the conclusion that I came to was you can't exact actly do that
in the same way that music works because game design is like fundamentally a little bit lower frequency in the sense that the rate at which your brain can track the changes in what you need to do
has some maximum rate before it just is not that fun. Um, but it did work in the sense that like, oh, this is kind of cool and interesting and maybe I should
ship. I mean, I would have to dig it out
ship. I mean, I would have to dig it out of source control and compile it again, which oh my god, compiling a C++ program from from 15 years ago is difficult, but
>> uh, you know, um, >> yeah, that that was that was related.
So, it I think it goes to show that I've been thinking about this kind of thing generally for a long time.
>> Yeah. would compiling a JI program or a J program or the language program in 15 years will that be a challenge or will that >> Well, it depends. So, part of the reason we're keeping it in closed beta right
now is is to give ourselves the permission to change things in a somewhat incompatible way. But because
there are like a thousand people in the beta now, we still try to smooth it out.
So, like what what I'll do is I'll say, okay, this feature is going to get deprecated and replaced by this other feature. So first we implement them both
feature. So first we implement them both alongside each other, right? Then a
month later this one gives you a warning when you use it, right? And then a month later it gets deleted. But
if you take a year off and come back, you might have missed that and now your program just doesn't compile, right? And
there's information in the change log about why. And sometimes we can even
about why. And sometimes we can even leave error messages that say, "Oh, this isn't how it works anymore." Mhm.
>> But yeah, so um now there's different levels of changes that are different levels of severity and stuff, right? But but what I would say
stuff, right? But but what I would say is okay. So the reason we're doing that
is okay. So the reason we're doing that is because of my experience with languages like C++ where they had a lot of ideas early on about like what would be really cool ideas and make
programming better and a lot of those ideas are very inaccurate. there were
other things that they really should have done early on like um that C didn't really do and not to blame C but like in
the days of C it didn't make sense to think in a very clear way about integer types let's say because there were just all sorts of computers with all sorts of different word sizes you didn't know what was going on and like all these
things but like now it's like it's pretty obvious that like if you have an unsigned 8bit number that'll fit into a signed 16- bit number, right? If you
just and that should implicitly cast, but if you have an unsigned 16- bit number and you put it into a signed 16- bit number, you maybe should say that that's what you meant to do, right? And
it it eliminates and like they didn't they weren't thinking about that kind of and not even saying that that's exactly the right decision that you should make, but it's like a a clear >> it's a clear idea that should have come
up, right? and they just weren't
up, right? and they just weren't thinking about that stuff and they had all these other things that they added to the language and um and the problem with C++ now or one of the many problems with C++ I would say there are two core
ones that drove me to to make a new programming language one is that C++ is completely saddled with almost all of the baggage of almost every idea that was ever introduced and there's no
there's no way to deprecate things right um so that's a problem uh and so that makes the new features worse. So if you actually have a better
worse. So if you actually have a better feature that actually will help people, >> it actually doesn't work as well as it should and it's harder to implement and slower because it has to interoperate with like all this crust that's like built up over time, right? And so
there's a lot of things they just can't really do. Like I haven't tried to use
really do. Like I haven't tried to use the modules feature. I don't I sort of froze my C++ usage at C++ 11 and even only some of C++ 11. Like I do, you know,
probably less severe than like Casey, you actually use C++. You just don't use most of the features, right? But
>> I kind of gave up on C++ features a while back.
>> Yeah. But but like Sean Barrett didn't even use the C++ compiler forever, right? Like he was using the C compiler,
right? Like he was using the C compiler, which was not maintained anymore, but he was like so much faster than the C++ compiler.
>> Same same with Jeff. Jeff Roberts still to the I believe to this day when he has his own stuff if he doesn't have to interoperate it's a C compiler only >> and like you can't so in that dialect of
C the last one that Microsoft made this compiler for you can't even like declare a variable in the middle of a block right like >> only at the top
>> it's bad like original C was really different from modern C actually >> yeah modern C has like added a bunch of those conveniences in now so it doesn't feel that clunky you can you can In
modern C, are we talking like 89? Are we
talking 99?
>> Well, I I haven't followed anything since ANC, right? I know there's like C99 and stuff. I don't know what those features are. I don't care
features are. I don't care >> really. just mean if you go download a C
>> really. just mean if you go download a C compiler today, whether it's Microsoft's or uh or Clang or you know uh GNU,
they now all have things that you would have been very happy to have way back when like including like how like a for loop might get scoped for variable
declaration or how you would uh whe whether you could use declare anywhere, those sorts of things. We they didn't have any of that, right? you had to put all of your variables at the very top of the function and all that sort of thing,
right? That was still the the that was
right? That was still the the that was still the norm in like you know the year 2000.
>> So K and RC when I was in college I was learning C and there was this shiny new book that said ANCC with a big stamp on the front but in the used bookstore they had a book that looked almost the same.
It was the same like C programming language book without the ANCC stamp.
And I was like that's pretty cheap. I'll
learn from that book. And that was the KN&R version of C. And so I was using compilers at school that could do the newer C stuff, but I didn't know that.
And so in KN&NRC, for example, >> if you're going to call a function that's in another file because you're organizing your program, you don't declare the arguments of the function.
>> Just whatever you pass to that function, the compiler says, "Sure, that seems fine." Right? And so then you spend all
fine." Right? And so then you spend all this time debugging cuz like you passed a double instead of a float or you forgot an argument or whatever and you you just crashed at runtime, right?
There was no static type checking on external functions. So that
external functions. So that >> that feels like my experience with elixir. I did this very regularly, tried
elixir. I did this very regularly, tried to pass things in and getting the wrong types constantly.
>> Yeah, it's exactly what you need when you're just trying to learn, you know, it's >> well I mean we say this, but like welcome to JavaScript, right? like like
fast forward to today and like a very standard programming language is still in the state where it's like yeah I don't know you just pass something and >> whatever you want man >> whatever you pass is what gets passed
and good luck >> I mean to be fair most modern JavaScript they use you know TypeScript which alleviates a good portion of those problems there's still the problem of outside objects coming in you have to
literally hand validate them with some sort of runtime checking >> to prove that they are what they are >> are you Sure. Most is true here though.
>> It's like it's like all like 75% of new projects or it's like some decently good number these days. But
>> that's that's nice. That's nice for the youth today.
>> That's nice that the web finally figured out about types.
>> My favorite part still is that we do take we take a language that cannot be interpreted and turn it into a language that can be interpreted and we call compiling. It is like we in a very weird
compiling. It is like we in a very weird world in that side of the universe, but it's very fun. All right. So I want to actually steer away from the I love the C++es and well actually I don't I actually genuinely hate it but uh
>> this is great discussion all but I actually want to focus on kind of a question with Jai >> sure >> and or Jay do by the way do you call it the language Jay or Jai >> yeah I don't pronounce it >> or John's artificial intelligence
>> so I have an allergic reaction to one of the so I'm very frustrated with the quality of software broadly speaking right and part of that is the culture of what are people thinking when they sit
down and make software And there's a pattern that I noticed that bothers me that doesn't seem to bother a lot of other people, but both in academia and industry, if you read an academic paper
that's about somebody's algorithm, right? Um
right? Um there's a very classic form which is they put the cool name of the algorithm that they made up like the marketing name colon and then they tell you what
it means. And hacker news posts are the
it means. And hacker news posts are the same. Like Django poop colon um a thing
same. Like Django poop colon um a thing that converts all your comments in JavaScript to uppercase, right? and and
like they come up with like the seemingly this is my cool project name for like something totally stupid and it's like all the effort goes into
thinking about the name or like thinking that if you make a really neat name then then you've passed some hurdle of being
a a contributor or whatever and you know meanwhile I'm trying to implement this algorithm from a paper for example in a video game and like realizing that it doesn't actually work
and then sometimes under very strict deadlines where I suffer greatly due to this and just it really frustrated me.
So, so this was just like a code name that I made for this language. I don't
ever use it. We don't market the language. I don't have a logo for it
language. I don't have a logo for it which is another thing that people make like first before um you know and even when it comes to language syntax um like if you start talking about what
languages should a feature have people will talk about the syntax because it's it is the most concrete and easy to observe thing but it also kind of doesn't matter that much. I mean it does
matter at some point like in the end once you finally have a tool that you're like this is the thing I'm going to use daytoday for years then small amounts of friction do add up and they really matter right but the problem is that if
those are the main things you're concerned about when you're designing a new language those are relatively shallow problems that you're preoccupying yourself with and and what I found okay so let let me
get back to this other thing that you sort of asked at the beginning which was like why did I make the language Part of it was I was sitting there using C++ every day. So Casey visited in these
days and worked on the witness and we had both an annoying like asset processing pipeline for the game which I won't explain that right now but it's like you know crunching the data that's going
to go in the game sometimes would take too long. Uh and and that slows down
too long. Uh and and that slows down your your work process but also just compiling the game was really annoying.
it would take like a couple minutes, which doesn't sound that long, but it like really breaks your flow when you're trying to think about stuff. And it was only a couple minutes because we spent a lot of effort trying to minimize the C++
suffering about how long things take.
>> And so, so I was like, I have all these problems. Like I I was kind of sad and depressed working on this game, even though it was the best thing I had ever made. And it was clear that it was going
made. And it was clear that it was going to succeed at some level. I mean, who knows about commercially, but like artistically, we had at that point succeeded in making a good game. We just
had to finish it, right? And and I was still bummed out going into the office every day just working on this thing and I was like, okay, part of this is the programming language and part of it is the asset stuff. And the asset stuff we
can look at next time we make an engine.
The processing uh the the programming language though I would go online and look at what are the conversations people are having because like there's a C++ committee, right? And then there's there's other
right? And then there's there's other people making other languages and like why what are they saying is their motivation? And I would look at the
motivation? And I would look at the problems that they say that they are solving and they had very little to do with the problems that I had from day to day that was making it hard, right? And
and the thing is like when you're working on a smaller program or you're working on uh or or you're a new programmer, right? You feel like there's
programmer, right? You feel like there's certain things that are serious problems, but actually when you get more experience, you're like, "Yeah, yeah."
like you don't really make that many syntax errors when you type later. But
if you're a new programmer, you're like syntax errors are really I'm drowning in syntax errors. This is obviously a big
syntax errors. This is obviously a big idea.
>> Why? What? Yeah.
>> Yeah. Now, it is true that better syntax error messages can help people learn really fast, but that's not like a deep.
So, so what I found was that once and I think this is obvious once you say it, but like once programs get past a certain size of code and or because it's
like some kind of product function and or a certain complexity of like the internal data and how it has to be arranged and like you know what the structures look like and what the
constraints are. Once it gets past a
constraints are. Once it gets past a certain point in complexity, it's just hard to work on the code because it's hard to understand everything and see everything and and just know what's going on. And that's kind of the
going on. And that's kind of the bottleneck is that it just gets complicated. And so that's what I wanted
complicated. And so that's what I wanted help with was like code that just gets really complicated. And I was looking at
really complicated. And I was looking at what people were talking about and they just didn't didn't have any of that as a concern. And then the other thing it was
concern. And then the other thing it was compile times because >> can I can I inject one thing there too like uh >> when you look at like the biggest thing that frustrates me when I've looked at
things like C++ uh committee discussions or how they go about like deciding what and how to put in the language
is the the mindset in my opinion when you're designing a language has to be that we are trying to make the best possible system for the working
programmer. Like the person who's going
programmer. Like the person who's going to sit down and is trying to get their job done that day. That is what you need to unless you are making like if you're making some abstract like you know like
ML or something like this or lisp and you're making you're intentionally going down that road to make a theoretical language then that you do whatever you're trying to explore. That's that's
your thing and that's fine. But if
you're like the C++ committee, your job should be to focus on what is going to allow the working programmer to have the tools they need to succeed every day, right? But if you actually look at the
right? But if you actually look at the way that they make decisions, it's almost all about weird esoteric theoretical things. Like they are never
theoretical things. Like they are never they will never go like, okay, well, we have to make this thing work because this is what would actually be effective in day-to-day work. So, we'll we'll go
and we'll deal with ugliness in the theoretical realm or something as a result. They will never make those
result. They will never make those decisions. And it always ends up feeling
decisions. And it always ends up feeling a lot like, you know, you you're you're in some like rundown like dilapitated shack and and someone's like, "Okay,
we've got this beautiful mansion that we're going to move to." And they're like, "Whoa, whoa, whoa, whoa, whoa. We
can't move to that mansion. I planted
this tulip bulb back at the shack and then we I don't know how we're gonna move that. Right. And like literally
move that. Right. And like literally like you're reading like I'm like what?
Like you guys like you guys decided you can't do any of these things in the good way that you would have done them because of this one little thing. And
like like no like this is why the language keeps getting worse. And so I do think like there's this there's in some languages they've they've calcified this very academic process for like
moving the language forward and it always results in substandard features over and over and over again. Um so
anyway >> and can I also say it would it does feel a little bit different too if it felt like I mean we already made the joke about it being impossible to build an old C++ project. It'd be one thing if I
could pull any C++ project out from any time and they're like, you have a random one from 1997 you can compile.
>> But I feel like I never So it's not even like you're getting this feeling of like, oh, I have this rock solid thing I can always build. It's like we're going to keep all the features around, but you
still can't build it. Like what?
>> You get you get nothing from it. Yeah.
So anyway, that's like the history of all of computers really is like there's these stated reasons why things are the way they are. we need to do it this way to get this benefit and then you actually ask if you get the benefit and
it's like well we get 5% of the benefit.
>> Like no not really.
>> So a question would be is is that a design by committee problem because John you're like you're effectively the decider of the language. You're the
benevolent dictator of it.
>> So do you avoid a lot of those problems because you look at the tulip and go I'm just playing with the new one. Like you
can just make that decision. You don't
have five people of the 10 being like that tulip is life. I cannot let go of the tulip. like you don't have to make
the tulip. like you don't have to make those fights. You can just say no, this
those fights. You can just say no, this is the way. It's the best way.
>> Yeah. Um what I would say that the problem still occurs even if you have a benevolent dictator because you do want to listen to your audience a little bit at least as part of a grounding like so
even if you think you have the best ideas and nobody else can have better ideas which is not usually exactly true.
You still need to listen to people to know like, okay, I have an idea that doing this feature this way will help a certain class of program. There's people
out there writing that class of program.
They can tell you if that feature actually did what you meant it to do or not. um you can't quite do all of those
not. um you can't quite do all of those yourself because you like I said the the real problems happen when you're like deep in a very complex program and you can write like little demo programs to
test your features out and stuff but you just don't have enough human life years to like write all these super deep programs. So you need to talk to the people who are using your thing and they're going to have all different opinions about what you should do and
you need to just like not listen to some of them. Like that's that's simply how
of them. Like that's that's simply how it is because if you listen to everybody with an equal waiting it is equivalent to design by committee and so you just
have to say I'm sorry it's you know for some people uh it's not that you necessarily have a worse idea or anything like that but this language has to pick a direction to go and it's just
not that direction and uh maybe a different language could go that direction right and it maybe that's better like we're just you know you're doing some hill climbing process right where hill climbing is this thing in computer science where you start out on
some landscape and you just >> you only can look nearby probably and you just go the way that seems the best >> but you don't exactly know and this is an entire class of algorithm in
computers, right? And so you're kind of
computers, right? And so you're kind of doing that but but you have to if you listen to everybody you'll add up all these vectors that point in all these different dire directions and they will sum to zero and you will not go
anywhere, right? And and so that's a so
anywhere, right? And and so that's a so you just need to be willing to be a little bit like not even exactly disagreeable because you don't have to argue with people or anything but it's just like look that's just I appreciate
that you want this thing.
>> It's just not what we're doing here.
>> You have to have conviction.
>> Yeah. Something like that doesn't have to Yeah. Yeah.
to Yeah. Yeah.
and an ideology, right? Like here is what we're trying to accomplish that that includes some things that you will take seriously and some things that you will just decide we're not going to do
like right you if you tried to do I mean C++ also has a little bit of that problem where they don't have a strong idea of exactly what we are trying to accomplish at the end of the day right
>> everything and nothing sort right like they they all it's everything and nothing somehow right and and so you know it also pays to have Separate from design by committee or not, if you're going to have a committee design things,
it helps to have an overriding idea of like we are trying to get the language to this place and accomplish this thing so that we have like a guiding principle. Like I said, like make the
principle. Like I said, like make the working programmer's life easier every day or something like there's something like that that you could point to so that somebody on the committee can argue, look, we're just going to have to trash the tulip because we really need
like this mansion is going to be so much more helpful for everybody and we need it to be good or whatever. Anyway, I
interrupted John when he was about to talk about compile time, so maybe we can jump.
>> Oh, yeah. Well, that that so there are there are friction things and so when people talk about like, oh, the syntax needs to be good or whatever, they're talking about the minute-to-minute pleasure of using a language and for
some reason people focus on that and then, you know, it takes 2 minutes to compile hello world now and it's like what what happened? How am I supposed to have a thought process? How am I supposed to develop when it's like so
painful that I just sit there and wait to see what happens? And so that was an emphasis from the beginning. Also,
because I come from the world of video games, like even a video game 10 years ago did an insane amount of computation in one frame. Um, especially on the GPU,
which is a highly specialized, very parallel thing. But even if you factor
parallel thing. But even if you factor that out, the amount of stuff that a video game does just to figure out what to put on a screen is very high at a very high rate. And
it's because that was just like the fitness function under which the industry evolved. People wanted games
industry evolved. People wanted games that rendered smoothly and looked good, right? And like for some reason, no such
right? And like for some reason, no such fiction fitness function exists in programming languages. There is one, but
programming languages. There is one, but it's like it's something about how cool of an anecdote can you post on hackeros or something, right? It's like not it's not really to do with usability. I mean,
at some level there is. I don't know.
It's complicated. But um
you know uh so so looking at these compilers I was just like look I've written compilers before never as serious as this one but like in college >> I wrote like 12 instead of doing my
homework and doing classwork. I wrote
like 12 compilers for different languages. And so I knew how it worked
languages. And so I knew how it worked and I knew what they were doing under the hood. And I was like it's way less
the hood. And I was like it's way less computation than a game does actually >> and so it should be really fast. And so,
um, you know, part of the goal was to just try and fix that. And because, you know, we're we're decently, we've done a pretty good job at that. Um, so our our
300,000 line game uh does a full build, we don't have incremental builds because that's in my experience another source of bugs and confusion. Like even the more you have to think from minute to minute about what are all the different ways that a thing might be building and
which one is selected, right? It's just
another roadblock. And so it's just like look, it's a full build all the time.
>> Right now that takes about two seconds for a debug build. Um, which is longer than I wish it was. I I wish I I feel like it should be like a quarter of a second.
>> Um, but you know, we've reached the point where >> with the team size that we have, it's it's hard to push that number down without concerted effort. And we're
still trying to ship the game and all that, right? Mhm.
that, right? Mhm.
>> But that's still um you know a lot of these other languages that have been made in the past 10 years, how long does it take them to compile a 300,000 line program? Like way way way longer.
program? Like way way way longer.
>> And it's just due to like decisions that are made about how the language works.
>> Yeah. 2 seconds is a lot less of a temptation to pull out my phone and forget everything that I was doing than 2 minutes or 20 minutes.
>> It's like just short enough because if you turn around to do anything, the prompt will come back up, right?
>> Yep.
>> Yeah.
>> It's actually like 1.6. Personally, I
think it's really impressive. 300,000
lines for 2 seconds. In modern
development, that is genuinely unheard of.
>> Cuz you know, even in my personal uh what's it called? Interpreted languages
as of recent, it often takes more than two seconds or significantly less lines.
So this, you know, it's a >> that is actually uh in modern sense a very impressive feat.
>> Yeah, this so that's something that our beta users enjoy, you know, significantly >> is that sped up iteration.
>> I know we've got a a hard stop. I got a few last quick questions for you if if that's all right. So,
>> sure.
>> Uh they might not be they might not be quick so then you don't have to answer them too. So, we'll just
them too. So, we'll just >> one word answers.
>> All right. Okay. Um
>> good cuz I got some too.
>> All right. Here you go.
>> Uh do you think that uh AI is going to save the games industry by forcing RAM and GPU prices up so high that people actually have to care about performance?
Interesting take.
>> I'm not sure. Okay, we'll we'll not try to one more word to answer that. Here's
the thing.
>> You can also include web development as well.
>> Yeah.
>> Well, yeah, I don't do web development much uh ever. But um like so, so this is a problem. Like games for a while was
a problem. Like games for a while was known as the place where there were still a lot of really good programmers because we were like forged in this fire of really difficult stuff. And
>> that's become increasingly untrue. I
think game programmers are like reverting to the mean and so it wouldn't be too bad. Uh I don't think that like I think things are going to adjust and RAM prices are going to come back down pretty this is just a short frequency
trend like like all of these.
>> Yeah. Yeah.
>> But yeah, >> Prime, you want to ask one? We can
alternate.
>> Yeah. Uh uh common wisdom says or at least common wisdom on Twitter, so it may not be actually wisdom or common. uh
it suggests that you should be making a game and getting it out fairly fast and and you know making sure your concepts are good and getting it in front of people and all this kind of stuff. You
shouldn't go and hide yourself away for many years to build one game. Uh you
obviously having the time to build a language, build an engine, then build a game 10 years total. Why did like when do you make that decision to say no actually taking your time, taking the 10
years, taking the 5 years, this is actually the more superior choice? Like
when do you know to make that decision?
>> For me, it usually happens gradually. So
all of these projects I would have envisioned being shorter. Like this game was supposed to be the proof of concept game with like a simple engine just to prove out the programming language and it turned it I just always want to do a
good version of everything and then pl I don't know there was like a lot of weird stuff that happened over development that I won't go into about like what different people on the team want and things. And
things. And >> Mhm.
>> So we ended up making an engine that's actually more sophisticated than the one for the last game when we we I was hoping for simple. Um but but it means
the game looks really beautiful and uh >> yeah but but here's the thing. So so I think that that advice that you said is the right advice for someone new to
games or just projects generally. Like
if you have never shipped anything before, you should not spend 5 years in a back room doing something cuz you're just you're going to be miscalibrated.
You're going to be slow at what you're doing. You're not going to have the
doing. You're not going to have the right amount of experience. And so
being quick early is a good way to just iterate and learn, right? However,
somebody's got to be working on really whatever you want to call like moving things forward and not just trying to release something and make some money.
Like there there have to be adults in the room somewhere who are worried about actually improving life in some way. And
sometimes that's just really hard. If
you could find a way to do that, in fact, there there almost always is a way to do that that's actually small and incremental. It's just that's not the
incremental. It's just that's not the way that I think apparently. Um but but for me it's a lot more about motivation.
Like if you can yeah however long it takes to do something that's genuinely meaningful is how long you should take.
If if that's your lot in life and that's different from the guy who's like I just I'm supporting my family by having a job. That's cool too. That's totally
job. That's cool too. That's totally
fine. But we need we need some percentage of people who actually are trying to like lift up the quality of things otherwise it it'll just be an eternal slide into
into a pit that we never get out of.
recently also that oddly enough there's been some examples of these kind of long gestating games that I think might have also been first times like I want to say both >> blueprints was like seven >> blueprints and animal well I don't know
if animal well was his first though were both very long just gestating single person or close to it games >> yeah and and so I if you think you know >> and they they sold fant they were very
very popular right so it's it's kind of hard to guess what's going to happen I think you just >> it's nasty >> I mean the thing that we don't see is how many of those did the same strategy and they just weren't
>> they just didn't have the best idea or whatever. I I don't know.
whatever. I I don't know.
>> Yeah.
>> Any advice for people balancing CEO of game studio and someone who wants to be programmerdesigner?
>> So the way that I do that is by not CEOing very much. Um because as you know programming takes a lot of time and game design also takes a lot of time. Um,
>> so one thing that I'm doing this time that helps somewhat is I did sign this game with a publisher. This is the first time that we ever did that. Part of that was to get additional funding to help
finish the game, but part of it was um just like they have a whole infrastructure for like doing stuff that left to my own devices I would do but not as well. So like marketing the game
like they're running ads for the game right now. I wouldn't be running ads for
right now. I wouldn't be running ads for the game right now. and like all these things just like so we're kind of delegating some of that to this other company who now also has a financial interest in the game succeeding and all
that and so >> I think that's good. I never I don't like want to run a business that's never been my motivation but >> I have to in order to
>> uh be able to do what I want to do cuz like nobody's going to pay you to do some weird thing that they don't understand. Um now in in the earlier
understand. Um now in in the earlier days the game business was easier and so I could kind of be a little bit more um uh just lack of dasical especially like
when there was no team it's just me working on braid and like with occasional contractors it's a lot cheaper and it's like you can just make whatever decision you want and it doesn't matter that much. Now there's
like a pretty serious burn rate and there's people and like so I have to balance this like we have to stay in business and not be like constantly losing money year after year. But at the same time, if you turn into generic
business making generic product, that's also bad because it's not what I signed up to do. And it all people are not motivated by that because there's just a bunch of the same slop out there, right?
And so it's actually kind of hard >> and and the past couple years we have survived the massive slaughter of 2023 to 2024 that afflicted a great amount of game industry.
>> Yeah.
>> Uh so we'll see.
>> Um cool. All right. So, I don't know if you've answered this one anywhere. I
could not find it. You don't have to give us an answer if it's still kind of if it's a secret, but why did you call it braid?
>> Some of these things are just creative decisions that happen at a relatively deep level that I I don't like to explain them >> because sometimes the the magic is in the
non-explained things. And so I'll just
non-explained things. And so I'll just say it's part there's some kind of the idea for the game involves like a mood and a feeling and like a texture and
that was just part of it. And um that's all >> cool. All right. I got I got one that uh
>> cool. All right. I got I got one that uh I feel like is really good for Twitter.
>> Okay.
>> Um if you could give a twominut one minute piece of advice to all people coming into modern webdev.
>> I don't know anything about modern webdev. What? Don't do it. What do you
webdev. What? Don't do it. What do you mean?
>> Well, because that's where a lot of people enter into, right? Like that's
>> that will always be the entrance and because it's just the easiest to get something on the screen and theoretically make $1 million by making another chat rapper. So
>> So if you were to give somebody an advice other than don't do it, >> what would you say to them that could potentially put them on the right track so in 10 years they look back and say that guy was right?
I'm gonna I'm gonna say what I think the right answer is. And
>> okay, >> this may not >> Don't do it. I I you can say whatever you'd like.
>> Yeah, don't still don't do it. But
here's the thing. Okay, the web started I I saw the very very beginnings of the web and chose not to participate.
So just to spend like 30 seconds giving a little background, I was at UC Berkeley. I was in this place called the
Berkeley. I was in this place called the experimental computing facility which is just like students enthusiastic about programming. Uh, the guys were
programming. Uh, the guys were there a couple years after me. That's
why the file extension for is XCF because they came out of like the same computing lab.
>> Little bit of trivia for you.
>> I did not know that. I've always
wondered about that. So, the X in XCF stands for experimental.
>> Yes. So, this was like when >> if you had a computer at home, it was like a Commodore 64 or like a not that good of a PC. You didn't have an equivalent of a Unix operating system at
home. That was not a thing. And so if
home. That was not a thing. And so if you wanted to program real programs on real computers, there were these workstation class computers that were in relatively short supply. There was a whole controversy that like the XCF
snagged allocations from the university that were meant for another group called the open computing facility and there was like a war between the students about this. All that happened a little
about this. All that happened a little bit before I showed up. Okay. So um
there was a guy next to me named Payway who wrote one of the first web browsers before I even knew what that was. It was
called the Viola browser. It doesn't
exist anymore, but you can look it up.
And I was at an early conference and Mark Andre was there and everybody was angry at Mark Andre because >> things never change.
>> Yes.
>> He was making um the the mosaic browser at University of Illinois Urbana Champagne and web browsers didn't have images at that time. They just couldn't
display bit maps on the screen. And
there was a discussion underway that was one of these laborious committee discussions that Casey's talking about because every it was like we're the web community. We want to make
sure we think about these and do everything. And he was like, you know,
everything. And he was like, you know, angle bracket img angle bracket file name or whatever, you know, URL, boom, it puts it on the screen. And they were all mad at him for implementing that and
having images in his browser before everybody else. Um so that's that was my
everybody else. Um so that's that was my experience of the web and like I didn't I didn't really love it. Um I didn't I didn't stay in web from that time. Um
but it was very so even viola right was very visionary in the following way. It
was not just a web browser that put the text in on the screen but it had an embedded programming language that was interpreted. It was a lot like
interpreted. It was a lot like JavaScript but it was a different language. So it was not really
language. So it was not really semantically equivalent. And then
semantically equivalent. And then JavaScript came again, you know, a couple years later or whatever, you know, 96 or whatever year it was, 95, >> um, when Brendan Ike famously did it in 10 days, right?
>> Um, >> the reason it made sense to do something like this in 10 days was that like look, it's just to change a couple state variables in the browser about whether they push the button or it's not for
real programs. >> So, it doesn't need to be very serious.
And so, we don't need to use all the and and it we want it to be crossplatform.
So it's just going to be a very lightweight language, right?
>> Okay.
>> Fast forward and now it's like the language that most software is written in right?
>> Yes.
>> Nobody thought that >> be written in JavaScript will be written in JavaScript is the considered truth of JavaScript.
>> And so the problem with all that is that somehow we forgot all this thing that we knew about programming. like it kind of like it doesn't matter what programming language you use cuz the computer knows
how to run some backend representation which in the old days was machine language right so then you move to the browser you're like we want it to be portable so it can't be machine language right but like it wouldn't have even
taken that long if I had a time machine it's like do you do you try to find baby Hitler and re-educate him to be a kind and loving young boy or do you try to find Brendan Ike and say look spend two
more days to make a little bite code engine so that you're language agnostic on the on the front end, right?
>> Really big big big decisions there at the top.
>> One of software's biggest questions.
>> Yeah. So,
>> I don't know that I'm not serious.
Obviously, the answer is baby Hitler.
I'm not that's not really a joke. But uh
so um because baby Hitler was so much earlier in time that maybe everything would have gone better after that >> and and you don't you know what? Yeah.
So um but the point being like it used to be before the web that like if you wanted a language with strong type checking you had your pick of a whole bunch and they all worked the same and
and they all targeted the same backend at the same level of quality. So it's
not like you were using some janky transpiler to like build some massive 10x too large amount of bloat code that you can't debug or anything. It's just
like they would target I mean those things did exist too but you didn't have to use them because you had choices right and like we threw all that away and and we made this thing where like
now there is an interpreter engine and it just runs this one thing and then you can have wrappers around that one thing, right? Okay. So now we also ostensibly
right? Okay. So now we also ostensibly have web assembly but it just because it came in later and people are not like all these companies also benefit from the fact that they're the only few
people who can make browsers right as well that there's no competition there and so like Google loves that dude that's why they put so many resources into the browser and so they're
disincentivized from making it easy to retarget like to to control your own computing environment let's say right Because if there's a very simple substrate and you don't need Google's
permission to have new features or whatever, they can't they can't leverage that against you in the future uh as part of their more like it would enable incumbent browsers to come in and displace their market share and all that right?
>> Mhm.
>> It's actually worse than that because also you have companies like Apple who are actively invested in not having the web be very good because if it was then you don't have to use the app store.
>> Yes. No, there's like everything like and that's not hypothetical. They
literally like you can literally go watch them do that in the minutes of W3C meetings which I have done and it's frankly pretty disgusting.
>> Yeah. So, um, every big company has a different angle on this, but they're all kind of in common. The every angle is about kind of capturing more market share and preventing their current
market share from being eroded in the future by competition. Right? So,
so that's this is all a long wind way long-winded way of saying, okay, there's good things about a browser. You can just open a web page and just there's a program running.
And that's something that we didn't used to have. It didn't used to be that easy.
to have. It didn't used to be that easy.
But like we didn't have to throw away all the good things about system software to get that. And there's this fundamental confusion about this. Like
if you just targeted an equivalent to a machine language, but that's crossplatform, well- definfined, it has some instruction set and then the browser was interpreting that
which is again ostensively what web assembly is, but it like does doesn't quite get there for I I don't know various reasons. Um, and it's certainly
various reasons. Um, and it's certainly not the default, right? Um, but if we had that, you could run real debuggers on your web program, right? you could do
all these things and and so getting that back like those tools are actually incredibly valuable if you want your software to be high quality because they they bring in
a level of analyzability and and understandability that we just didn't have once we made the jump to interpreted languages by default. So,
um, getting back there would be great.
And so, this this has been a 28 minute long answer by which I'm saying you could like work on getting back some of the things that we lost and getting them back into web
infrastructure so that we could have the best of both worlds. You could have the convenience, right? But also the the
convenience, right? But also the the quality and robustness of of older systems and that would be great.
All right. I think you're probably out of time. I don't want to keep I don't
of time. I don't want to keep I don't want I definitely don't want uh Woo Cash to get pushed back. So,
>> yeah. Sorry, long answer. It was not a one word answer. Great answer.
>> That's okay. Great answer, though. We
like it.
>> Yeah, >> that's part of the stand up. You're
supposed to schedule the stand up for a certain amount of time and it's supposed to go long.
>> That's the point.
>> We did perfectly do what a standup is supposed to do.
>> We got to get the people what they want.
>> We're not standing up though. I'm I'm
>> You can't stand up during stand up. It's
too long.
>> Okay.
>> Yeah. It would be it would be painful.
It' be bad for your knees.
>> Technically, aren't you supposed to end by asking John what he's going to get done tomorrow?
>> Yeah. What? So, what are you block any blockers right now, John?
>> Any blockers?
>> Yeah. Um,
there's some stuff about the end. So, we
have play testers and they got to the end game of the the final end game because there are multiple end games and one of them got there a couple days ago and it was totally broken cuz like we
changed some stuff in the code and it didn't work and we we have automated tests and the automated tests claimed they worked but like the objects were invisible and then also some other
things that are not covered by the tests didn't. So, so I've been fixing that.
didn't. So, so I've been fixing that.
And in the process of fixing that, it's like, oh, there's some feature that I won't spoil, but a good endgame is like it follows on naturally from the game that came before, but also brings in
some new stuff, some surprises and stuff, right? It it feels like the
stuff, right? It it feels like the culmination of the game. And some of that stuff, uh, you know, there's a programming part that you got to do and then there's the
the user level part of like, let me mark up the level to have the right script triggers and like whatever. And like
>> a few of those levels that I had designed were not marked up. And so
people went to play them and they're like, I don't know what's going on in this level. So last night I
this level. So last night I feverishly fixed a bunch of these things and shipped a new build because with Steam you just push a button and deploy it really fast. Um and then an email
from one of the people who's helping out with design. He was like, "Oh, but you
with design. He was like, "Oh, but you know the geometry of this level has this bug exploit that I emailed you about months ago that we never got around to."
So I'm like, "Oh, I thought I was done with it." So, I've got to go and like
with it." So, I've got to go and like redesign the geometry of the level a little bit to like dodge this exploit.
And this level's in two places in the game. So, there's that like the copies
game. So, there's that like the copies have to match up and all. So, that's
what I'm doing. And then after that, so I'm trying to make time during Christmas break when I'm relaxed and can work on story stuff is the other thing.
>> Um, so that's that's my road map.
>> But awesome. The most immediate thing that I'm doing right after this is I am going on the Woo Cash podcast which go I've started the raid so that way you
have to get going. Okay. It is not a requirement that you go.
>> Any blockers for you?
>> Uh nope. No blockers for for me. I'm
just I'm uh I'm uh going to go listen to this Woo Cash podcast.
>> Nice.
>> There you go. Yeah. Nice. We're all
going to get distracted for the rest of the day.
>> Awesome. Well, thank you very much for joining the startup. If you want to listen or the stand the stand up, not the startup. If you want to listen to
the startup. If you want to listen to the full podcast, check us out on Spotify. Thank you again, Jonathan, for
Spotify. Thank you again, Jonathan, for joining us. Please check out and wish
joining us. Please check out and wish list order of the sinking star. And as
always, Casey, thank you for joining us.
TJ, thank you for joining us.
>> Of course. Thanks, John.
>> See you. See you.
>> All right.
Errors on my screen.
Terminal coffee and hand living the dream.
Loading video analysis...