summaryrefslogtreecommitdiffstats
path: root/2022/captions/emacsconf-2022-asmblox--asmblox-a-game-based-on-webassembly-that-no-one-asked-for--zachary-romero--answers.vtt
diff options
context:
space:
mode:
Diffstat (limited to '2022/captions/emacsconf-2022-asmblox--asmblox-a-game-based-on-webassembly-that-no-one-asked-for--zachary-romero--answers.vtt')
-rw-r--r--2022/captions/emacsconf-2022-asmblox--asmblox-a-game-based-on-webassembly-that-no-one-asked-for--zachary-romero--answers.vtt411
1 files changed, 411 insertions, 0 deletions
diff --git a/2022/captions/emacsconf-2022-asmblox--asmblox-a-game-based-on-webassembly-that-no-one-asked-for--zachary-romero--answers.vtt b/2022/captions/emacsconf-2022-asmblox--asmblox-a-game-based-on-webassembly-that-no-one-asked-for--zachary-romero--answers.vtt
new file mode 100644
index 00000000..3bccf8fb
--- /dev/null
+++ b/2022/captions/emacsconf-2022-asmblox--asmblox-a-game-based-on-webassembly-that-no-one-asked-for--zachary-romero--answers.vtt
@@ -0,0 +1,411 @@
+WEBVTT
+
+NOTE
+Introduction
+
+00:00:00.000 --> 00:00:05.799
+[Amin]: All right. Hey, everyone. Thanks, Zach, for the great talk. Here is a live Q&A.
+
+00:00:05.800 --> 00:00:12.399
+People can start putting the questions onto the pad, and Zach will answer them.
+
+00:00:12.400 --> 00:00:15.007
+Zach, take it away. Thanks, Zach. Here is a live Q&A.
+
+00:00:15.008 --> 00:01:12.599
+[Zach]: Okay. So, first question. Let's see.
+
+NOTE Why did you choose an internal state versus many 'state buffers'?
+
+00:01:12.600 --> 00:01:16.039
+Okay. So, the first question is why did you choose an internal state
+
+00:01:16.040 --> 00:01:22.959
+versus many state buffers? So, the main reason was more control
+
+00:01:22.960 --> 00:01:29.599
+from the game perspective. I mean, if this was to be a tool,
+
+00:01:29.600 --> 00:01:35.519
+if this was to be a tool that perhaps was used for more, like,
+
+00:01:35.520 --> 00:01:41.479
+real-world applications where maybe you'd want users to be able to, like,
+
+00:01:41.480 --> 00:01:43.399
+use any of their preexisting
+
+00:01:43.400 --> 00:01:48.559
+— like, if you wanted to really make a grid of cells that would —
+
+00:01:48.560 --> 00:01:53.639
+so, then I think maybe using real buffers in that case
+
+00:01:53.640 --> 00:01:56.199
+would probably be the better thing since you wouldn't have to, like,
+
+00:01:56.200 --> 00:02:04.239
+redo everything. But I found that just, like, centralizing the state
+
+00:02:04.240 --> 00:02:10.719
+into one place for the game at least made it the easiest to implement.
+
+NOTE Do you have plans to port shenzhen.io to Emacs?
+
+00:02:10.720 --> 00:02:14.079
+Next one. Do you have plans to port Shenzhen I.O. to Emacs?
+
+00:02:14.080 --> 00:02:19.559
+Well, I was actually thinking about exopunks, perhaps,
+
+00:02:19.560 --> 00:02:26.599
+but Shenzhen I.O. would be pretty cool to add as well.
+
+00:02:26.600 --> 00:02:29.959
+So, this doesn't use any Wasm at all.
+
+NOTE Did this use WASM?
+
+00:02:29.960 --> 00:02:33.799
+So, the next question is, did this use Wasm?
+
+00:02:33.800 --> 00:02:41.999
+So, it's asking about, like, using Wasm Emacs. So, this actually —
+
+00:02:42.000 --> 00:02:45.239
+this doesn't use any Wasm under the hood.
+
+00:02:45.240 --> 00:02:49.639
+It's pretty much analogous to the game TIS 100 is to real assembly
+
+00:02:49.640 --> 00:02:59.799
+as this game is to web assembly. Slight resemblance, but, yeah, just a game.
+
+NOTE Why wasm rather than a more traditional Assembly dialect? It wouldn't be harder to implement, right?
+
+00:02:59.800 --> 00:03:06.039
+So, okay, so the next question is why Wasm
+
+00:03:06.040 --> 00:03:09.359
+rather than a more traditional assembly dialect?
+
+00:03:09.360 --> 00:03:11.799
+It wouldn't be harder to implement, right?
+
+00:03:11.800 --> 00:03:16.919
+So, it would actually probably have been easier, in all honesty, just because,
+
+00:03:16.920 --> 00:03:20.679
+you know, more traditional — like, TIS 100, for example.
+
+00:03:20.680 --> 00:03:24.599
+You have each of the — you have each instruction on a line,
+
+00:03:24.600 --> 00:03:29.519
+and it's pretty easy to, you know, syntax hiding just one line.
+
+00:03:29.520 --> 00:03:32.599
+So, this with the weird S expressions across the line, deeply nested,
+
+00:03:32.600 --> 00:03:37.239
+and then, like, the step debugger thing and these weird cell things.
+
+00:03:37.240 --> 00:03:40.239
+They made things really complicated, but I definitely wanted to, like —
+
+00:03:40.240 --> 00:03:47.559
+the main reason is I didn't — I wanted it to not — to look as least as —
+
+00:03:47.560 --> 00:03:52.919
+to look — to resemble TIS 100 as little as possible,
+
+00:03:52.920 --> 00:03:54.399
+even though it's still pretty much the same game.
+
+00:03:54.400 --> 00:04:44.439
+[Amin]: Thanks, Zach. I think we still have about, like, eight minutes or so.
+
+00:04:44.440 --> 00:04:46.159
+Or eight and a half minutes of Q&A time.
+
+00:04:46.160 --> 00:04:47.919
+So, folks, if you do have any other questions,
+
+00:04:47.920 --> 00:04:50.119
+please do keep them coming in the pad, and, yeah,
+
+00:04:50.120 --> 00:04:53.079
+Zach will continue answering them.
+
+00:04:53.080 --> 00:05:08.959
+[Zach]: Sounds good. Thank you.
+
+NOTE Any next projects on your mind?
+
+00:05:08.960 --> 00:05:11.399
+So, next question. Any next projects on your mind?
+
+00:05:11.400 --> 00:05:15.679
+Yeah, actually, I have a couple ideas for projects,
+
+00:05:15.680 --> 00:05:21.639
+and these would all be, hopefully, maybe more useful.
+
+00:05:21.640 --> 00:05:24.119
+I think TreeSitter is pretty
+
+00:05:24.120 --> 00:05:28.639
+cool. I think there's a lot of directions that I could go, like,
+
+00:05:28.640 --> 00:05:34.639
+there's a plugin in NeoVim called NeoGen, which generates documentation.
+
+00:05:34.640 --> 00:05:41.359
+That would be cool. I've been playing with this. What else?
+
+00:05:41.360 --> 00:05:45.559
+Yeah, I mean, hopefully, next year, at next the Emacs conference,
+
+00:05:45.560 --> 00:05:52.679
+I could be presenting something more useful.
+
+NOTE Does this work with any other paren-based editing packages?
+
+00:05:52.680 --> 00:05:57.479
+Next question. Does this work with any other paren-based editing packages?
+
+00:05:57.480 --> 00:06:02.759
+Not at all. Not at all. In fact, just because of the way the buffer was set up,
+
+00:06:02.760 --> 00:06:07.999
+how it's just, like, the illusion of a buffer, like, not even, like,
+
+00:06:08.000 --> 00:06:17.119
+the syntax parsing works correctly, because just because everything's, like,
+
+00:06:17.120 --> 00:06:19.239
+the way the grids are set up, like, you have, like,
+
+00:06:19.240 --> 00:06:23.839
+the other cells kind of interfering with the way that parse is.
+
+00:06:23.840 --> 00:06:29.799
+But the way it was architected, it's actually a really simple macro.
+
+00:06:29.800 --> 00:06:33.159
+There's a little macro called, like, run in buffer.
+
+00:06:33.160 --> 00:06:37.279
+You have, like, run in buffer, and then you put your elist code,
+
+00:06:37.280 --> 00:06:42.439
+and then it tries to create the illusion that it's actually running
+
+00:06:42.440 --> 00:06:46.919
+in a real buffer. So this macro kind of does all the configuration setup.
+
+NOTE What kind of tool could use this idea?
+
+00:06:46.920 --> 00:06:55.839
+So, I mean, maybe with, like, more configuration settings,
+
+00:06:55.840 --> 00:06:58.399
+maybe something like that could have been done.
+
+00:06:58.400 --> 00:07:04.239
+So next question. What kind of tool could you use this idea?
+
+00:07:04.240 --> 00:07:09.479
+Oh, going back to the next project on your mind.
+
+00:07:09.480 --> 00:07:12.639
+This actually came up to my mind as, like, a graphical.
+
+00:07:12.640 --> 00:07:21.359
+So, in terms of, like, there's a lot of graphing tools, like ASCII.
+
+00:07:21.360 --> 00:07:25.679
+So, like, you type in some text representation, it generates an ASCII document.
+
+00:07:25.680 --> 00:07:28.599
+I think it would be really cool to have, like,
+
+00:07:28.600 --> 00:07:31.079
+an Emacs package that sort of works, like,
+
+00:07:31.080 --> 00:07:35.519
+those online really slick graph drawing tools.
+
+00:07:35.520 --> 00:07:40.919
+So, like, you can just press tab, and it draws a new box with an ASCII arrow,
+
+00:07:40.920 --> 00:07:43.759
+and then, like, it can create these diagrams really easy.
+
+00:07:43.760 --> 00:07:46.359
+I think that would be a really cool project.
+
+00:07:46.360 --> 00:07:52.039
+And so, something like that, obviously, like, you have different cells.
+
+00:07:52.040 --> 00:07:56.279
+And so, that's actually another thing I think would be cool to work on.
+
+NOTE How did you go about designing the puzzles?
+
+00:07:56.280 --> 00:08:04.039
+So, designing puzzles. So, it's funny.
+
+00:08:04.040 --> 00:08:07.879
+If you listen to Zach Barth's talk about TS100,
+
+00:08:07.880 --> 00:08:12.759
+he goes into, like, you pretty just, like, you pretty just,
+
+00:08:12.760 --> 00:08:16.159
+it's just like you make up a puzzle you think could work,
+
+00:08:16.160 --> 00:08:18.279
+and chances are it does end up working.
+
+00:08:18.280 --> 00:08:23.959
+And that's how I roll, at least my custom puzzles in the game, just, like,
+
+00:08:23.960 --> 00:08:28.599
+come up with some random idea, think it probably should work,
+
+00:08:28.600 --> 00:08:35.839
+and then try to go implementing it. And usually, it's implementable.
+
+00:08:35.840 --> 00:08:39.319
+I mean, four by three boxes, you can do quite a bit.
+
+NOTE What are your favorite changes in the upcoming Emacs 29?
+
+00:08:39.320 --> 00:08:44.119
+And I don't put any restrictions on the cells, like, TS100.
+
+00:08:44.120 --> 00:08:47.719
+What are your favorite changes in the upcoming Emacs 29?
+
+00:08:47.720 --> 00:08:50.479
+So, definitely TreeSitter is pretty cool.
+
+00:08:50.480 --> 00:08:55.679
+Just because, like, you have syntax, you have access to that.
+
+00:08:55.680 --> 00:08:59.719
+You can build syntax-aware extensions.
+
+00:08:59.720 --> 00:09:03.559
+So, like, I was just I was playing around with it, and it's pretty cool.
+
+00:09:03.560 --> 00:09:07.479
+You can just, like, get the syntax tree and search for syntax patterns.
+
+NOTE Are there tools to add more puzzles?
+
+00:09:07.480 --> 00:09:25.199
+So, it's exciting to see what might be done with that.
+
+00:09:25.200 --> 00:09:28.879
+Are there tools to add more puzzles? So, there's not tools,
+
+00:09:28.880 --> 00:09:35.959
+but in the code itself, there's a file called azimbox puzzles.
+
+00:09:35.960 --> 00:09:39.079
+And it's pretty much just, like, you have a generator function.
+
+00:09:39.080 --> 00:09:43.079
+You configure it's just, like, you're pretty much defining a struct.
+
+00:09:43.080 --> 00:09:45.679
+So, I mean, if you're familiar with the Emax list,
+
+00:09:45.680 --> 00:09:47.959
+you can kind of define puzzles pretty easily.
+
+00:09:47.960 --> 00:09:54.279
+Define where your inputs are, generate a function to generate these inputs,
+
+00:09:54.280 --> 00:09:57.799
+and then a generator function to generate which outputs you want.
+
+00:09:57.800 --> 00:10:02.159
+So, it's pretty, I mean, code-wise, it's pretty self-contained.
+
+00:10:02.160 --> 00:10:10.239
+But yeah, maybe I could have done, like, a more streamlined job with that.
+
+00:10:10.240 --> 00:10:17.159
+Like, a binding to graph is? Oh, yeah, with the graph thing I was mentioning.
+
+00:10:17.160 --> 00:10:23.479
+So, that would also actually be pretty cool, too. But I was thinking more just,
+
+00:10:23.480 --> 00:10:31.119
+like, plain ASCII graphs. Just, like, you already have just, like, so,
+
+00:10:31.120 --> 00:10:33.439
+a tool I've seen recently is called Diagon.
+
+00:10:33.440 --> 00:10:38.079
+So, you basically type in, like, some really, like,
+
+00:10:38.080 --> 00:10:41.759
+a textual representation of the graph, like, A arrow B, B arrow C,
+
+00:10:41.760 --> 00:10:44.079
+and it generates, like, an ASCII diagram.
+
+00:10:44.080 --> 00:10:52.799
+So, something like that would be cool, like, so, like, you have, like,
+
+00:10:52.800 --> 00:11:01.839
+a grid of, like, little nodes, and control F maybe brings you to the next one,
+
+00:11:01.840 --> 00:11:07.279
+and maybe tab, maybe would create a new node with a new ASCII
+
+00:11:07.280 --> 00:11:20.879
+arrow to it. That would be a cool, that would be a really cool extension.
+
+00:11:20.880 --> 00:11:25.319
+But, yeah, I mean, obviously, graph is an amazing tool.
+
+00:11:25.320 --> 00:11:28.079
+So, a lot could be done with that as well.
+
+00:11:28.080 --> 00:12:49.679
+[Amin]: I think we have about, like, a minute or a minute and a half of live questions.
+
+00:12:49.680 --> 00:12:50.719
+We are opening the Q&A, this BB room for people to join.
+
+00:12:50.720 --> 00:12:51.759
+So, folks who want to do that are welcome to do so.
+
+00:12:51.760 --> 00:12:52.199
+And, yeah, after that, the stream will move on.
+
+00:12:52.200 --> 00:12:52.359
+But you can still come in this BB room or keep asking questions on the web.
+
+00:12:52.360 --> 00:12:53.439
+Okay. I think that's about all the time that we have on the stream.
+
+00:12:53.440 --> 00:12:55.079
+Thanks again, Zach, so much, and both for the Q&A and for your great talk,
+
+00:12:55.080 --> 00:12:57.319
+and see you all around. Thank you.
+
+00:12:57.320 --> 00:12:58.239
+Cheers.
+
+00:12:58.240 --> 00:12:58.359
+[Zach]: Thank you.
+
+00:12:58.360 --> 00:14:19.200
+You are currently the only person in this conference.