Adding Call Sites to the Arena Display
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next timestamp
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu and Index Controls

a
w
s
d
h j k l


Esc Close menu / unfocus timestamp

Quotes and References Menus and Index

Enter Jump to timestamp

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:01Recap and set the stage for the day
🗩
0:01Recap and set the stage for the day
🗩
0:01Recap and set the stage for the day
🗩
1:08Update remedybg1 and show off its new Save Layout functionality
🗹
1:08Update remedybg1 and show off its new Save Layout functionality
🗹
1:08Update remedybg1 and show off its new Save Layout functionality
🗹
3:25Demo our memory profiler, with the determination to draw blocks at sizes proportional to their allocation size
🏃
3:25Demo our memory profiler, with the determination to draw blocks at sizes proportional to their allocation size
🏃
3:25Demo our memory profiler, with the determination to draw blocks at sizes proportional to their allocation size
🏃
16:59Look into why the memory Sizes viewer does not show all the allocations mentioned in the Arenas viewer
📖
16:59Look into why the memory Sizes viewer does not show all the allocations mentioned in the Arenas viewer
📖
16:59Look into why the memory Sizes viewer does not show all the allocations mentioned in the Arenas viewer
📖
18:53Let DrawArenaInterval() record suppressed blocks
18:53Let DrawArenaInterval() record suppressed blocks
18:53Let DrawArenaInterval() record suppressed blocks
20:59Find that the memory Sizes viewer still does not show all our expected allocations
🏃
20:59Find that the memory Sizes viewer still does not show all our expected allocations
🏃
20:59Find that the memory Sizes viewer still does not show all our expected allocations
🏃
21:43Continue to investigate the discrepancy between the Sizes and Arenas viewers
📖
21:43Continue to investigate the discrepancy between the Sizes and Arenas viewers
📖
21:43Continue to investigate the discrepancy between the Sizes and Arenas viewers
📖
24:33Step through DrawArenaInterval() to see what it draws
🏃
24:33Step through DrawArenaInterval() to see what it draws
🏃
24:33Step through DrawArenaInterval() to see what it draws
🏃
27:49Fix DrawArenaInterval() to offset the BlockY when drawing suppressed blocks
27:49Fix DrawArenaInterval() to offset the BlockY when drawing suppressed blocks
27:49Fix DrawArenaInterval() to offset the BlockY when drawing suppressed blocks
28:18Check out our suppressed allocations in the Arenas viewer
🏃
28:18Check out our suppressed allocations in the Arenas viewer
🏃
28:18Check out our suppressed allocations in the Arenas viewer
🏃
30:41Add a toggle to the debug UI for drawing suppressed blocks
30:41Add a toggle to the debug UI for drawing suppressed blocks
30:41Add a toggle to the debug UI for drawing suppressed blocks
35:41Crash in DrawTopMemList()
🏃
35:41Crash in DrawTopMemList()
🏃
35:41Crash in DrawTopMemList()
🏃
36:12Fix DrawTopMemList() to sort the correct number of arenas
36:12Fix DrawTopMemList() to sort the correct number of arenas
36:12Fix DrawTopMemList() to sort the correct number of arenas
37:03Try out our Debug toggle UI button
🏃
37:03Try out our Debug toggle UI button
🏃
37:03Try out our Debug toggle UI button
🏃
38:51Investigate why the Sizes viewer does not display all Asset Storage allocations mentioned by the Arenas viewer
📖
38:51Investigate why the Sizes viewer does not display all Asset Storage allocations mentioned by the Arenas viewer
📖
38:51Investigate why the Sizes viewer does not display all Asset Storage allocations mentioned by the Arenas viewer
📖
40:14Make DrawTopMemList() write out "blocks" and "allocs"
40:14Make DrawTopMemList() write out "blocks" and "allocs"
40:14Make DrawTopMemList() write out "blocks" and "allocs"
40:43Check out our not pretty printout
🏃
40:43Check out our not pretty printout
🏃
40:43Check out our not pretty printout
🏃
40:51Change DrawTopMemList() to title the list
40:51Change DrawTopMemList() to title the list
40:51Change DrawTopMemList() to title the list
43:12Check out our prettier, if slightly off, printout
🏃
43:12Check out our prettier, if slightly off, printout
🏃
43:12Check out our prettier, if slightly off, printout
🏃
43:31Fix up our titling in DrawTopMemList()
43:31Fix up our titling in DrawTopMemList()
43:31Fix up our titling in DrawTopMemList()
43:38Check out our prettier printout()
🏃
43:38Check out our prettier printout()
🏃
43:38Check out our prettier printout()
🏃
43:53Tweak the titling in DrawTopMemList()
43:53Tweak the titling in DrawTopMemList()
43:53Tweak the titling in DrawTopMemList()
44:09Consider merging allocation statistics by call-site
📖
44:09Consider merging allocation statistics by call-site
📖
44:09Consider merging allocation statistics by call-site
📖
47:16Set up DrawTopMemList() to display arena usage amounts per call-site, introducing debug_memory_callsite
47:16Set up DrawTopMemList() to display arena usage amounts per call-site, introducing debug_memory_callsite
47:16Set up DrawTopMemList() to display arena usage amounts per call-site, introducing debug_memory_callsite
56:05See nothing different in the Sizes viewer
🏃
56:05See nothing different in the Sizes viewer
🏃
56:05See nothing different in the Sizes viewer
🏃
56:37Enable DrawTopMemList() to print out the arena usage per call-site, adding a "Show Callsites" toggle
56:37Enable DrawTopMemList() to print out the arena usage per call-site, adding a "Show Callsites" toggle
56:37Enable DrawTopMemList() to print out the arena usage per call-site, adding a "Show Callsites" toggle
1:02:05Check out our allocations per call-site Sizes viewer
🏃
1:02:05Check out our allocations per call-site Sizes viewer
🏃
1:02:05Check out our allocations per call-site Sizes viewer
🏃
1:03:09Fix up the formatting of the call-sites
1:03:09Fix up the formatting of the call-sites
1:03:09Fix up the formatting of the call-sites
1:03:25Check out our allocations per call-site, to see a high number in handmade_asset.cpp and handmade_stream.cpp
🏃
1:03:25Check out our allocations per call-site, to see a high number in handmade_asset.cpp and handmade_stream.cpp
🏃
1:03:25Check out our allocations per call-site, to see a high number in handmade_asset.cpp and handmade_stream.cpp
🏃
1:05:16Investigate our allocations in handmade_asset.cpp, and determine that we don't care about them
📖
1:05:16Investigate our allocations in handmade_asset.cpp, and determine that we don't care about them
📖
1:05:16Investigate our allocations in handmade_asset.cpp, and determine that we don't care about them
📖
1:06:20Investigate our allocations in handmade_stream.cpp
📖
1:06:20Investigate our allocations in handmade_stream.cpp
📖
1:06:20Investigate our allocations in handmade_stream.cpp
📖
1:07:48Enable the Sizes viewer to more specifically locate the call-sites of string allocations, augmenting stream_chunk with a GUID for Outf() and OutfArgList() to use
1:07:48Enable the Sizes viewer to more specifically locate the call-sites of string allocations, augmenting stream_chunk with a GUID for Outf() and OutfArgList() to use
1:07:48Enable the Sizes viewer to more specifically locate the call-sites of string allocations, augmenting stream_chunk with a GUID for Outf() and OutfArgList() to use
1:13:18Hi Molly Bean!
🗩
1:13:18Hi Molly Bean!
🗩
1:13:18Hi Molly Bean!
🗩
1:15:49Check out our more detailed string allocations in the Sizes viewer
🏃
1:15:49Check out our more detailed string allocations in the Sizes viewer
🏃
1:15:49Check out our more detailed string allocations in the Sizes viewer
🏃
1:17:03Investigate our allocations by the call to Outf() in UpdateSingleAssetMetadata() in handmade_import.cpp
📖
1:17:03Investigate our allocations by the call to Outf() in UpdateSingleAssetMetadata() in handmade_import.cpp
📖
1:17:03Investigate our allocations by the call to Outf() in UpdateSingleAssetMetadata() in handmade_import.cpp
📖
1:18:14Fix ParseFontBlock() to apply the FontGlyph tag
1:18:14Fix ParseFontBlock() to apply the FontGlyph tag
1:18:14Fix ParseFontBlock() to apply the FontGlyph tag
1:24:05Rebuild the assets and find that handmade_import.cpp no longer shows up in the Sizes viewer
🏃
1:24:05Rebuild the assets and find that handmade_import.cpp no longer shows up in the Sizes viewer
🏃
1:24:05Rebuild the assets and find that handmade_import.cpp no longer shows up in the Sizes viewer
🏃
1:25:50Investigate our string allocations in handmade_asset.cpp
📖
1:25:50Investigate our string allocations in handmade_asset.cpp
📖
1:25:50Investigate our string allocations in handmade_asset.cpp
📖
1:28:36Dump base_game.hha and check it out in TabView, to see that multiple chained portions of an audio asset occupy the same "spritesheet" slot
🗹
1:28:36Dump base_game.hha and check it out in TabView, to see that multiple chained portions of an audio asset occupy the same "spritesheet" slot
🗹
1:28:36Dump base_game.hha and check it out in TabView, to see that multiple chained portions of an audio asset occupy the same "spritesheet" slot
🗹
1:34:01Change AllocateGameAssets() to let all chained audio portions use the same index
1:34:01Change AllocateGameAssets() to let all chained audio portions use the same index
1:34:01Change AllocateGameAssets() to let all chained audio portions use the same index
1:35:26Find that this change did not remove our string allocations in handmade_asset.cpp
🏃
1:35:26Find that this change did not remove our string allocations in handmade_asset.cpp
🏃
1:35:26Find that this change did not remove our string allocations in handmade_asset.cpp
🏃
1:37:19Step in to an erroring Outf() call in AllocateGameAssets()
🏃
1:37:19Step in to an erroring Outf() call in AllocateGameAssets()
🏃
1:37:19Step in to an erroring Outf() call in AllocateGameAssets()
🏃
1:38:31Fix AllocateGameAssets() to correctly identify HHAAsset_Sound assets
1:38:31Fix AllocateGameAssets() to correctly identify HHAAsset_Sound assets
1:38:31Fix AllocateGameAssets() to correctly identify HHAAsset_Sound assets
1:38:44Step in to an erroring font Outf() call in AllocateGameAssets()
🏃
1:38:44Step in to an erroring font Outf() call in AllocateGameAssets()
🏃
1:38:44Step in to an erroring font Outf() call in AllocateGameAssets()
🏃
1:40:58Consult our Call Sites Sizes viewer
🏃
1:40:58Consult our Call Sites Sizes viewer
🏃
1:40:58Consult our Call Sites Sizes viewer
🏃
1:42:02Investigate our one allocation in handmade_memory.h
📖
1:42:02Investigate our one allocation in handmade_memory.h
📖
1:42:02Investigate our one allocation in handmade_memory.h
📖
1:42:38Enable the Sizes viewer to more specifically locate the call-sites of BootstrapPushSize()
1:42:38Enable the Sizes viewer to more specifically locate the call-sites of BootstrapPushSize()
1:42:38Enable the Sizes viewer to more specifically locate the call-sites of BootstrapPushSize()
1:46:51Consult our Call Sites Sizes viewer
🏃
1:46:51Consult our Call Sites Sizes viewer
🏃
1:46:51Consult our Call Sites Sizes viewer
🏃
1:47:33Label the GameState->TotalArena and Assets->ErrorStream
1:47:33Label the GameState->TotalArena and Assets->ErrorStream
1:47:33Label the GameState->TotalArena and Assets->ErrorStream
1:50:23Rerun the game, but see that the Assets->ErrorStream remains unnamed
🏃
1:50:23Rerun the game, but see that the Assets->ErrorStream remains unnamed
🏃
1:50:23Rerun the game, but see that the Assets->ErrorStream remains unnamed
🏃
1:51:12Fix typo in labelling of the Assets->ErrorStream
1:51:12Fix typo in labelling of the Assets->ErrorStream
1:51:12Fix typo in labelling of the Assets->ErrorStream
1:51:19Find that our Assets->ErrorStream remains unnamed
🏃
1:51:19Find that our Assets->ErrorStream remains unnamed
🏃
1:51:19Find that our Assets->ErrorStream remains unnamed
🏃
1:51:44Change SynchronizeAssetFileChanges() to label the Assets->ErrorStream after allocating a block
1:51:44Change SynchronizeAssetFileChanges() to label the Assets->ErrorStream after allocating a block
1:51:44Change SynchronizeAssetFileChanges() to label the Assets->ErrorStream after allocating a block
1:52:13Consult our completely labelled Call Sites Sizes viewer
🏃
1:52:13Consult our completely labelled Call Sites Sizes viewer
🏃
1:52:13Consult our completely labelled Call Sites Sizes viewer
🏃
1:53:09Set up to draw memory blocks at sizes proportional to their allocation size, introducing DrawMemoryRange()
1:53:09Set up to draw memory blocks at sizes proportional to their allocation size, introducing DrawMemoryRange()
1:53:09Set up to draw memory blocks at sizes proportional to their allocation size, introducing DrawMemoryRange()
1:58:56Q&A
🗩
1:58:56Q&A
🗩
1:58:56Q&A
🗩
1:59:59midnighttangentryan Q: Do you code C++ for your day job?
🗪
1:59:59midnighttangentryan Q: Do you code C++ for your day job?
🗪
1:59:59midnighttangentryan Q: Do you code C++ for your day job?
🗪
2:00:11zrizi Q: All these with / without comma macros is a complete nonsense… Is there any better way to deal with it?
🗪
2:00:11zrizi Q: All these with / without comma macros is a complete nonsense… Is there any better way to deal with it?
🗪
2:00:11zrizi Q: All these with / without comma macros is a complete nonsense… Is there any better way to deal with it?
🗪
2:01:22Introduce DEBUG_MEMORY_NAME to compress the debug macros
2:01:22Introduce DEBUG_MEMORY_NAME to compress the debug macros
2:01:22Introduce DEBUG_MEMORY_NAME to compress the debug macros
2:07:43neutrinoq Q: I'm a Web developer by trade and my day-to-day code seems to abstract away more logic than you do in your engine. Could you explain why that is?
🗪
2:07:43neutrinoq Q: I'm a Web developer by trade and my day-to-day code seems to abstract away more logic than you do in your engine. Could you explain why that is?
🗪
2:07:43neutrinoq Q: I'm a Web developer by trade and my day-to-day code seems to abstract away more logic than you do in your engine. Could you explain why that is?
🗪
2:08:32midnighttangentryan Q: What would you do differently if you had to work with other developers on this project?
🗪
2:08:32midnighttangentryan Q: What would you do differently if you had to work with other developers on this project?
🗪
2:08:32midnighttangentryan Q: What would you do differently if you had to work with other developers on this project?
🗪
2:11:52zrizi Q: Yes, this is a lot better. We would have a problem when dealing with a function with 0 parameters, though (I mean, the DEBUG_MEMORY_NAME is the only parameter) because of the trailing comma
🗪
2:11:52zrizi Q: Yes, this is a lot better. We would have a problem when dealing with a function with 0 parameters, though (I mean, the DEBUG_MEMORY_NAME is the only parameter) because of the trailing comma
🗪
2:11:52zrizi Q: Yes, this is a lot better. We would have a problem when dealing with a function with 0 parameters, though (I mean, the DEBUG_MEMORY_NAME is the only parameter) because of the trailing comma
🗪
2:12:34said6289 Q: I'm wondering what language feature would make what you have done with memory tracking easier. Would it be possible to make the entire call stack available for every function at compile time at all times so you don't have to do all this macro nonsense. I'm asking in the abstract sense, not whether C++ supports it
🗪
2:12:34said6289 Q: I'm wondering what language feature would make what you have done with memory tracking easier. Would it be possible to make the entire call stack available for every function at compile time at all times so you don't have to do all this macro nonsense. I'm asking in the abstract sense, not whether C++ supports it
🗪
2:12:34said6289 Q: I'm wondering what language feature would make what you have done with memory tracking easier. Would it be possible to make the entire call stack available for every function at compile time at all times so you don't have to do all this macro nonsense. I'm asking in the abstract sense, not whether C++ supports it
🗪
2:13:58juiceweasel Q: If someone were looking to get into game programming today, would you recommend starting with using an engine like Unity, or would you recommend doing this lower level programming?
🗪
2:13:58juiceweasel Q: If someone were looking to get into game programming today, would you recommend starting with using an engine like Unity, or would you recommend doing this lower level programming?
🗪
2:13:58juiceweasel Q: If someone were looking to get into game programming today, would you recommend starting with using an engine like Unity, or would you recommend doing this lower level programming?
🗪
2:17:23zrizi Q: (Off-topic) A question about RenderGroup, which was introduced many days ago (when we were still working on the software renderer). What is the purpose of this entity / object / API in few words nowadays? Is it essentially a command buffer for a specific FBO with for a specific glState?
🗪
2:17:23zrizi Q: (Off-topic) A question about RenderGroup, which was introduced many days ago (when we were still working on the software renderer). What is the purpose of this entity / object / API in few words nowadays? Is it essentially a command buffer for a specific FBO with for a specific glState?
🗪
2:17:23zrizi Q: (Off-topic) A question about RenderGroup, which was introduced many days ago (when we were still working on the software renderer). What is the purpose of this entity / object / API in few words nowadays? Is it essentially a command buffer for a specific FBO with for a specific glState?
🗪
2:19:43stric9 Q: Why are games unable to saturate storage bandwidth when loading? With modern SSDs it seems like loads should never take longer than 2-3 seconds?
🗪
2:19:43stric9 Q: Why are games unable to saturate storage bandwidth when loading? With modern SSDs it seems like loads should never take longer than 2-3 seconds?
🗪
2:19:43stric9 Q: Why are games unable to saturate storage bandwidth when loading? With modern SSDs it seems like loads should never take longer than 2-3 seconds?
🗪
2:21:43Brian Q: You've mentioned that with the engine you are writing for 1935 you are spending a lot more time documenting your process and decisions when tackling a problem. Do you have any tips or examples of what you find useful to keep track of? And what you find is just noise? I find documenting well difficult and it's easy to write too much and, ironically, not enough
🗪
2:21:43Brian Q: You've mentioned that with the engine you are writing for 1935 you are spending a lot more time documenting your process and decisions when tackling a problem. Do you have any tips or examples of what you find useful to keep track of? And what you find is just noise? I find documenting well difficult and it's easy to write too much and, ironically, not enough
🗪
2:21:43Brian Q: You've mentioned that with the engine you are writing for 1935 you are spending a lot more time documenting your process and decisions when tackling a problem. Do you have any tips or examples of what you find useful to keep track of? And what you find is just noise? I find documenting well difficult and it's easy to write too much and, ironically, not enough
🗪
2:23:16devsigner Q: Is there a good rule of thumb when it comes to guarding against errors in your code? Is there such a thing as too much handling? I could imagine having many if-statements to check conditions could cause a performance hit
🗪
2:23:16devsigner Q: Is there a good rule of thumb when it comes to guarding against errors in your code? Is there such a thing as too much handling? I could imagine having many if-statements to check conditions could cause a performance hit
🗪
2:23:16devsigner Q: Is there a good rule of thumb when it comes to guarding against errors in your code? Is there such a thing as too much handling? I could imagine having many if-statements to check conditions could cause a performance hit
🗪
2:26:08zrizi Q: So does it mean that you have augmented this caller information in your metaprogramming scheme so you can always query who called you? I hope that Jon integrated these features in JAI already…
🗪
2:26:08zrizi Q: So does it mean that you have augmented this caller information in your metaprogramming scheme so you can always query who called you? I hope that Jon integrated these features in JAI already…
🗪
2:26:08zrizi Q: So does it mean that you have augmented this caller information in your metaprogramming scheme so you can always query who called you? I hope that Jon integrated these features in JAI already…
🗪
2:26:41Brian Q: For more specifics on where you log, do you have a file for each function? Do you have one / few giant document that you just keep adding to? Do you just add it directly to the code itself?
🗪
2:26:41Brian Q: For more specifics on where you log, do you have a file for each function? Do you have one / few giant document that you just keep adding to? Do you just add it directly to the code itself?
🗪
2:26:41Brian Q: For more specifics on where you log, do you have a file for each function? Do you have one / few giant document that you just keep adding to? Do you just add it directly to the code itself?
🗪
2:26:57zrizi Q: RenderGroup: Thanks for answering. Sounds like an abstraction of the gl API + the notion of a renderpass?
🗪
2:26:57zrizi Q: RenderGroup: Thanks for answering. Sounds like an abstraction of the gl API + the notion of a renderpass?
🗪
2:26:57zrizi Q: RenderGroup: Thanks for answering. Sounds like an abstraction of the gl API + the notion of a renderpass?
🗪
2:28:13synchronizerman Q: What are your thoughts on visual programming languages? Do you imagine good use cases for them and, if so, in what contexts do you think they work? My understanding is that it's challenging to make a good visual language and that usually the special-purpose ones work better than attempts at general-use ones
🗪
2:28:13synchronizerman Q: What are your thoughts on visual programming languages? Do you imagine good use cases for them and, if so, in what contexts do you think they work? My understanding is that it's challenging to make a good visual language and that usually the special-purpose ones work better than attempts at general-use ones
🗪
2:28:13synchronizerman Q: What are your thoughts on visual programming languages? Do you imagine good use cases for them and, if so, in what contexts do you think they work? My understanding is that it's challenging to make a good visual language and that usually the special-purpose ones work better than attempts at general-use ones
🗪
2:30:47rokuhodo Q: To touch on the over-error checking, what about the case where you're making an API that is to be accessed by other developers? Right now I'm making a library for the TwitchAPI that will be constantly interfaced by users, but I feel like I'm holding their hand too much with errors instead of assuming they have any idea what they're doing, to the point where a significant amount of the library is just error checking
🗪
2:30:47rokuhodo Q: To touch on the over-error checking, what about the case where you're making an API that is to be accessed by other developers? Right now I'm making a library for the TwitchAPI that will be constantly interfaced by users, but I feel like I'm holding their hand too much with errors instead of assuming they have any idea what they're doing, to the point where a significant amount of the library is just error checking
🗪
2:30:47rokuhodo Q: To touch on the over-error checking, what about the case where you're making an API that is to be accessed by other developers? Right now I'm making a library for the TwitchAPI that will be constantly interfaced by users, but I feel like I'm holding their hand too much with errors instead of assuming they have any idea what they're doing, to the point where a significant amount of the library is just error checking
🗪
2:33:46reltz_ Q: Going back to a question near the beginning about "abstracting logic", I think the heart of the questions is due to a discussion about what is "clean code". Some higher level languages seem to make things "look good" but "clean code" is, at least to me, isn't very well defined. Maybe they were looking for why does this look complex vs something that's a few lines of code (but contained in a bunch of little files, in my opinion). My thoughts are due to performance, fine tuning, and knowing exactly what's going on rather than guessing. I do that a lot using python
🗪
2:33:46reltz_ Q: Going back to a question near the beginning about "abstracting logic", I think the heart of the questions is due to a discussion about what is "clean code". Some higher level languages seem to make things "look good" but "clean code" is, at least to me, isn't very well defined. Maybe they were looking for why does this look complex vs something that's a few lines of code (but contained in a bunch of little files, in my opinion). My thoughts are due to performance, fine tuning, and knowing exactly what's going on rather than guessing. I do that a lot using python
🗪
2:33:46reltz_ Q: Going back to a question near the beginning about "abstracting logic", I think the heart of the questions is due to a discussion about what is "clean code". Some higher level languages seem to make things "look good" but "clean code" is, at least to me, isn't very well defined. Maybe they were looking for why does this look complex vs something that's a few lines of code (but contained in a bunch of little files, in my opinion). My thoughts are due to performance, fine tuning, and knowing exactly what's going on rather than guessing. I do that a lot using python
🗪
2:44:01synchronizerman Q: Have you tried Odin? Any thoughts?
🗪
2:44:01synchronizerman Q: Have you tried Odin? Any thoughts?
🗪
2:44:01synchronizerman Q: Have you tried Odin? Any thoughts?
🗪
2:44:13zrizi Q: Casey, what you're saying is really good, but opposite to what devs are being told in schools…
🗪
2:44:13zrizi Q: Casey, what you're saying is really good, but opposite to what devs are being told in schools…
🗪
2:44:13zrizi Q: Casey, what you're saying is really good, but opposite to what devs are being told in schools…
🗪
2:46:55synchronizerman Q: Java is still Intro to CS and oftentimes C / C++ is barely covered. Why do you think that is? I think it's because a lot of old "corporate" financial companies in the old guard were stuck in OOP server land. It's frustrating
🗪
2:46:55synchronizerman Q: Java is still Intro to CS and oftentimes C / C++ is barely covered. Why do you think that is? I think it's because a lot of old "corporate" financial companies in the old guard were stuck in OOP server land. It's frustrating
🗪
2:46:55synchronizerman Q: Java is still Intro to CS and oftentimes C / C++ is barely covered. Why do you think that is? I think it's because a lot of old "corporate" financial companies in the old guard were stuck in OOP server land. It's frustrating
🗪
2:48:21We're all good here
🗩
2:48:21We're all good here
🗩
2:48:21We're all good here
🗩