Displaying Import Errors
?
?

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:00Recap and set the stage for the day
🗩
0:00Recap and set the stage for the day
🗩
0:00Recap and set the stage for the day
🗩
2:17Fix ParseTopLevelBlock() to correctly consume a semicolon only once, and remove the redundant check for Context->HHTOut, as per frostyninja's suggestion
2:17Fix ParseTopLevelBlock() to correctly consume a semicolon only once, and remove the redundant check for Context->HHTOut, as per frostyninja's suggestion
2:17Fix ParseTopLevelBlock() to correctly consume a semicolon only once, and remove the redundant check for Context->HHTOut, as per frostyninja's suggestion
6:34Loading alignment points from .hht and applying them to the live assets
🗩
6:34Loading alignment points from .hht and applying them to the live assets
🗩
6:34Loading alignment points from .hht and applying them to the live assets
🗩
7:31Rename the "IMPORT" and "IMPORT & SAVE" asset editor buttons to "RELOAD HHTs" and "SAVE HHTs"
7:31Rename the "IMPORT" and "IMPORT & SAVE" asset editor buttons to "RELOAD HHTs" and "SAVE HHTs"
7:31Rename the "IMPORT" and "IMPORT & SAVE" asset editor buttons to "RELOAD HHTs" and "SAVE HHTs"
10:54Fix compile errors, introducing a version of IsValid() that takes a buffer
10:54Fix compile errors, introducing a version of IsValid() that takes a buffer
10:54Fix compile errors, introducing a version of IsValid() that takes a buffer
13:41Try out our "RELOAD HHTs" button to see that nothing happens
🏃
13:41Try out our "RELOAD HHTs" button to see that nothing happens
🏃
13:41Try out our "RELOAD HHTs" button to see that nothing happens
🏃
14:49Delete base_game.hha and intro_cutscene.hha, and let the game regenerate them to find that we must have a bug, but do not know where
🏃
14:49Delete base_game.hha and intro_cutscene.hha, and let the game regenerate them to find that we must have a bug, but do not know where
🏃
14:49Delete base_game.hha and intro_cutscene.hha, and let the game regenerate them to find that we must have a bug, but do not know where
🏃
16:48Displaying import errors in our asset editor panel
🗩
16:48Displaying import errors in our asset editor panel
🗩
16:48Displaying import errors in our asset editor panel
🗩
20:17Add an ErrorStream to the htt_context for ParseHHT() to write into
20:17Add an ErrorStream to the htt_context for ParseHHT() to write into
20:17Add an ErrorStream to the htt_context for ParseHHT() to write into
25:38Set up AssetEditor() to print out our ErrorStream
25:38Set up AssetEditor() to print out our ErrorStream
25:38Set up AssetEditor() to print out our ErrorStream
30:10Upgrade TextOp() to operate on a length-string rather than a char *
30:10Upgrade TextOp() to operate on a length-string rather than a char *
30:10Upgrade TextOp() to operate on a length-string rather than a char *
37:51Find that everything remains intact
🏃
37:51Find that everything remains intact
🏃
37:51Find that everything remains intact
🏃
38:30Further set up AssetEditor() to print out our ErrorStream, upgrading our text printing functions to work on a length-string
38:30Further set up AssetEditor() to print out our ErrorStream, upgrading our text printing functions to work on a length-string
38:30Further set up AssetEditor() to print out our ErrorStream, upgrading our text printing functions to work on a length-string
55:08Find that everything remains working
🏃
55:08Find that everything remains working
🏃
55:08Find that everything remains working
🏃
55:34Enable AssetEditor() to print the actual error stream contents
55:34Enable AssetEditor() to print the actual error stream contents
55:34Enable AssetEditor() to print the actual error stream contents
55:53Check out our asset import errors in-game
🏃
55:53Check out our asset import errors in-game
🏃
55:53Check out our asset import errors in-game
🏃
56:50Make Error() colourise its printout
56:50Make Error() colourise its printout
56:50Make Error() colourise its printout
57:31Check out our colourised errors in-game
🏃
57:31Check out our colourised errors in-game
🏃
57:31Check out our colourised errors in-game
🏃
57:49Try to address our syntax errors in base_game.hht
🗹
57:49Try to address our syntax errors in base_game.hht
🗹
57:49Try to address our syntax errors in base_game.hht
🗹
59:46Enable GetTokenRaw() to track newlines within block comments
59:46Enable GetTokenRaw() to track newlines within block comments
59:46Enable GetTokenRaw() to track newlines within block comments
1:03:01Find that our line numbers are now correct
🏃
1:03:01Find that our line numbers are now correct
🏃
1:03:01Find that our line numbers are now correct
🏃
1:03:13Enable RequireToken() to report its expected token
1:03:13Enable RequireToken() to report its expected token
1:03:13Enable RequireToken() to report its expected token
1:07:34Check out our more informative errors in-game
🏃
1:07:34Check out our more informative errors in-game
🏃
1:07:34Check out our more informative errors in-game
🏃
1:07:51Fix ParseTopLevelBlock() to output alignment points using the correct syntax
1:07:51Fix ParseTopLevelBlock() to output alignment points using the correct syntax
1:07:51Fix ParseTopLevelBlock() to output alignment points using the correct syntax
1:09:02Find that the asset importer now runs, and loads our .hht alignment points correctly
🏃
1:09:02Find that the asset importer now runs, and loads our .hht alignment points correctly
🏃
1:09:02Find that the asset importer now runs, and loads our .hht alignment points correctly
🏃
1:10:24Backup our .hht files, trigger our asset editor to save out new files, and find that the original and new ones match
🗹
1:10:24Backup our .hht files, trigger our asset editor to save out new files, and find that the original and new ones match
🗹
1:10:24Backup our .hht files, trigger our asset editor to save out new files, and find that the original and new ones match
🗹
1:11:24Edit alignment points in-game
🏃
1:11:24Edit alignment points in-game
🏃
1:11:24Edit alignment points in-game
🏃
1:14:45Find that our hero's head art asset is incorrect
🗹
1:14:45Find that our hero's head art asset is incorrect
🗹
1:14:45Find that our hero's head art asset is incorrect
🗹
1:17:23Try to save our edited alignment points, and find that we did not save the file
🏃
1:17:23Try to save our edited alignment points, and find that we did not save the file
🏃
1:17:23Try to save our edited alignment points, and find that we did not save the file
🏃
1:18:14Enable SynchronizeAssetFileChanges() to report "Load" or "Save" to our UI
1:18:14Enable SynchronizeAssetFileChanges() to report "Load" or "Save" to our UI
1:18:14Enable SynchronizeAssetFileChanges() to report "Load" or "Save" to our UI
1:21:37See our "Load" / "Save" report in-game, and again try to save
🏃
1:21:37See our "Load" / "Save" report in-game, and again try to save
🏃
1:21:37See our "Load" / "Save" report in-game, and again try to save
🏃
1:23:12Enable ParseTopLevelBlock() to correctly merge alignment point changes, introducing OutPoint()
1:23:12Enable ParseTopLevelBlock() to correctly merge alignment point changes, introducing OutPoint()
1:23:12Enable ParseTopLevelBlock() to correctly merge alignment point changes, introducing OutPoint()
1:28:18Edit and re-save alignment points, to find that our new .hht now (correctly) differs
🏃
1:28:18Edit and re-save alignment points, to find that our new .hht now (correctly) differs
🏃
1:28:18Edit and re-save alignment points, to find that our new .hht now (correctly) differs
🏃
1:29:09Make the caller of OutPoint() responsible for aligning the output
1:29:09Make the caller of OutPoint() responsible for aligning the output
1:29:09Make the caller of OutPoint() responsible for aligning the output
1:30:40Try again to edit and re-save alignment points, to find that the .hht does not change
🏃
1:30:40Try again to edit and re-save alignment points, to find that the .hht does not change
🏃
1:30:40Try again to edit and re-save alignment points, to find that the .hht does not change
🏃
1:32:38Fix the compile error in the calls to Outf()
1:32:38Fix the compile error in the calls to Outf()
1:32:38Fix the compile error in the calls to Outf()
1:33:21Find that the .hht now (correctly) differs after saving
🏃
1:33:21Find that the .hht now (correctly) differs after saving
🏃
1:33:21Find that the .hht now (correctly) differs after saving
🏃
1:33:43Try again to edit and re-save alignment points, to find that the .hht correctly changes
🏃
1:33:43Try again to edit and re-save alignment points, to find that the .hht correctly changes
🏃
1:33:43Try again to edit and re-save alignment points, to find that the .hht correctly changes
🏃
1:35:53Manually modify our base_game.hht, edit alignment points and re-save them in-game, and find that the .hht file does not get updated reliably
🏃
1:35:53Manually modify our base_game.hht, edit alignment points and re-save them in-game, and find that the .hht file does not get updated reliably
🏃
1:35:53Manually modify our base_game.hht, edit alignment points and re-save them in-game, and find that the .hht file does not get updated reliably
🏃
1:37:24Enable ParseHHT() to report atomic replace failure or success
1:37:24Enable ParseHHT() to report atomic replace failure or success
1:37:24Enable ParseHHT() to report atomic replace failure or success
1:39:20Reproduce our save bug
🏃
1:39:20Reproduce our save bug
🏃
1:39:20Reproduce our save bug
🏃
1:40:17Make ParseHHT() report the .hht filename
1:40:17Make ParseHHT() report the .hht filename
1:40:17Make ParseHHT() report the .hht filename
1:42:31Try to reproduce our save bug, crash in StringLength() and investigate why
🏃
1:42:31Try to reproduce our save bug, crash in StringLength() and investigate why
🏃
1:42:31Try to reproduce our save bug, crash in StringLength() and investigate why
🏃
1:46:19Rebuild in -Od, reproduce the StringLength() bug and step through it to see that we unexpectedly get to the va_list version of Outf()
🏃
1:46:19Rebuild in -Od, reproduce the StringLength() bug and step through it to see that we unexpectedly get to the va_list version of Outf()
🏃
1:46:19Rebuild in -Od, reproduce the StringLength() bug and step through it to see that we unexpectedly get to the va_list version of Outf()
🏃
1:49:16Verify the fact that a va_list is defined as a char *, which can throw off function overloading
📖
1:49:16Verify the fact that a va_list is defined as a char *, which can throw off function overloading
📖
1:49:16Verify the fact that a va_list is defined as a char *, which can throw off function overloading
📖
1:51:28Rename the va_list overload of Outf() to OutfArgList()
1:51:28Rename the va_list overload of Outf() to OutfArgList()
1:51:28Rename the va_list overload of Outf() to OutfArgList()
1:52:08Find that we have fixed our va_list induced bug, and that the .hht files now appear to reliably get saved
🏃
1:52:08Find that we have fixed our va_list induced bug, and that the .hht files now appear to reliably get saved
🏃
1:52:08Find that we have fixed our va_list induced bug, and that the .hht files now appear to reliably get saved
🏃
1:54:04Q&A
🗩
1:54:04Q&A
🗩
1:54:04Q&A
🗩
1:54:39teamrandb And this is why I don't use overloading functions...
🗪
1:54:39teamrandb And this is why I don't use overloading functions...
🗪
1:54:39teamrandb And this is why I don't use overloading functions...
🗪
1:54:55frostyninja Q: Wouldn't it be nice to move the old file to a <filename>.bak in the atomic file replace?
🗪
1:54:55frostyninja Q: Wouldn't it be nice to move the old file to a <filename>.bak in the atomic file replace?
🗪
1:54:55frostyninja Q: Wouldn't it be nice to move the old file to a <filename>.bak in the atomic file replace?
🗪
1:56:10garryjohanson Q: How awesome would it be if windbg preview had trace diffs?
🗪
1:56:10garryjohanson Q: How awesome would it be if windbg preview had trace diffs?
🗪
1:56:10garryjohanson Q: How awesome would it be if windbg preview had trace diffs?
🗪
1:56:33frostyninja Q: Read this in Game Engine Architecture by Naughty Dog's guy I can't remember the name of, but they use C++11 user-defined literals to do compile-time hashes on strings. "At Naughty Dog, we permit runtime hashing of strings, but we also use C++11’s user-defined literals feature to transform the syntax "any_string"_sid directly into a hashed integer value at compile time."
🗪
1:56:33frostyninja Q: Read this in Game Engine Architecture by Naughty Dog's guy I can't remember the name of, but they use C++11 user-defined literals to do compile-time hashes on strings. "At Naughty Dog, we permit runtime hashing of strings, but we also use C++11’s user-defined literals feature to transform the syntax "any_string"_sid directly into a hashed integer value at compile time."
🗪
1:56:33frostyninja Q: Read this in Game Engine Architecture by Naughty Dog's guy I can't remember the name of, but they use C++11 user-defined literals to do compile-time hashes on strings. "At Naughty Dog, we permit runtime hashing of strings, but we also use C++11’s user-defined literals feature to transform the syntax "any_string"_sid directly into a hashed integer value at compile time."
🗪
1:59:40Brian Q: What happens when RequireToken fails? I realize it appends an error, but what does it return? An empty / invalid token? I ask because near the top of the while(Parsing(Tokens)) (or something) where you get the filename and require strings, you did not check the result. So curious if something went wrong, would it just be null?
🗪
1:59:40Brian Q: What happens when RequireToken fails? I realize it appends an error, but what does it return? An empty / invalid token? I ask because near the top of the while(Parsing(Tokens)) (or something) where you get the filename and require strings, you did not check the result. So curious if something went wrong, would it just be null?
🗪
1:59:40Brian Q: What happens when RequireToken fails? I realize it appends an error, but what does it return? An empty / invalid token? I ask because near the top of the while(Parsing(Tokens)) (or something) where you get the filename and require strings, you did not check the result. So curious if something went wrong, would it just be null?
🗪
2:00:20quickshift_ Q: Off-topic, just an idea: In 4coder, you could do the block re-indentation after exiting the insert mode, instead of live. Then there would be no "jumpy" code while typing
🗪
2:00:20quickshift_ Q: Off-topic, just an idea: In 4coder, you could do the block re-indentation after exiting the insert mode, instead of live. Then there would be no "jumpy" code while typing
🗪
2:00:20quickshift_ Q: Off-topic, just an idea: In 4coder, you could do the block re-indentation after exiting the insert mode, instead of live. Then there would be no "jumpy" code while typing
🗪
2:01:35ejgremlin Q: What are your thoughts on persistent structures like used in Clojure?
🗪
2:01:35ejgremlin Q: What are your thoughts on persistent structures like used in Clojure?
🗪
2:01:35ejgremlin Q: What are your thoughts on persistent structures like used in Clojure?
🗪
2:01:57aidsjorb Q: Off-topic: This probably isn't relevant to you working in a small / solo company but as you get "older" any thoughts on aging as a programmer? In a large company it seems many become "managers" but irrespective of large organizations / teams anything you find noteworthy / interesting about your day-to-day as you get older?
🗪
🍷
2:01:57aidsjorb Q: Off-topic: This probably isn't relevant to you working in a small / solo company but as you get "older" any thoughts on aging as a programmer? In a large company it seems many become "managers" but irrespective of large organizations / teams anything you find noteworthy / interesting about your day-to-day as you get older?
🗪
🍷
2:01:57aidsjorb Q: Off-topic: This probably isn't relevant to you working in a small / solo company but as you get "older" any thoughts on aging as a programmer? In a large company it seems many become "managers" but irrespective of large organizations / teams anything you find noteworthy / interesting about your day-to-day as you get older?
🗪
🍷
2:06:20aidsjorb Q: I asked on the pre-stream yesterday about aspects of programming you didn't enjoy and you mentioned no spec or under spec'd problem domains often being annoying. I was thinking that may well be a young man's game, at least doing it multiple projects in a row
🗪
2:06:20aidsjorb Q: I asked on the pre-stream yesterday about aspects of programming you didn't enjoy and you mentioned no spec or under spec'd problem domains often being annoying. I was thinking that may well be a young man's game, at least doing it multiple projects in a row
🗪
2:06:20aidsjorb Q: I asked on the pre-stream yesterday about aspects of programming you didn't enjoy and you mentioned no spec or under spec'd problem domains often being annoying. I was thinking that may well be a young man's game, at least doing it multiple projects in a row
🗪
2:08:33ejgremlin Q: The structures are like lists in lisp where old versions are kept around because new ones reference the old with only sub-parts containing the new data appended on
🗪
2:08:33ejgremlin Q: The structures are like lists in lisp where old versions are kept around because new ones reference the old with only sub-parts containing the new data appended on
🗪
2:08:33ejgremlin Q: The structures are like lists in lisp where old versions are kept around because new ones reference the old with only sub-parts containing the new data appended on
🗪
2:09:29y2kiah Q: It's building up diffs
🗪
2:09:29y2kiah Q: It's building up diffs
🗪
2:09:29y2kiah Q: It's building up diffs
🗪
2:09:52rippinwaffles Q: Hey Casey, I just started working on a super OOP open-source project in C++, and one thing I'm noticing is that it's so hard to find the code that actually does the thing I'm looking for. Can I expect this with modern C++, because it blows? Literally all I'm trying to do is add a menu option, but my exploration is so far looking at eight different files, none of which actually contains the thing that I want, which is, from what I understand, literally just adding a boolean flag in the metadata
🗪
2:09:52rippinwaffles Q: Hey Casey, I just started working on a super OOP open-source project in C++, and one thing I'm noticing is that it's so hard to find the code that actually does the thing I'm looking for. Can I expect this with modern C++, because it blows? Literally all I'm trying to do is add a menu option, but my exploration is so far looking at eight different files, none of which actually contains the thing that I want, which is, from what I understand, literally just adding a boolean flag in the metadata
🗪
2:09:52rippinwaffles Q: Hey Casey, I just started working on a super OOP open-source project in C++, and one thing I'm noticing is that it's so hard to find the code that actually does the thing I'm looking for. Can I expect this with modern C++, because it blows? Literally all I'm trying to do is add a menu option, but my exploration is so far looking at eight different files, none of which actually contains the thing that I want, which is, from what I understand, literally just adding a boolean flag in the metadata
🗪
2:12:30ginger_bill I am working on codegen because LLVM has too many issues: It is slow, it has numerous bugs, it's weirdly / badly designed
🗪
2:12:30ginger_bill I am working on codegen because LLVM has too many issues: It is slow, it has numerous bugs, it's weirdly / badly designed
🗪
2:12:30ginger_bill I am working on codegen because LLVM has too many issues: It is slow, it has numerous bugs, it's weirdly / badly designed
🗪
2:13:36level5hm Q: About splitting code into microscopic files: My coworkers love it because it makes the code "easier to read" for them. It seems like they get lost if a file has > 200 lines
🗪
2:13:36level5hm Q: About splitting code into microscopic files: My coworkers love it because it makes the code "easier to read" for them. It seems like they get lost if a file has > 200 lines
🗪
2:13:36level5hm Q: About splitting code into microscopic files: My coworkers love it because it makes the code "easier to read" for them. It seems like they get lost if a file has > 200 lines
🗪
2:13:54ivereadthesequel Q: Will moving away from modal in 4coder affect your wrists? Or have you found that it won't?
🗪
2:13:54ivereadthesequel Q: Will moving away from modal in 4coder affect your wrists? Or have you found that it won't?
🗪
2:13:54ivereadthesequel Q: Will moving away from modal in 4coder affect your wrists? Or have you found that it won't?
🗪
2:15:29nsaibot Q: The other day I heard someone make the claim that programming without syntax highlighting is more error prone. What would you say?
🗪
2:15:29nsaibot Q: The other day I heard someone make the claim that programming without syntax highlighting is more error prone. What would you say?
🗪
2:15:29nsaibot Q: The other day I heard someone make the claim that programming without syntax highlighting is more error prone. What would you say?
🗪
2:22:00Wrap it up
🗩
2:22:00Wrap it up
🗩
2:22:00Wrap it up
🗩