The functional like patterns of the language was creeping me out, and then as I watched through the video, I realized that M4 was, in fact, a stack based language.
There was a guy at my work who was a big fan of m4. He wrote a script generator in it and it took 3 hours to run. Another coworker ported it to Python and it went down to 17 seconds.
Fun story the c preprocessor is actually a standalone executable that can be used by it self, and before the production js bundlers existed i used it us a js bundler
So far I have watched 4mins of this video and feel the urge to comment "You’re crazy". Can’t wait to watch the rest. Also say what you want about the default blank lines and dnl (of course that’s dumb) but there is just something cool about using a piece of software that is 50 years old that was written by K&R themselves. Edit: 23:30 lol
The configure build system used to solve a problem - having a single build script for a wide variety of incompatible "unix" systems (HP/UX, AIX, DGUX, Ultrix, Irix, SunOS, Apollo Domain, etc.). It was fairly common to have to support all of those systems with one set of code, and configure made it less disgusting. But that was decades ago, and all the world is Linux :)
About the build systems, I started hating them as soon as I tried to use CMake on windows. I was writing Qt project and it used QMake because it was easy and readable, but I thought that switching to something more popular and supported might be better. Spoiler: It wasn't. I began actually learning CMake, experimenting with project layouts, but I just couldn't learn it. It was not comprehensive to the point of disgust. Then I switched to linux and finally got CMake working. I was so excited that I finally 'learned' it, I started using CMake everywhere, even to write single-file school homeworks. But then I learned Make... And now i think that this is a perfect build system. No bullshit. Gets the work done. May get complicated, but doesn't have to. A great balance between simplicity and extensibility. Love it. Not saying that using cc is bad. But I just love make.
there's something so funny about using a macro language exclusively for side-effects and "troubleshooting" when it actually generates anything, one of your most unique stream ideas
M4 is used a lot in embedded applications and firmware. It’s on literally every cellphone on the plant as well as all Unix and Linux ARM variants, as a part of the MicroOP code used to route internal signals to the individual Instruction Sets. Yes, it can build RayLib, not that it needs to, it has a vector library built in.
I'm increasingly liking the idea of Sledgehammer Programming. I've been doing it here and there a little bit in my recent project, it's a pretty good way of making yourself do the thing you don't want to do, but have to.
Never ending awesomeness. Someone you can spontaneously build something with. Not about money, just passion. But ends up being a huge multi billion dollar company
Can you provide a high resolution version of the neon gnu in the thumbnail? I love the image and would like to use it in my Emacs splash page, as it fits my preferred colors nicely. Thank you!
1:50:00 You don't actually need to call it twice, according to the docs you can give a single trailing argument for the `else`, i.e. when it's not equal
1:15:34 autotools suite solve the issue to ensure you have sane and reproducible build environment across multiple unix implementations or arch which can be using different binary/library formats, nowadays we mostly just use linux and distro supported toolchain so most of the pain points are not as visible. most flat or complex build systems will end up recreating the same checks given enough times and marginalities appear in different setups if it was still a requirement . they also tend to hit the same issue that caused from general opensoruce packages
I don't know what WM or DE you're using, but surely there must be a color inversion function you can bind to some key combo. I love Dark Reader, but sometimes it fails, especially on weird mix and match websites, and you just need to color invert the window. That argument list thing is weird, especially the empty parens equating to one argument thing, but I actually genuinely love the empty comma separated list thing and use that to force evaluation of default arguments in my programming language. As for build systems, I've been working on refining my data syntax for my language to make it easier to use the language itself as the build script, kind of like Zig, but hopefully a much better language. I guess time will tell on that one, if I ever release it publicly.
Here is another dumb idea for using raylib with M4. use the macros to generate a hexdump or assembly code as a text file then use a reverse hexdumper or assembler to generate a binary object file that can be linked with raylib.
I tried to use M4 once lol but I couldn't wrap my head around it Just think about it: somewhere out there there is a M4 wizard who built his own programming language in M4, and that guy is 1000x more powerful than all of us combined
dark mode makes you increase the brightness of your screen to be able to see which then damages your eye sight light mode on the other hand forces you to decrease the brightness and you can read off your screen for hours without hurting your eyes because dark font on white background can be seen easily unlike white font on dark screen which can only be seen when the brightness is increased
My whole world changed when I learned, that the screen should be only as bright as ambient room light. I do have to adjust it depending on the lighting, but it's not that bad. With light mode the eye can properly contract to see sharper image as opposed to blurrier white-on-black image. Having said that it's still a personal preference of people whether to go light or go dark :D
This video is not about learning m4. Spent a long time going through it all thinking may be he will cover a lot of m4 even though he is making it do something else but its not helpful. I was here to know enough of m4 to understand some other C project config i was looking into but wasted too much time.
Nested quotes aren't great when you realize that you don't need to escape '«', but you'll need to escape '»'. When you just escape EVERYTHING with '\', you just treat every byte after '\' literally, including line feed, maybe adding support for special cases like ' \t\v\f ', '\0', '\xFF'.
You only need to escape the ending quotes if you have a bad parsing algorithm. Tracking quote depth is pretty easy, xml and html do that and I'm sure many others. Json is probably the same but idk json lol
Yeah but who would use the end quote without the start quote? If you’ve already seen a start quote you can simply treat the end quote as a normal character, and not the end of the string.
@@chevychavanne4433Consider this funny string: «»«» That's what he meant. You have to escape things anyway, but _only sometimes,_ which adds more complexity for no reason
the bg scared the shit out of me
a'mister a'zozzing
Runglish is very entertaining to hear.
> a peaceful stream recording
> subtittles on 4:35
That's penger 😂
The functional like patterns of the language was creeping me out, and then as I watched through the video, I realized that M4 was, in fact, a stack based language.
Ooooo! Now I get what obstack was!
I am too young for this, but I always imagine that stack were the super hot new thing in the 70s.
There was a guy at my work who was a big fan of m4. He wrote a script generator in it and it took 3 hours to run. Another coworker ported it to Python and it went down to 17 seconds.
Who said Python is slow hah!
rewrite it in c just so it runs in 17 nano seconds
At least is has "implict :: none" to fix it, C++ has bad defaults and there is no language features to change it, need a linter.
I’ve been using M4 for years to do static site generation for my website; it works really great :)
"who f designed this language?"
"oh, Dannis Richie and Brian Kernigham? oh, it's a f great language"
LOL
Legends 😂
Fun story the c preprocessor is actually a standalone executable that can be used by it self, and before the production js bundlers existed i used it us a js bundler
So far I have watched 4mins of this video and feel the urge to comment "You’re crazy". Can’t wait to watch the rest. Also say what you want about the default blank lines and dnl (of course that’s dumb) but there is just something cool about using a piece of software that is 50 years old that was written by K&R themselves.
Edit: 23:30 lol
I love this channel so much. I've wanted this for a long time
Yes, the time has come to use programming languages as build systems and build systems as programming languages.
That's what I love about mister zozen!
Subtitles hijacked by penger ASCII art rendering in top of the video
The configure build system used to solve a problem - having a single build script for a wide variety of incompatible "unix" systems (HP/UX, AIX, DGUX, Ultrix, Irix, SunOS, Apollo Domain, etc.). It was fairly common to have to support all of those systems with one set of code, and configure made it less disgusting. But that was decades ago, and all the world is Linux :)
Coming soon "sand to Raylib in 2 hours" by Tsoding
About the build systems, I started hating them as soon as I tried to use CMake on windows. I was writing Qt project and it used QMake because it was easy and readable, but I thought that switching to something more popular and supported might be better. Spoiler: It wasn't.
I began actually learning CMake, experimenting with project layouts, but I just couldn't learn it. It was not comprehensive to the point of disgust. Then I switched to linux and finally got CMake working. I was so excited that I finally 'learned' it, I started using CMake everywhere, even to write single-file school homeworks.
But then I learned Make... And now i think that this is a perfect build system. No bullshit. Gets the work done. May get complicated, but doesn't have to. A great balance between simplicity and extensibility. Love it.
Not saying that using cc is bad. But I just love make.
there's something so funny about using a macro language exclusively for side-effects and "troubleshooting" when it actually generates anything, one of your most unique stream ideas
I envy the people who have the patience to watch these in full
M4 is used a lot in embedded applications and firmware. It’s on literally every cellphone on the plant as well as all Unix and Linux ARM variants, as a part of the MicroOP code used to route internal signals to the individual Instruction Sets.
Yes, it can build RayLib, not that it needs to, it has a vector library built in.
"I think I might die in the process" -- me every time i have to touch autoconf for any reason
1:16:00 Btw that’s not “corporate shit” that’s “Free Software portability shit” :) no managers ever saw Gnu projects
next time, we will gonna make our toaster call raylib.
Is another recreational programming session witha mista sausage 🎉
About shitty defaults, there is fortran with implicit types based on first character on variable name...
Optimal
i mean, that had a purpose
@@chri-k it has, but it still is shitty default
@@RukopisyNarnie the whole point is that you can't afford the space to change defaults.
Modern fortran no longer does that (by default anyway)
@@chri-k it doesn't? Cool
I'm increasingly liking the idea of Sledgehammer Programming.
I've been doing it here and there a little bit in my recent project, it's a pretty good way of making yourself do the thing you don't want to do, but have to.
I love these backgrounds.
I already miss the Penger folder.
I shat myself because of your bloody wallpaper
Darkreader, my friend. It will automatically choose dark mode for you or use a custom style to remove flashbangs like you suffered around 11:00.
Waiting for the follow-up video with raylib from makefile
Man I wish I knew someone like you in irl. I just want someone to talk about C and stuff.
Never ending awesomeness. Someone you can spontaneously build something with. Not about money, just passion. But ends up being a huge multi billion dollar company
fr
Russian? Let's talk!
@@iamzeus1250 Nah, I'm from the Northwest of USA.
Resources you might find interesting(or already know about): Handmade Network, Hidden(nowadays Digital) Grove.
Also, JC Denton on the userpic - good taste :)
The "who do you think i am" was amazing
Can you provide a high resolution version of the neon gnu in the thumbnail? I love the image and would like to use it in my Emacs splash page, as it fits my preferred colors nicely. Thank you!
Next stream: write m4 macro that directly contacts an LLM and shitout the result
Why are you no longer using i3?
I see you use a Behringer C-1U (i reckon)... have you had the low volume problem? If so, how did you fix it?
YAY STREAM! i love you videos! first btw
1:50:00 You don't actually need to call it twice, according to the docs you can give a single trailing argument for the `else`, i.e. when it's not equal
Jeeez... M4? Don't bring back my horrific experiences with that horrific language 😅
1:15:34 autotools suite solve the issue to ensure you have sane and reproducible build environment across multiple unix implementations or arch which can be using different binary/library formats, nowadays we mostly just use linux and distro supported toolchain so most of the pain points are not as visible.
most flat or complex build systems will end up recreating the same checks given enough times and marginalities appear in different setups if it was still a requirement . they also tend to hit the same issue that caused from general opensoruce packages
warning! urmom's stack may be used
and then this nice lady shits out sister
For gnu stuff, you can use emacs's info-mode instead of the html manual
WHO DESIGNED THIS LANGUAGE!???
...
Oh.
😆
I guess that configure is checking environment and compiler more thoroughly. Single CC command could work but it wouldn't work on all the environments
I don't know what WM or DE you're using, but surely there must be a color inversion function you can bind to some key combo. I love Dark Reader, but sometimes it fails, especially on weird mix and match websites, and you just need to color invert the window. That argument list thing is weird, especially the empty parens equating to one argument thing, but I actually genuinely love the empty comma separated list thing and use that to force evaluation of default arguments in my programming language. As for build systems, I've been working on refining my data syntax for my language to make it easier to use the language itself as the build script, kind of like Zig, but hopefully a much better language. I guess time will tell on that one, if I ever release it publicly.
Now I seriously want to use raylib with bash
i just followed the hawktui organization to just laugh at the meme
Here is another dumb idea for using raylib with M4. use the macros to generate a hexdump or assembly code as a text file then use a reverse hexdumper or assembler to generate a binary object file that can be linked with raylib.
What if you need a string with unbalanced quotes?
Still have to escape somehow.
since when is Zozi using Void
is there any reason you switched from i3 rexim?
I tried to use M4 once lol but I couldn't wrap my head around it
Just think about it: somewhere out there there is a M4 wizard who built his own programming language in M4, and that guy is 1000x more powerful than all of us combined
Program in DOSbox??
What about Koka Programming Language ?
1:45:33 nya moment(watching at 2x)
He's still in Russia?
Someone gets this man a fucking visa
He already mentioned he wouldn't leave because he takes care of his parents.
@@driden1987 fuck
Legend
If they draft him, idk what I'll do
Man, that background screamer
M4 seems to have had some influence from prolog. Is there any history about this?
no
Raylib is crazy cool!!!
This is such a cursed mission.
I always ask why, why didn't they use Perl
balsam onto my soul
Could as well read the gnu manual in emacs with C-h R m4
In the 70s we had gpm and m4.
dark mode makes you increase the brightness of your screen to be able to see which then damages your eye sight
light mode on the other hand forces you to decrease the brightness and you can read off your screen for hours without hurting your eyes because dark font on white background can be seen easily unlike white font on dark screen which can only be seen when the brightness is increased
My whole world changed when I learned, that the screen should be only as bright as ambient room light. I do have to adjust it depending on the lighting, but it's not that bad. With light mode the eye can properly contract to see sharper image as opposed to blurrier white-on-black image. Having said that it's still a personal preference of people whether to go light or go dark :D
@@strawberry_blush81use f.lux
oh no, he's going to have headaches.
and I'm an expert CMake developer, not even I would touch that thing
What is wrong with the subtitles
somehow he has rigged his subtitles to show his live chat.
@24:00 HAHAHA xD
brother laughed in every way he could
Thank you.....
We need a stream about Tcl
Terry Mountains
Hemlo Tszotszen
Hell yeah raylib speedrun
Never seen someone learn a language by reading its source code
define('nice',69)nice
not line orientated, it is character orientated.
00:00:40 Me already: Can your Python do this?
легенда! 😎
This video is not about learning m4. Spent a long time going through it all thinking may be he will cover a lot of m4 even though he is making it do something else but its not helpful. I was here to know enough of m4 to understand some other C project config i was looking into but wasted too much time.
AOSP selinux rule using m4, dont know other distro
WINDOW??????? ok its all good
why are the dislikes more than the likes damn??
who create this error message? oOo this is great error message hehehe
i want that bg
penger.city/wallpapers/
Use dark reader.
Imagine not reading info pages in Emacs but in the browser. Yuck 🤮
tsoding spend 5 minutes talking about how the different quotes should be in more languages just to instantly learn why they arent
Learn want? That m4 error message are shit? Why should we not fix shitty error messages?
iuchoob
Todo: unban youtube in rusia
peng
Do austral
Daily reminder that emacs is trash.
Eww M4 🤮
the 3'rd comment
Nested quotes aren't great when you realize that you don't need to escape '«', but you'll need to escape '»'. When you just escape EVERYTHING with '\', you just treat every byte after '\' literally, including line feed, maybe adding support for special cases like '
\t\v\f
', '\0', '\xFF'.
You only need to escape the ending quotes if you have a bad parsing algorithm. Tracking quote depth is pretty easy, xml and html do that and I'm sure many others. Json is probably the same but idk json lol
Yeah but who would use the end quote without the start quote?
If you’ve already seen a start quote you can simply treat the end quote as a normal character, and not the end of the string.
@@chevychavanne4433Consider this funny string:
«»«»
That's what he meant.
You have to escape things anyway, but _only sometimes,_ which adds more complexity for no reason