Discussion of SIMD, SOA, AOSOA. Followed by Questions & Answers.Jonathan Blow2019-11-02 | The first programming related to this discussion is in this video: youtu.be/zgoqZtu15kIWeekend Project: Color Animation Editor (part 6)Jonathan Blow2023-06-17 | ...Weekend Project: Color Animation Editor (part 5)Jonathan Blow2023-06-17 | ...Weekend Project: Color Animation Editor (part 4, tired late at night edition)Jonathan Blow2023-06-15 | ...Weekend Project: Color Animation Editor (part 3)Jonathan Blow2023-06-15 | ...Weekend Project: Color Animation Editor (part 2)Jonathan Blow2023-06-12 | ...Weekend Project: Color Animation Editor (Part 1)Jonathan Blow2023-06-12 | ...Treemap Viewer, part 7 The LastJonathan Blow2023-05-15 | Broadcasted live on Twitch -- Watch live at twitch.tv/j_blowTreemap Viewer, part 6Jonathan Blow2023-05-15 | Broadcasted live on Twitch -- Watch live at twitch.tv/j_blowTreemap Viewer, part 4Jonathan Blow2023-05-15 | In which we hook the treemap viewer up to a real program.Treemap Viewer, part 5Jonathan Blow2023-05-15 | Broadcasted live on Twitch -- Watch live at twitch.tv/j_blowTreemap Viewer, part 3Jonathan Blow2023-05-15 | Further work on the treemap viewer, including a terrible slog when I was very weaksauce about debugging some arithmetic.
00:00:00 Beginning. 3:19:48 The Bug Slog 3:50:55 Chat Noticed the Dumb Bug (Finally!) 3:53:22 It Works!Treemap Viewer, part 2Jonathan Blow2023-05-14 | Continuing...Treemap Viewer, part 1Jonathan Blow2023-05-13 | Doing some visualization stuff...!Improving Invaders, Part 4Jonathan Blow2023-05-13 | Broadcasted live on Twitch -- Watch live at twitch.tv/j_blowImproving Invaders (part 3)Jonathan Blow2023-05-11 | ...Improving Invaders (part 2a)Jonathan Blow2023-05-11 | ...Improving Invaders (part 2b)Jonathan Blow2023-05-11 | ...Improving Invaders (part 1)Jonathan Blow2023-05-09 | I decided to improve 'invaders' a bit. Part 1 of 4!Programming Language Beta Q&A, April 2023Jonathan Blow2023-05-09 | Questions and Answers for those in the programming language beta.Compiler Beta Q&A, March 4, 2023Jonathan Blow2023-03-14 | Broadcasted live on Twitch -- Watch live at twitch.tv/j_blowProgramming Language Beta Q&A, January 2023Jonathan Blow2023-01-29 | Sorry about the poor resolution and audio; don't have my full setup yet! -- Watch live at twitch.tv/j_blowProgramming Language Q&A, December 2022Jonathan Blow2022-12-21 | ...Game Engine Programming: Animation File Format, part 3.Jonathan Blow2022-01-20 | ...Game Engine Programming: Animation File Format, part 2.Jonathan Blow2022-01-20 | ...Game Engine Programming: Animation File Format, part 1.Jonathan Blow2022-01-19 | We start making a new, better animation file format for the new game.Game Engine Programming: A Simple Package FormatJonathan Blow2022-01-18 | We design and implement a package format suitable for large programs with lots of data.Design Discussion with Casey Muratori, #2Jonathan Blow2021-02-23 | I talk with Casey about visual differences between gameplay elements.Q&A with Programming Language Beta UsersJonathan Blow2020-12-06 | 0:00 Introduction 2:20 Roadmap for the next few Beta releases 3:30 Upcoming module handling improvements 18:53 Upcoming default metaprogram improvements 23:40 Start of the Beta user Q&A 25:50 I can see that you can change the allocator on a context by changing an allocator (a function) and allocation_data. For allocators that allow individual allocations to be returned how do you specify the equivalent of free() to the context? Or don't you? 31:14 How do you configure the compiler to build a Jai library for use on Android/ARM64? 33:53 What made you shrink the compiler team back to just yourself? 43:46 How are you feeling about how the beta is progressing? Do you have an idea of how many more times you want to expand the closed beta, or roughly when it might go into open? 46:43 Would you prefer us to report bugs asap, or wait and bundle up a few at a time? 47:46 I like the monorepo/project approach for modularity, does it conflict with your earlier statement that compilers/languages are underspecified in many regards? Should metaprogramming fill all those gaps? 50:09 Why not closures? What are the alternatives to closures? What can we do in the language that is equivalent to what closures provide? 56:34 You often talk about how syntax is not definite right now, is there anything that you are seriously considering changing in the future? 58:58 As with standard modules, could there be standard metaprogram modules, which could be included to enhance build processes and such, for instance to impose common house rules 1:01:31 The question of what is standard library vs external stuff keeps coming up; how are you aiming to delineate it? Would a "batteries included" approach covering most of the everyday stuff not provide a reasonable amount of value? Relatedly, "Basic" is a bad name for a module, as it's fairly arbitrary and different from one person to another what counts as "Basic" 1:05:56 Are there plans to add build-in support for code hotloading for running executable? 1:07:24 I have a big change for the built-in hotloader module that fixes its totally broken linux part but these fixes need to change the API slightly. Do you want such bigger changes for built-in modules? 1:15:00 You mentioned that struct literals are new which explains some of my issue but what are your current thoughts on allowing non-constant values for struct literals? 1:19:00 I couldn't find classic C-style for loops anywhere in the docs, did I miss something? 1:19:43 Have you thought at all about array-programming? 1:20:11 Currently, a 'for' loop over an explicit range (e.g. 0..3) disallows use of 'it_index'. Would you consider allowing this in the future? This would reduce friction when, upon code maintenance, the explicit range is replaced with an array whose index needs to be tracked 1:20:57 Can we get a `sockets` (or `Networking` module)? Seems like it should be in standard library 1:21:32 Currently, the single underscore, _, can be used as a variable (like in C). Do you intend for this behavior to endure, or are there plans to change it to function as a blank identifier like in Go? 1:22:40 Are minor contributions to the existing documentation (like typo fixes and small content additions) welcome? 1:23:59 To align a big team on a project it proved useful to me to restrict certain features of the language. I understand that I should write a meta-program to fail on features I want to restrict. 1:24:55 Patrick had a question a couple days ago about trying to modify parameters to functions in a function, in external libraries this is possible but within a Jai program it's not. This confused me a lot early on as well. Perhaps this could be clarified in the how_to's (pass in a pointer...) 1:27:28 Something slightly confusing is dependencies between metaprograms. When two metaprograms share common namespace that they might both want to change you might get a dependency that doesn't really exist. 1:29:56 Are there any long-term plans about documentation, in terms of format and scope? I really like the current how_tos. But I imagine there is a large amount of work to do with documenting the distributed modules and language features. Maybe more people could help out with that? 1:33:14 What plans do you have for extending the procedure/declaration notes stuff? Specifically, I work on a team of ~20 people and issue tracking/project management tools like Jira which are separate to the code are a pain, maybe there's a way the language/metaprogram can help? 1:37:59 Do you see any places in the type system where things could be added to make robust parallel programming easier? 1:40:05 Any plans to move the temporary allocator to the context so we can change the way it works if we want to?
(YouTube won't let us paste the rest of this index, short version may come later).Design Discussion with Casey MuratoriJonathan Blow2020-12-03 | Casey was working on a new game, for which he had done the basic programming, but hadn't yet started on any real design. He wanted to talk about how to do game design, and this is what ensued.
At some point I referred to Frank Lantz's "Immersive Fallacy" rant, which you can find here: youtube.com/watch?v=6JzNt1bSk_U
The volume is a little wacky since Casey was quiet on the recording; I went in and hand-boosted his volume in many places, but not everywhere.Making a big change without breaking the program.Jonathan Blow2020-11-30 | I wanted to change the way bytecode instructions are stored in the compiler. This is a potentially scary change because it affects many different systems. Here I show an example of how to do this kind of thing without breaking everything and making a hard-to-debug mess.AnnouncementJonathan Blow2020-08-06 | ...Talk: Video Games and the Future of EducationJonathan Blow2020-07-20 | A 90-minute speech about how to improve education using video games -- how to actually do it, in contrast to what is currently being tried. Followed by a Q&A session.Puzzle Game Water Rendering, discussion with Casey MuratoriJonathan Blow2020-06-07 | ...How 3D video games do graphics.Jonathan Blow2020-06-03 | We had a fun 3-hour discussion covering some of the basics of how a video game draws pixels on the screen, when it's a 3D renderer. There's a lot more to know than this, but it's a start!Discussion: Puzzle Game Movement Systems, with Sean Barrett.Jonathan Blow2020-04-13 | This is a re-upload (the original version was missing 45 minutes from the end!)Programming Discussion: Speed, w/ special guest Sean BarrettJonathan Blow2020-04-06 | A conversation with Sean Barrett about various topics, at least somewhat centered around writing fast code and compilers.Q&A: Making Programming Language Parsers, etcJonathan Blow2020-03-30 | This is the Q&A that happened after the discussion at youtube.com/watch?v=MnctEW1oL-E .Discussion: Making Programming Language Parsers, etc (Q&A is in separate video).Jonathan Blow2020-03-30 | This is the main discussion part. Q&A follows at youtube.com/watch?v=lcF-HzlFYKE .Discussion: Animation, Language Design, Understandable Code, ProductivityJonathan Blow2020-03-24 | Co-starring Casey Muratori. Topics: Animation Programming, Language Design, What makes code more or less understandable, Techniques for being a productive programmer.Compiler Livestream: Using Metaprogramming to scan for pointer math.Jonathan Blow2020-01-15 | Was in the middle of doing some random stuff, decided to scan the game for pointer math to see how it was used. A nice example of using the metaprogramming. The start of this video is pretty slow and mumbly. We start doing the actual metaprogramming work at 10:51.Implementing User-Level SOA functionality, part 1.Jonathan Blow2019-11-02 | Doing some programming related to the ideas introduced in this video: youtube.com/watch?v=YGTZr6bmNmkLivestream: Metaprogramming Use Case: Command-Line Argument Parsing, part 2Jonathan Blow2019-10-31 | Part 1 is available here: youtu.be/TwqXTf7VfZkLivestream: Metaprogramming Use Case: Command-Line Argument ParsingJonathan Blow2019-10-31 | This is part 1. Part 2 is at: youtu.be/pgiVrhsGkKYGame Engine Programming: Point Light SourcesJonathan Blow2019-10-12 | We implement point lights in an engine that didn't have them yet for some reason. Discussion of shadows (but we don't implement them yet).Game Engine Programming: Editor stuffJonathan Blow2019-10-04 | We add some functionality to the world editor.Compiler Q&A: Macros and IterationJonathan Blow2019-08-18 | ...Compiler Demo: Macros and IterationJonathan Blow2019-08-18 | ...Refactoring portions of the code generator.Jonathan Blow2019-08-13 | ...Compiler Progress Report, July 2019Jonathan Blow2019-07-27 | ...