They way he get things wrong really help me to not feel so anxious by making mistakes on my own projects. He Just makes mistakes look "fun" that really motivates me to pickup old projects from earlier
I'm not even a programmer and I enjoyed watching this from beginning to end! Even lifted my spirits a bit because the coder has such a bright and fun personality. Loved the finished result. Screenshot it so I could share it with others. Thank you for this!
@@TheCodingTrain It was recommended to me. I'm into studying a bunch of things. Mathematics/physics... Weird mysticism stuff 😆 I watched a numberphile video on The Hilbert Curve and I think that's why it was recommended by TH-cam for me 🤷 I'm really interested in watching lectures on topology & geometric knots. 😅 I get around LOL!
"You guys are probably screeming at you're television, nobodys watching this on television..." well umm Im actully doing both... my dog thinks im crazy
These videos are amazing. I used to hate coding but after watching and following along with a few of your vids I’m starting to love it. There’s so many Amazing possibilities!
Great video, I love the very personal feel of the cabana!! It is fantastic that you show the whole process of coding, including planning, research, errors, and debugging.
Perhaps a random catch-phrase generator is in need :) Perhaps the excitement this would bring at the end of each episode would be too overwhelming, however. Thanks for the maths, Uncle Shiffles x
I love your Coding in the Cabana series! It's really like how I program for fun -- just play around with math, noise, cellular automata, and procedural generation in a creative/artistic way. It's soo much fun and every once in a while you discover something really cool! :)
funny how I instinctively guessed this was filmed in Brooklyn by seeing the opening snowing scene --- Brooklyn just has a unique architectural look --- justifiably nonplus yet pervasive block after block
I know this video is fairly old now; I implemented this in java with java fx recently for a project (super helpful video, thank you!). I found you get a really cool fractal effect if you draw the order 8 curve in 1024x1024 window and only draw the line if the point you are drawing's index modulus 1.5 is 0. You get some really cool and wacky effects if you change the order or the 1.5 to other values. Take a look and let me know what you think! private void draw() { for (int i = 1; I < path.length; i++) { // Start at one so we can draw backwards. double hue = map(i, path.length); gc.setStroke(Color.hsb(hue, 1, 1)); try { // Draw the line if (i % 1.5 != 0) { gc.strokeLine(path[i].getX(), path[i].getY(), path[i - 1].getX(), path[i - 1].getY()); } } catch (IndexOutOfBoundsException ignored) { }
} } private double map(float coordinateIndex, float maxIndex) { return (coordinateIndex/maxIndex) * 360; // Note that when using the hue value in the hsb method, it will loop round to red } Not sure where I can post an image of it so that's why I am dumping here. Let me know if you try it or where I could post the result! P.S. This is not my actual draw function, this is a simplified version since I had to optimise mine for an AnimationTimer class.
Actuallly, the nice thing about the Hilbert Curve is that u can map every Point of an INFINITE plane to one single scalar. When just counting line by line, u already couldn't count the second line, because those values are infinite, cause the first row is infinite. Nice video :D
I know it's not the Processing way, but I think this curve drawing is worth revisiting recursively. In particular, the 3b1b videos on the towers of hanoi and sierpinski's triangle have a really neat perspective on the recursion. In this case, we're counting in base 4, with a flourish of rotation and translation thrown in between the subtasks. I don't know if processing can cleanly express that idea, but I'd love to see the more pure, if less perfomant, solution.
Hey, just saw all the Cabana videos today, and I loved them all! Maybe the next one could be a tutorial on how to plant all those beautiful flowers from the previous episodes! The timing couldn't be better, since you guys at the northern hemisphere are entering Spring haha. Cheers!
I tried Hilbert curve in Unity, transforming it to Hilbert maze, Really beautiful to dive into this amazing maze , I skip one wall each time randomly choosen So that even I, have no idea where the exit could be. Thanks Daniel for this beautiful video.
L => +RF-LFL-FR+ R => -LF+RFR+FL- Where * means to change the direction of rotation and (.) period means to rotate. L needs to be rotation & direction neutral, or fixups would be required after each L. Splitting the rotate operator allowed further optimization because the first four symbols repeat. Leading to: L => RRL.F*L.* R => *.LF
The amazing thing about the Hilbert Curve is very clearly shown in the video at 25:15 where you color it and increase the order, the colors would still be mapped to the same location, whereas if you'd color it just line by line, and increase the order, the result would look completely different for each order, not stabilizing at any point, whereas when filled with the hilbert curve, the color at each point is the value of the hilbert curve color mapping for order to infinity. This color can't be defined for the line-by-line mapping.
Dude, you're awesome! I'm sitting under my (diagonal) window a lot, even when it's winter outside. Got me some hot tea and as long as the wind's not chilling my hands I'm a happy little camper. :D
I watch the vast majority of TH-cam on my television 😉 Phones are for texts, phone calls and photos, tablets are for browsing and media consumption when on the go!
Absolutely fascinating. I need to learn more maths. But I think I can use this to smoothly transition an RGB LED through every color in the spectrum...time to hook up the Arduino and start tooling around.
Instead do it in python, create an explanatory video about it, and submit in manim discord channel for summer of math exposition 3. Wishing you good luck
How about a recursive approach? Roughly speaking, to draw nth-order curve, draw 4 n-1 order curves rotating and positioning appropriately. When n is 1 just draw the simple U-shape and a line to connect to the next one.
Some say Dan's cup is still steaming to this day.. Awesome work as usual Dan! I know this isn't related, but I'm going to be starting a python course at my job soon and I absolutely cannot wait to dive into another language Edit; yes, I am watching on my television haha
Hilbert curbe is cache unfriendly. The average distance between points A and B that are one step away is about 1/2 the total number of cells you have. On a small scale it looks great, but when you cross from boundary 4 to 5 what would normally be only +/- 1 row pitch or one cell left/right is significantly further. ... I put together a program and added an averge for each cell the offset to the next cells above/below/right/left of the current and it was sinificantly bad at > like a 5x5 square, and my voxel sectors are 32x32x32. That put most accesses in seprate pages for every point in many points of the cube.... since it's only 32 (times 8 for cell data size) 256 bytes from one row to another instead of 16384 .... memory pages are cached in 4k chunks.... But you're doing it all in JS so what does it matter? it's not like your mapping typed arrays
I know that I am about 3 years behind on this video but as a computer science student I might build an app. One that takes in a certain image and converts it to a Hilbert curve pixelation as a research project. Just an idea. Either way, I love your videos man!
Your catch phrase could be: "I don't have a catch phrase. I have no way of ending these. If you have a suggestion for a catch phrase, just leave it in the comments." Possibly add the "Thank you, good bye." as well.
@20:49 -- err, I've only ever watched your videos on my TV; and yes, I spend a significant amount of time shouting at the TV about something or other that you get wrong (but usually eventually fix). 😅
This is quite cool! Though, about the hilbert function, couldn't it have been made recursive? So the function would get the order and call 4 copies of itself with a lower order.
I took a look at your P5*JS version of this Hilbert Curve program and added a sleep() function so it would pause after completing each plot. I found that it would not show the complete final quadrant of the plot. This was due to your code that increments your counter variable by 50 which I think you did in order to speed up the program, plotting the new stuff in batches of 50 instead of 1 by 1. The result was the final batch which probably was not an even multiple of 50 would not get plotted. When I changed the code so the counter variable was incremented by 1 instead of 50, I found it plotted most of the final quadrant... all except for the last two lines of the last Hilbert Curve. I took a closer look at your code and in two places I decided you should be using a "
Practice. Outside of programming, turn every day tasks into logic statements and test it. For example, I need groceries so can it be fixed if (I get groceries)or(my wife gets groceries)? No, because that statement equates to true if we both go and that would be too much groceries. Practice, even outside of programming
This is a lovely idea and you should definitely continue this series! One drawback that I find however comparing to the old studio episodes is that video repeatedly switches from the code view to other views making it hard to follow the coding process. Would it be possible to make the picture-in-picture or split screen so the code is always seen?
Catchphrase: “I’ll see you at the next stop”
Like how trains stop at each station
The thought is beautiful and wholesome. Hope Coding Train adopts it.
please keep doing these. You are the reason I started to genuinely enjoy programming :))
They way he get things wrong really help me to not feel so anxious by making mistakes on my own projects. He Just makes mistakes look "fun" that really motivates me to pickup old projects from earlier
@@amund8767 I can relate. Truly the Bob Ross of programming.
This may be the single best series out there
"Nobody is watching this on a television"
Yeah, about that...
CrashingThunder me too
Using my TV as a second monitor so yea...
Came here to say this.
Ditto, thanks Roku. 😁
Here, here.
I watched 3blue1brown's video on the Hilbert curve a while ago........ I can already tell this video is gonna be fun
Catchphrase: Remind me to refactor this later, bye
I love your enthusiasm Mister Shiffman! This is wonderful
I'm not even a programmer and I enjoyed watching this from beginning to end! Even lifted my spirits a bit because the coder has such a bright and fun personality. Loved the finished result. Screenshot it so I could share it with others. Thank you for this!
How did you find this video?
@@TheCodingTrain It was recommended to me. I'm into studying a bunch of things. Mathematics/physics... Weird mysticism stuff 😆
I watched a numberphile video on The Hilbert Curve and I think that's why it was recommended by TH-cam for me 🤷
I'm really interested in watching lectures on topology & geometric knots. 😅
I get around LOL!
I love the fact you are always happy and smiling it's so cheering
he cordially codes in the cold cabana, regardless of the condensation conundrum
wow, i was watching 3b1b's video literally 30mins before this got uploaded, and wanted to draw it in processing and now u post this, that's amazing.
This is so sweet!
I'm also very excited for the new nature of code series!
Keep up man :)
17:00
float len = order;
v.x += order
...
Yep, seems about right xD
Love how the animation finishes right at the end of the video!
"Nobody is watching this on a televison"
I feel attacked
As usual I’m terribly misguided in my understand of the world!
I prefer TV to watch the coding train too! David, can I ask you to make video about different splines, but not Bézier curves?! Thanks!
I’m watching this on tv too! Blast it on my speakers so the neighbors can be interested! (Just kidding on that last bit)
love the way you code ...
Who could possibly dislike such a wonderful video like this. Thumbs up to you Dan!
"You guys are probably screeming at you're television, nobodys watching this on television..."
well umm Im actully doing both... my dog thinks im crazy
These videos are amazing. I used to hate coding but after watching and following along with a few of your vids I’m starting to love it. There’s so many Amazing possibilities!
it’s so homely, it’s so nice to see and hear you, keep shooting the video, and keep your joy to yourself always!
Great video, I love the very personal feel of the cabana!! It is fantastic that you show the whole process of coding, including planning, research, errors, and debugging.
Your catchphrase should be: "Goodbye, and don't forget the this dot."
And after that, a "Choo choo!". That would be the perfect catchphrase!
Meh
Drop "the" , then it would be better.
Perhaps a random catch-phrase generator is in need :) Perhaps the excitement this would bring at the end of each episode would be too overwhelming, however.
Thanks for the maths, Uncle Shiffles x
I love your Coding in the Cabana series! It's really like how I program for fun -- just play around with math, noise, cellular automata, and procedural generation in a creative/artistic way. It's soo much fun and every once in a while you discover something really cool! :)
Loved the editing on this episode!
funny how I instinctively guessed this was filmed in Brooklyn by seeing the opening snowing scene --- Brooklyn just has a unique architectural look --- justifiably nonplus yet pervasive block after block
I know this video is fairly old now; I implemented this in java with java fx recently for a project (super helpful video, thank you!).
I found you get a really cool fractal effect if you draw the order 8 curve in 1024x1024 window and only draw the line if the point you are drawing's index modulus 1.5 is 0. You get some really cool and wacky effects if you change the order or the 1.5 to other values. Take a look and let me know what you think!
private void draw() {
for (int i = 1; I < path.length; i++) { // Start at one so we can draw backwards.
double hue = map(i, path.length);
gc.setStroke(Color.hsb(hue, 1, 1));
try { // Draw the line
if (i % 1.5 != 0) {
gc.strokeLine(path[i].getX(), path[i].getY(), path[i - 1].getX(), path[i - 1].getY());
}
} catch (IndexOutOfBoundsException ignored) {
}
}
}
private double map(float coordinateIndex, float maxIndex) {
return (coordinateIndex/maxIndex) * 360; // Note that when using the hue value in the hsb method, it will loop round to red
}
Not sure where I can post an image of it so that's why I am dumping here. Let me know if you try it or where I could post the result!
P.S. This is not my actual draw function, this is a simplified version since I had to optimise mine for an AnimationTimer class.
Actuallly, the nice thing about the Hilbert Curve is that u can map every Point of an INFINITE plane to one single scalar. When just counting line by line, u already couldn't count the second line, because those values are infinite, cause the first row is infinite. Nice video :D
I know it's not the Processing way, but I think this curve drawing is worth revisiting recursively. In particular, the 3b1b videos on the towers of hanoi and sierpinski's triangle have a really neat perspective on the recursion.
In this case, we're counting in base 4, with a flourish of rotation and translation thrown in between the subtasks. I don't know if processing can cleanly express that idea, but I'd love to see the more pure, if less perfomant, solution.
Hey, just saw all the Cabana videos today, and I loved them all! Maybe the next one could be a tutorial on how to plant all those beautiful flowers from the previous episodes! The timing couldn't be better, since you guys at the northern hemisphere are entering Spring haha. Cheers!
Wonderfully explained! Thank you so much and please! Keep warm! I suffered watching you coding in that cold!
telling me to hold on and wait a minute, like im just barely listening to you over my typing, just coding away, ha no im in amazement ha. love this
love this series. very soothing and calming, especially in my moments of feebleness. thank you.
I watched on my TV, great coding, I had fun, thanks!
I have a suggestion for the catch phrase: "I will see you in the next iteration!"
Watching this during the summer in the middle of the corona virus, makes the cabana and snow look very enjoyable at this time.
I tried Hilbert curve in Unity, transforming it to Hilbert maze, Really beautiful to dive into this amazing maze , I skip one wall each time randomly choosen So that even I, have no idea where the exit could be.
Thanks Daniel for this beautiful video.
Thank you for making programming so much fun. I have learned so many maths concepts from your coding videos. Thank you much :)
L => +RF-LFL-FR+
R => -LF+RFR+FL-
Where * means to change the direction of rotation and (.) period means to rotate. L needs to be rotation & direction neutral, or fixups would be required after each L. Splitting the rotate operator allowed further optimization because the first four symbols repeat. Leading to:
L => RRL.F*L.*
R => *.LF
Wow that looks really cold!
I have never been this early. I just randomly watch coding videos and whelp here I am lol
my fingers are cold just watching!!!
The amazing thing about the Hilbert Curve is very clearly shown in the video at 25:15 where you color it and increase the order, the colors would still be mapped to the same location, whereas if you'd color it just line by line, and increase the order, the result would look completely different for each order, not stabilizing at any point, whereas when filled with the hilbert curve, the color at each point is the value of the hilbert curve color mapping for order to infinity. This color can't be defined for the line-by-line mapping.
Just came to say... I watched this on a television! (And thank you!)
Love your work and your passion for programming. It is really inspiring, best wishes from Chile.
I like how his breath eventually stops steaming as the electronic equipment warms the cabana.
Dude, you're awesome! I'm sitting under my (diagonal) window a lot, even when it's winter outside. Got me some hot tea and as long as the wind's not chilling my hands I'm a happy little camper. :D
Awesome video. Thanks for enduring the cold for us!
Colour ful animation😍 I am excited when I am watching the coding👏👌🙂
I watch all your videos on my tv lol my cats LOVE watching you code things
I only ever watch you on my TV. Loved this, very interesting.
I like this style of coding maybe more than your normal white board series!
I watch the vast majority of TH-cam on my television 😉 Phones are for texts, phone calls and photos, tablets are for browsing and media consumption when on the go!
I love what u do
Never stop it
Amazing video, much love from Romania!
Hope you reach 1M subs soon.👍
Nice, i was waiting for you to make it like a week before
Absolutely fascinating. I need to learn more maths. But I think I can use this to smoothly transition an RGB LED through every color in the spectrum...time to hook up the Arduino and start tooling around.
Instead do it in python, create an explanatory video about it, and submit in manim discord channel for summer of math exposition 3. Wishing you good luck
How about a recursive approach?
Roughly speaking, to draw nth-order curve, draw 4 n-1 order curves rotating and positioning appropriately. When n is 1 just draw the simple U-shape and a line to connect to the next one.
Some say Dan's cup is still steaming to this day..
Awesome work as usual Dan! I know this isn't related, but I'm going to be starting a python course at my job soon and I absolutely cannot wait to dive into another language
Edit; yes, I am watching on my television haha
5 minutes in and I had to go get a cup of tea! So cozy in your cabana
Thank you for braving the cold for us
Total awesomeness ! .....as usual
Nice touch with the notepad!!
Props for the editing.
Hilbert curbe is cache unfriendly. The average distance between points A and B that are one step away is about 1/2 the total number of cells you have. On a small scale it looks great, but when you cross from boundary 4 to 5 what would normally be only +/- 1 row pitch or one cell left/right is significantly further. ... I put together a program and added an averge for each cell the offset to the next cells above/below/right/left of the current and it was sinificantly bad at > like a 5x5 square, and my voxel sectors are 32x32x32. That put most accesses in seprate pages for every point in many points of the cube.... since it's only 32 (times 8 for cell data size) 256 bytes from one row to another instead of 16384 .... memory pages are cached in 4k chunks....
But you're doing it all in JS so what does it matter? it's not like your mapping typed arrays
I know that I am about 3 years behind on this video but as a computer science student I might build an app. One that takes in a certain image and converts it to a Hilbert curve pixelation as a research project. Just an idea. Either way, I love your videos man!
Ooh great topic with a great venue!
truly the famous last words every programmer has uttered at one point
Interesting thing would be to give a function the x, y coordinate and return the index in the curve
catchphrase idea "May the code in your heart be the same code that fills your screens."
Your catch phrase could be: "I don't have a catch phrase. I have no way of ending these. If you have a suggestion for a catch phrase, just leave it in the comments." Possibly add the "Thank you, good bye." as well.
I’m watching on my television!
This man is by far the best coding teacher. Jelous of the cabana. Where did NYU go?
It's still there, just another way for me to make videos!
You can also generate Hilbert curves with an L-system then use the resulting string to rebder with turtle graphics.
@20:49 -- err, I've only ever watched your videos on my TV; and yes, I spend a significant amount of time shouting at the TV about something or other that you get wrong (but usually eventually fix). 😅
so jealous of the snow in NY! I live in Texas and it's always so hot here :(
This is quite cool! Though, about the hilbert function, couldn't it have been made recursive? So the function would get the order and call 4 copies of itself with a lower order.
loops are actually sort of recursive functions
You should do a video based around the Feigenbaum Constant considering it is such a crucial part (as far as I know) of chaos theory.
I took a look at your P5*JS version of this Hilbert Curve program and added a sleep() function so it would pause after completing each plot. I found that it would not show the complete final quadrant of the plot. This was due to your code that increments your counter variable by 50 which I think you did in order to speed up the program, plotting the new stuff in batches of 50 instead of 1 by 1. The result was the final batch which probably was not an even multiple of 50 would not get plotted. When I changed the code so the counter variable was incremented by 1 instead of 50, I found it plotted most of the final quadrant... all except for the last two lines of the last Hilbert Curve. I took a closer look at your code and in two places I decided you should be using a "
Thanks for pointing this out!
The Bob Ross of coding
I swear to god you are like the Bob Ross of programming
Do you think this program would be more optimal using a recursive function instead of an iterative one?
Man! You're seem so sympathic😅
Rly hope to meet you one day🤘
Your videos finally got me into js back in the days.
Bravo Dan!!
I actually just watched this on my television.
"whoopsie! that's our destination for the day" Catchphrase idea haha
First from the UK! Best programming teacher ever for visualising. How do you get better in logic?
Practice is the simple answer, but I guess try to find problems like the ones you wanna solve
Practice. Outside of programming, turn every day tasks into logic statements and test it. For example, I need groceries so can it be fixed if (I get groceries)or(my wife gets groceries)? No, because that statement equates to true if we both go and that would be too much groceries. Practice, even outside of programming
Wonderful!!
This is a lovely idea and you should definitely continue this series! One drawback that I find however comparing to the old studio episodes is that video repeatedly switches from the code view to other views making it hard to follow the coding process. Would it be possible to make the picture-in-picture or split screen so the code is always seen?
15:19 : "Let's just use an if-statement"
WHY do you never use switch statements 🤣 This is a perfect scenario to use one
I have a problem and I'm not afraid to admit it.
4:25 creeper! aw man!
Catch phrase:
Feel free to code the heck out of your ... [processing, p5, favorite editor].
^_^
Man, you are awesome!
Catch phrase: final station, please leave the train.
You're like Santa in February!
As usual.. great tutor
🥰 always inspiring
just amazing
Please make a video about dithering with hilbert curves