![Xkonti](/img/default-banner.jpg)
- 135
- 34 285
Xkonti
United States
Registrace 10. 04. 2007
Xkonti (Ben) covers a strange mixture of game development, the Nim language, SurrealDB and other various topics...
⚠️ Warning: He never stops talking.
⚠️ Warning: He never stops talking.
👑 Custom numeric literals - The Nim Manual 📖
👑 Custom numeric literals - The Nim Manual 📖
zhlédnutí: 272
Video
👑 String and character literals - The Nim Manual 📖
zhlédnutí 69Před měsícem
👑 String and character literals - The Nim Manual 📖
👑 Identifiers, keywords, naming, emojis - The Nim Manual 📖
zhlédnutí 75Před měsícem
👑 Identifiers, keywords, naming, emojis - The Nim Manual 📖
👑 Encoding, indentation, comments - The Nim Manual 📖
zhlédnutí 115Před měsícem
👑 Encoding, indentation, comments - The Nim Manual 📖
👑 Introductory definitions - The Nim Manual 📖
zhlédnutí 180Před měsícem
👑 Introductory definitions - The Nim Manual 📖
🕹️ Installing NimForUE in Unreal Engine 5 projects
zhlédnutí 316Před 2 měsíci
🕹️ Installing NimForUE in Unreal Engine 5 projects
👑 Macros - Creating class syntax - Nim by example #23
zhlédnutí 121Před 3 měsíci
👑 Macros - Creating class syntax - Nim by example #23
👑 Concurrency with async/await - Nim by example #22
zhlédnutí 79Před 3 měsíci
👑 Concurrency with async/await - Nim by example #22
👑 Channels - better than Go? - Nim by example #21 -
zhlédnutí 121Před 3 měsíci
👑 Channels - better than Go? - Nim by example #21 -
👑 Parallel with threads and threadpools - Nim by example #20
zhlédnutí 122Před 3 měsíci
👑 Parallel with threads and threadpools - Nim by example #20
👑 Objects and inheritance, methods and UFCS - Nim by example #19
zhlédnutí 43Před 3 měsíci
👑 Objects and inheritance, methods and UFCS - Nim by example #19
👑 String formatting & string interpolation - Nim by example #18
zhlédnutí 41Před 3 měsíci
👑 String formatting & string interpolation - Nim by example #18
👑 Amazing vargargs + coercing - Nim by example #17
zhlédnutí 46Před 3 měsíci
👑 Amazing vargargs coercing - Nim by example #17
👑 JSON parsing, dynamic access, parsing to a model - Nim by example #16
zhlédnutí 73Před 3 měsíci
👑 JSON parsing, dynamic access, parsing to a model - Nim by example #16
👑 Reading and writing files - Nim by example #15
zhlédnutí 38Před 3 měsíci
👑 Reading and writing files - Nim by example #15
👑 Sequences and mutability - Nim by example #14
zhlédnutí 41Před 4 měsíci
👑 Sequences and mutability - Nim by example #14
👑 Arrays, indexes, generic ranges - Nim by example #13
zhlédnutí 59Před 4 měsíci
👑 Arrays, indexes, generic ranges - Nim by example #13
👑 Strings, raw literals, string utilities - Nim by example #12
zhlédnutí 34Před 4 měsíci
👑 Strings, raw literals, string utilities - Nim by example #12
👑 Enums as ordinals and iterating over them - Nim by example #10
zhlédnutí 43Před 4 měsíci
👑 Enums as ordinals and iterating over them - Nim by example #10
👑 Enums and {.pure.} pragma - Nim by example #9
zhlédnutí 65Před 4 měsíci
👑 Enums and {.pure.} pragma - Nim by example #9
👑 Objects and passing them via var, ref and var ref - Nim by example #8
zhlédnutí 75Před 4 měsíci
👑 Objects and passing them via var, ref and var ref - Nim by example #8
👑 Primitive types and type aliases - Nim by example #7
zhlédnutí 40Před 4 měsíci
👑 Primitive types and type aliases - Nim by example #7
👑 Closures - proc, do, macros (sugar) - Nim by example #5
zhlédnutí 77Před 4 měsíci
👑 Closures - proc, do, macros (sugar) - Nim by example #5
👑 Procs, operators, generics - Nim by example #4
zhlédnutí 61Před 4 měsíci
👑 Procs, operators, generics - Nim by example #4
👑 For loops and iterators - Nim by example #3
zhlédnutí 108Před 4 měsíci
👑 For loops and iterators - Nim by example #3
Everything past 4:04:00 is debugging (and failing at it), so no need to watch past that point 😅 I fixed the issue and will talk about it during the next stream.
Whoops. Looks like the stream failed on CZcams after barely an hour we lost 3 hours of content :/ Sorry about that!
damn
What happened in the stream later: - clean up starting level - determine building grid size (3m x 3m x 3.3m) - make 3 test assets in blender: floor, wall, pillar (corner) - import them to UE and apply basic materials - test if it feels good and check out what it feels like in complete darkness with a flashlight - watch some tutorials
@@pancakedev6 For the next 7 days you can watch the livestream on Twitch: www.twitch.tv/xkontitech/v/2241182113?sr=a Somehow it didn't fail.
Amazing 👏
On 1:20.45, it does the check under the hood. You can specify just the learnable check over there. All though cached, you prevent doing the exists check twice 😃
This is great to know and makes it SOO MUCH more usable!
Love the shirt!
The feature is similar to measure units in F#. Good for the data modeling.
I definitely need to take a good look at F#.
What extension is used to make the bell icon appear to the left of the main function in the editor?
It's the official "nim-lang.org" by NimLang extension. In it's settings you can change it to anything else (or none) if you wish. marketplace.visualstudio.com/items?itemName=NimLang.nimlang
@@Xkonti thx bro
Very nice video. Thank you!!!
Good luck 🤞
Thank you!
00:04:00 Intro SurrealDB 00:05:35 Overview 00:11:37 Surrealist 00:12:25 Docs Intro 00:17:27 Getting started 00:39:50 Concepts 00:49:06 Architecture 00:54:16 SurrealDB for SQL developers 01:04:10 Overview of project 01:08:18 SurrealQL Types 01:51:25 DEFINE statements 02:24:38 Define some custom tables 03:15:50 Creating some records 03:44:05 What we achieved and fixes
I’m literally doing the same thing😂😂
discord is gone?
Hi! Discord is not gone. Turns out I included a link that has expired 😅 Here a new one without the expiration date: discord.gg/cC5JncPQAu
@@Xkonti Thanks buddy
@@Xkonti It works, thanks buddy
7:17 Intro 9:35 authentication docs Keep adding later...
the music is not adding anything great to this, way to loud.
@@trbry. Thanks for pointing that out. Unfortunately I found the music loudness slider in the Platformer Toolkit way too late.
Thank you love your content keep pushing.
Thank you! I'm glad you're enjoying it. I'll be pushing more tonight :)
This is such a fun challenge. Good luck on the Jam!
Thank you! Yes, it's fun indeed 😊
I'll watch this while I make my game~ I hope my game has awesome exploration like this :D
@@NeatGames I wish you lots of luck! Are you going to participate in this year's GMTK Game Jam?
awesome stream! feels good to see nim on yt!
I'm glad you enjoyed it :)
Not sure if you noticed but we can't see 60% of what you are doing when you only show part of your screen.
@@iankaranja7765 Yes. I noticed after a way too long while. I made a dangerous "zoom" button that way to easy to forget about 😭
@Xkonti Btw, I saw you struggle with the array of bunnies and indeed you were creating a 100MB array that overflowed the stack. I believe that the windows stack size is 1MB but I might be wrong. As for filling the array with default values, your intuition was correct, algorithm.fill was the right function. Sometimes AI chats do more harm than good, then you need to trust yourself!
Thanks for pointing that out @planetis_m. I remember having similar issues with arrays in Nim before - tried to make a 60GB array - needed to switch to seq 😅 The default(array[...]) seems to work pretty well and is useful in various situations. Is the algorithm.fill any different / more recommended?
@@Xkonti I prefer it because it runs in-place and has an argument to set a custom value. But with modern optimizing compilers it shouldn't matter.
@@planetis_m Thanks!
Queries from the livestream are available on GitHub: github.com/Xkonti/learning-surreal/blob/main/learningRelations.surql
very good video, do you have any tutorial on how to use imgui with nim?
@@user-uy4ls8jc9o I'm not aware of a ready-made solution. I'm sure there's a way to integrate both, but I'm no expert on FFI. I started tinkering with my own Nim-based implementation of IMGUI. I'll post a link to GitHub repo when I get some basics working.
@@Xkonti that's great thanks for the tutorials!
Great video. Thank you!
@@planetis_m I'm glad you enjoyed it :)
You're doing god's work Xkonti
@@leonlysak4927 Thanks 😂
songs of syx is big brain fantasy caesar 3, i can definitely recommend :)
Yeah. Got the full version, already sank 13 hours into it. It's great to have running on normal speed besides work. Just to check it from time to time. I found it way easier to pick up than Dwarf Fortress and managing larger numbers of people feels great. That's exactly what I always wanted in RimWorld and Dwarf Fortress :D
I only watched the first 30 minutes, but there is some great information in this video so far, I am looking forward to getting home from work and watching the rest of this, Thank you, your video's are really useful for people like myself who are leaning Nim.
Thank you for your kind words. Stay safe at work!
You're the only one covering these topics in video form man. Much respect 🙏
I'm glad you find them helpful!
i just want a chat bot system like restream where both of my friends can talk together . and i can read both chats
I'm not familiar with what restream offers. Do you mean something where a bot is replicating messages from/to different chats (CZcams and Twitch)?
Really nice video! And nice "It's safe now to turn off your computer", what a throwback! Really like how thoroughly you went through everything, nothing worse than finding a video like this and then just getting stuck on an error somewhere!
That's exactly the pain I tried to spare others. I'm glad you enjoyed it 😀 And NimForUE author already patched the problem with vctoolset: github.com/jmgomez/NimForUE/commit/09024014fbbb83ebe10e8e81d0df30725473b915
Second
😅
First
😂
thanks for this
I'm glad you found it useful 🙂
WIsh I had these editing skills. Such a quality video. Thank you!
Haha I hope to make it less work for myself and get better result in the next video. This was really challenging and time consuming to edit.
When do you know to close the channel?
Closing channels is up to you. Channels get closed automatically when they go out of scope (or program exits), but it would be beneficial to to close them early. How early? The moment you're sure they won't be used anymore. This is highly dependent on your code. Use channel.close() to close the channel.
These series are amazing, would be great to have some fun project tutorial like building a complete rest-api with Nim
That's a great idea! I was thinking about making a series of videos that go in-depth on various aspects of the Nim language, but I like the idea of more practical videos that show small projects. I'll see what I can do about it!
Great explanation! Thanks for your work! Nim is one of my favorite programming languages (others are D lang, Lua, Ruby)
I'm very happy to hear that this video was helpful :) I've never had a chance to work with D or Ruby.
In the array tutorial you can do this: import std/sequtils for i, num in countup(10, 100, 10).toSeq(): to get the index. To modify an array element in a for loop you can do this: for elem in theArray.mitems: Then you can assign values to elem. There is also mpairs when you want the index too. You may have discovered these things by now though. Thanks!
Thank you for those suggestions. I'll try them out next stream!
nice ai writing bunch of bullshit. asking it shit about niche language is a sure way to get misinformed.
I agree. Although with enough experience one learns to recognize when something smells.
Great video. Also you have access to Claude. I am crying...
Claude is open to the public for the same price as ChatGPT. I'm using Claude here as I'm sharing ChatGPT with my wife and don't want to have a bunch of personal conversation history in a sidebar for the world to see 🙈 I think a custom GPT built for Nim specifically could be a bit more helpful...
`add x, y` is called command call and it has limitations, since when you specify multiple argumnents, like `echo add x, y` - `y` is parsed as the argument of `echo`, so you cant blindly omit parens everywhere.
Thank you. I believe a later tutorial "Nim by example" explains it in a little bit more detail. Videos of that extracted from streams 4, 5 and 6 will be coming in the next couple of days ;)
good job mate, keep it going and views will follow
I really can't recommend learning a language with AI resources. Haven't seen too much yet, but that explanation of pure enum pragma at 13:00 is completely made up. Enums doesn't have integer-like behaviour in Nim, there is no implicit convertion either, you can get their ordinal value with `ord`, but *pure enums* support that too. You're better off reading official docs and manual, 99% is explained there and if something is not - you can ask in Nim Discord/Forum.
Thank you for pointing it out! I plan on reading the manual at some point although probably not on the steam. I do take the AI responses with a big grain of salt. I definitely wouldn't recommend new programmers to use it when learning programming as it's really easy to get wrong habits. As somebody with years of programming experience, throughout this series I'll keep using it to accelerate things and avoid hours of sifting through the docs. I tested both Claude Opus and Chat GPT 4 Turbo when it comes to Nim knowledge and in both cases they they aren't very reliable. Most likely it's due to limited resources on Nim compared to other more popular languages. Claude seems to make less things up as compared to a custom GPT with whole Nim manual loaded as knowledge base. Nonetheless it's something that can point me in some vague direction in a quick manner, especially when it comes to more descriptive problems.
Just found your channel looking for people playing limitless 7 and wanted to let you know that they have veinminer it’s called ultimine now
A bit later I discovered that Shift + Right click when holding a sledgehammer will mine whole veins and trees 🪄
Looking forward to following this series, I am only a hobbyist coder, and have recently taken a liking to Nim, so im in learning mode A. to learn to coder better as a hobbyist B.Learn Nim
I don't like Rust as well. In fact I despise it.
50:22 The problem here is that `a..b`, `countup` etc. are (inline) iterators ( nim-lang.org/docs/system.html#countup.i%2CT%2CT%2CPositive ), which are second-class concept that can only be used in for-loops, because they are inlined by the compiler in every forloop they are used in. The reason you cant use a index with `countup` is that `countup` only yields `int`. The reason that you can use an index when iterating over an container is that every builtin container has an `pairs` iterator defined, and when the compiler sees a forloop with 2 vars that trys to iterate over a value (not an iterator) it just trys to use the `pairs` iterator if defined for the type. If this explanation was a bit confusing (Im not the best explainer) you might want to have a look at nim-lang.org/docs/manual.html#iterators-and-the-for-statement for a more detailed/structured explanation. 54:50 The problem is that `countup` is an iterator that yields `int`, not an procedure that returns `seq[int]`, but you can use the `toSeq` template ( nim-lang.org/docs/sequtils.html#toSeq.t%2Cuntyped ) to collect what the iterator yields into a seq. So `let values = countup(10, 100, 10).toSeq` would work. 1:01:40 this doesnt work because if no iterator given, and theres 1 for-var the compiler will implicitly use the `itmes` iterator, which yields imutable values, but you can explicitly call the `mitems` iterator for mutable yields.
Wow that explains A LOT. Thank you for taking time to clarify it all!
Nim craziness! 😂 emoji programming
Note, you don't really need to prefix enum values anymore. There have been huge improvements to enums in recent releases by contributors, check the v2 changelog, which along with better type inference, make this feature so good to work with.
I will definitely incorporate that knowledge when going over enums in the livestreams. Thank you for pointing it out!
That to do?
will pay you for code customization for esp32