BrainF*ck Programming Tutorial - Can You Code in BrainF*ck?
Skills:
Algorithm Basics70%
Key Takeaways
This video tutorial covers the basics of BrainF*ck programming language, including how to create a Hello World program and understand the lower-level language concepts, although it does not directly relate to Large Language Models (LLMs), the topic assigned to it.
Full Transcript
hello everybody and welcome back so in this video I'm going to be challenging you to try to understand in write code in the most convoluted language I've ever used which I'm gonna call for the purpose of this being a family channel brain now I know you all know the name of this language and you can probably assume why it's so complicated and why it is named after that and on the left side of my screen here you can actually see that this is an example of a program written and again what I'm gonna call brain now if I go ahead and run this code we can see this actually prints hello world so if you're interested in seeing how this works why this works and learning a little bit about how you can write code in brain then follow along and be showing you how to set this up what these basic commands do and then we're gonna walk through how we can actually go ahead and create this hello world program okay so I'm gonna start with a very brief overview of this language and then we'll actually get into a few examples and talk about exactly how it works with all of these key characters which we can see here so this language is extremely small it consists of 8 key commands and those are the only things that you can use these are the commands here you can read them if you want although we will go over them in a second and this language is actually designed to be able to run on very very small interpreters or compilers in fact the record compiler for this language that has been written is actually only a hundred bytes itself which is extremely small so what I'm gonna do now is hop over to the white board and I'm gonna explain exactly how this language works with a few visual examples ok so I need to start with some fundamental concepts here to make sure everyone's on the same page and I'm just going to explain what a bit and what a byte is because we need to know that to be able to deal with brain so a bit is either a 0 or a 1 this is what we call a bit so one of these like one of these two things is a bit so that means if we have say two zeros here this is two bits now I'm sure some of you have seen binary before I'm not going to really explain what binary is or the binary numbering system but one byte is consistent of eight bits so we can have this here so that's four two three four and the way that we actually figure out what numbers are when we're looking at bits is we say the first bit is equivalent to 2 to the 0 the second bit is equivalent to 2 to the 1 then 2 to the 2 then 2 to the 3 4 dot dot dot until 2 to the 7 which means that say we put a one here and the rest are zeros all we do is multiply in this case 2 to the 3 by 1 what is 2 to the 3 that's 8 that means this down here represents 8 in our decimal numbering system that's as much as I'm going to explain for the binary digits but just understand that that's what a bit is and a byte is consistent of 8 bits and while a byte tells us a value between 0 and 255 so if we have 1 bit since our one byte since we start at 0 here right so 2 to the 0 and we go to 2 to the 7 well 2 to the 7 is 128 but since we can represent all the other combination of numbers we can actually represent what is it 2 to the 8 minus 1 combinations of numbers which is equal to 255 you ever see an RGB pixel guess what that's consistent of 3 bytes because we have red green blue all those values between 0 and 255 and each byte can represent between 0 and 255 again why you need 3 bytes to represent our GB pixel so that's the basis of bytes and bits hopefully that makes sense and now we'll move on to the next component which is the actual language itself and what we call the memory block so I'm going fast here but that's just cuz I assume most of you already know this so this is what we call the memory block and this is the most fundamental thing to understand in our brain programs so our memory Blanc is made up of a certain amount of space and this space is pretty much where we're allowed to store values it's where we're allowed to take values add values manipulate values and each one of these little slots that I've drawn here is one byte now remember a byte is simply made up of eight bits which means one of these slots can represent a value between 0 and 255 and all of these little slots are what we're gonna think of as almost like our little variables right they're not really variables but you can think of them like that and what we need to reference in our program so we could say that this is slot 0 this is slot 1 this is slot 2 all the way until we get to slot at some value which in this case I'm going to say 2 to the 16 so for our program we're gonna use 2 to the 16 slots so we're gonna use a memory size of 2 to the 16 what that means is that we actually have 65,000 300 something slots which is not even one megabyte so just keep that in mind we have a very small amount of memory that we're working with that's one of the advantages of this program is that you need a very small amount of memory to actually do things so that's what we have we have this memory block each slot has a byte in it so that's eight bits that's a value between 0 and 255 if you needed to represent a number larger than that you would have to use more than one slot so that's the way this works and this actually compares a lot to some lower-level computing and any of you that would have done like a computer architecture class probably have a really good idea what I'm talking about right now because you probably learn that in that class assuming you're paying attention so all these slots start off at the value 0 that's something to understand and all these are just initialized at 0 0 for us means null it means there's nothing there or you know the number 0 now the next thing we need to talk about is a pointer so since we have this memory block we need to have some way of accessing these different values so how do I change you know memory block 2 to the 16 or how do I change memory block - well I do that using the pointer so the pointer which I've written here which is PTR simply tells us what memory block we're at right now so the pointer is going to store a value between 0 and 2 to the 16 right because that's going to tell us the number representing which memory block we should be modifying or we should be changed so that's something to understand that's what the pointer does the pointers some numeric value between 0 and 2 to the 16 so now I'm gonna to show you the main commands in brain so what we need to do essentially is manipulate the pointer and manipulate the values in these cells to get some output that we want so remember that in these cells these values are between 0 and 255 and the goal of our program here when we start writing is going to be to print hello world so how the heck am I supposed to get a character when the only things that I have in these cells are numbers well this is where we talk about something called a ski so a ski I actually forget exactly what it stands for is essentially a way of using integers to encode or represent some character so I don't know all the ASCII values off by heart I'm going to show us an ASCII table later that tells us what this is but essentially the basics is let's say the number 65 actually represents the capital letter a so that would mean 66 represents B and then if you add I guess 26 to that and then add 1 that would be the lowercase letter A and these are kind of the characters that we need to use if you want to do an exclamation point you'd have to look up what that value is and ask you to see what it is but the idea here is if we want to print something out we have to change the value inside of our slot to be equal to the ASCII value of the character that we want to show so if I wanted to show capital A I would need to change one of the values inside of my slots here to be 65 and then print out the value of this slot and it would be converted to the ASCII value and it would show that for us so that's the basics with ASCII hopefully that makes sense look up an ASCII table if you want I'll show one in a second but it's it's pretty easy to understand it's nothing too complicated ok so here are the commands again we want to print hello world I'm not gonna show this example exactly here the first command is move the pointer left so this less than sign here that I've just circled means move the pointer left um you could call it greater than if you want so essentially if we're at 0 which where the pointer starts it's always starts that memory location 0 so the pointer starts at 0 what we would do is actually circle this pointer back and go to the very end of our memory block which would be at the location to the 60 so if we did that and we go all the way the back right now if our pointer was here at memory location 1 then we would simply move the pointer back 1 right so we would go boom here and then it would be at location 0 so again the goal of the pointer is just tell us where we are it's our way of navigating around and then you can assume that if that moves us back this command here it moves us forward so this moves back this moves forward so this goes to the right like that so our pointer would go here and again if we had our pointer here and we executed that go right command what would happen is we would loop all the way back and we would go to the very beginning and be at memory location 0 so that's the basics between navigating the pointer hopefully that makes sense you can use those less than and greater than signs to go you know right left right left right left however you want so now that we know that we can talk about how do we they changed the values at some memory cell so since we can navigate this pointer and move it around we can get to whatever cell we want just by moving the certain amount of time so doing this command a certain amount of time so right if we want to move over five we right if I right it's the basics if we want to modify the cell we can use the plus which stands for increment or the minus which stands for decrement so to put it in programmer terms the plus is plus equals one the minus is minus equals one if you're in another language that's gonna be like plus plus or minus - so when we execute the plus command what happens is whatever location we're currently at 1 the value 1 gets added to it so we go like that right if we did plus twice so say my code over here like this is the code that I'm executing then what would happen is this value we would change to b2 and let's say we did something like plus minus so we execute this code then what would happen is well we would stay the same because we added and then we subtracted right so that's the basics of the plus the increment decrement pretty straightforward so that's kind of the idea here is like if you want to represent say the character H then you somehow have to change this value in this block here whatever block you want to represent the character H to be 65 and then print out the value of that block which I'm gonna show you how to do with this next man so let's erase some stuff let's get this cleaned up and I'll show you the rest okay so the next command to talk about is the period now the period stands for print byte now what that means is whatever the byte is at the current pointer right so we've navigated the pointer to where we want it to be and then we call this plus like this it will output the ASCII value associated with the number at that location so I don't know what the ASCII value is for two but let's say we have that classic example of 65 if we printed when our pointer was at 65 so let's just assume you know like this is our memory block maybe location 1 our pointers here then we would print out the capital character a the next command that we need to look at is the comma so the comma actually is input byte so input byte like this it's gonna take in some byte it's gonna convert that byte so there's gonna be a character right it's gonna take in you know some letter I'm gonna convert it to is no numeric value and it's gonna store it in whatever location were currently at and it will override anything that's already there so let's erase this so if our pointer is at memory location 0 which we can see because that's where it is then if we call the comma we'll actually wait for the user to type something in so let's say I type a then what will happen is wherever our pointer is we will change what's in this location to be the integer value represented with that character in this case it's gonna be 65 right and those are the basic commands now we're gonna talk about looping which is a little bit more complicated but you should hopefully understand that if you've understood everything up until this point so to loop we have our last two commands which are open loop and closed loop so this is open and this is closed like that now what we put in here will happen a set amount of times now it's better for me to explain this when we actually write the code so I'll kind of refrain from going too far into it but whenever you open a bracket you must close it somewhere just like if you open a squiggly bracket in Java you have to close it somewhere unless you're doing something crazy that I just don't know about in Java but the point is right is that the way these work is if at the current pointer location the value is 0 so if we you know actually I'll leave that at 65 for now but if when we encounter this sign so let's say our code is like you know plus plus so we're gonna increment that I want to change this actually to be a better example let's put this at 2 so let's say plus plus is our current code so we write code like that so our pointer started at 0 plus plus we changed it to 2 and then we encountered this open which meant start loop what would happen is we would check what our value is at the current pointer location and if it was nonzero we would enter the loop if it was 0 what we would do is we would jump to wherever this close is like this now I'll talk about why that works in a minute but understand that if wherever the current pointer value is that we're at is nonzero so anything other than 0 will enter into whatever is inside of this set of brackets if it is 0 we're gonna jump to wherever the ending loop is so we would jump to here and we would execute the next commit that's how that works so if in here I had say plus plus like that and then I put actually I need yeah I need to make this a little bit okay we're gonna do plus go back - and then I'm actually gonna go forward in here so this is going to be our code and we're going to illustrate how this works we have plus plus we increment that to two we come here since the current value is not zero we entered the loop and then we move our pointer to the right one so we move it to the right which we'll do like that so we'll go here and we have PTR now here then we're gonna plus which means what we're gonna do is add one to this so this becomes 1 then what we're gonna do is move the pointer back so let's move the pointer back so what that means is we're now gonna be at 2 so let's do that so we go to 2 and then here we have the minus sign so we decrement at 2 so let's do that hopefully you guys are understanding what's happening here so we decrement that 2 and then what we do is we reach this and what this says is this at the end of the loop if the value at our current pointer is nonzero jump to the start of the loop if it is zero go to the next command that's what that says so since the value at our current pointer is 1 we're gonna jump into the loop again which means the first thing we're gonna do is move right so we move our pointer to the right then we're gonna add 1 so what we're gonna do is we're going to take this and we're gonna go here and we're gonna add 1 then we're gonna move our pointer back to the left so we move our pointer then we're gonna change this to be 0 because we're gonna decorate then what's gonna happen is when we hit this here we're gonna check if the value at our pointer is 0 since it is we're gonna go to the next command so we'll go to the next command whatever's past the end of this loop here and that is how the loop works so you can see what you need to do when you make a loop is have some memory address keep track of how many times you want to loop so you set it to what you want to loop at and then you decrement that memory address so that when that memory address gets to 0 you stop looping and you can see here all I did was transfer the value from this block here to this block using a loop now let's get into the fun stuff which is actually writing the code okay so what I have in front of me here as I promised probably like 12 times is the ASCII table so this is what I'm gonna recommend you have beside you when you program in brain just maybe open another window or something so that you know what values you actually need to make but you can see that like I was saying the decimal sixty-five I know it's kind of small but I'll zoom in a little bit is representing the character a and the decimal ninety seven is representing the lowercase character a notice there is a difference and if you want to look up any character on your keyboard actually I'm pretty sure any character on your keyboard you can do that by just looking for the number and looking for the character and that's the the mapping right and then that's pretty much all you need to know once you know these characters or you can reference this ASCII table to understand what it's saying you can generate any character you want just notice though that it's kind of counterintuitive forty eight actually represents zero forty nine is one so don't think that because you have a zero there that means you're actually gonna output the number zero in fact that's gonna output null which means nothing now if you see some crazy ones like this like FSU SRS don't worry about them you probably don't need to use them you're only really gonna use stuff past 32 when we're in this program okay so now how the heck do we actually run this code well this is gonna seem really counterintuitive I know a lot of you probably be upset by this because we're not downloading like a brain program but we're gonna use a Python interpreter to interpret and run our brain code now a challenge to any of you that might think you're a little bit more expert you understand how the language works and what I just described you should be able to write your own interpreter for this now you know okay if you're not that good of a programmer maybe not or you're not that experienced fair enough it's not that easy but I just found one online I looked at the code is pretty easy I made my own version but we're gonna use this guy a little bit more robust but you could write your interpreter for brain in any language that you want an interpreter is just something that's gonna translate our code into something that computer can understand rather than you know try to make a compiler or something crazy or finding something online it's really complicated I figured Python is the easiest way so if you want to use this you're gonna have to download Python you can get that by just downloading Python you know go download Python download the version and then you're gonna download this repository and there's a link in the description to where this is now I already have it downloaded so I'm not going to do that but to download you can click on or download download the zip folder and we'll give you a little folder that has you know the brain name you can see here in it what you'll be able to access the interpreter so inside here it says the name of the file so brain pie and inside here you actually read through and see how small this is this is all of the code that's gonna be used to actually run your code so it's going to you know there's a function evaluate which essentially this evaluates all of your code and you can see we have cells code pointer and cell pointer which is just telling us all these different things that we need to know to do looping to be able to store the value and you can see it's pretty small it's pretty trivial and again I think I said this but the smallest compiler ever made for brain was only a hundred bytes long which is pretty impressive so we come here we do actually need this Goetsch dot pi file if you want to be able to get user input so if you're just gonna download one file make sure you download catch as well and you can see this is an example of the usage of it so you do dot slash the name of the script and then your actual dot BF file which stands for you know what that stands for the bf extension so you can see here that I've already got this folder I renamed my to the capital B but you know you can do whatever you want and inside here this is the same interpreter that I just showed you from that repo so what you need to do is inside the same folder you're gonna make a file and you're gonna call it whatever you want dot BF it's important you have BF I'm pretty sure this actually checks to make sure the extension ends in bf um actually possibly not but regardless and if you have dot BF then you can run this BF code so to actually do this because I know some of you might not understand you're gonna need to get into the current directory where this interpreter is in your command prompt now to change directories in here you can do CD and you can kind of CD around into the name of folders but an easy way for any of you that are beginners and don't understand how to do that is to just find where this folder is on your computer so I'm gonna try to find it yeah there it is and then in this little bar here if you're on Windows it's gonna be different on Mac you're gonna have to open the terminal in this folder and type CMD and that'll actually open up a command prompt that's in the same folder as where you are so if you want you can do that I mean I'm already in it here and you can see you're in the right directory if the path on the left side here matches where your file actually is and then again to use this there's two different ways so you do dot slash and then the name of the interpreter which is this and then the name of the file which in this case is dot test bf it's not recognized up that's on Linux sorry so for us what we're gonna do is go Python we're gonna do the name of the interpreter which is that and then you should notice that if I do test dot bf I know it's cutting out but we'll go fullscreen here and I run this everything works fine but since I don't have any commands in there nothing's happening so that's how you use this you have to write Python if you're on Mac or Linux you're probably gonna have to type Python a three space the name of the interpreter when you're in that folder and then the name of the file that you want to run so we've got that working now so let's actually start writing some code I know we've gotten awhile to get here but we just had to understand how the language works so let's clear that the CLS and now let's do a very basic script where we just add two to our original pointer and print that out so let's go to and then let's do a period and we know that you know the two plus signs that's increment increment so our current value at memory cells 0 should be to print we should print out whatever the ASCII value for 2 is so if we do that we get a question mark because it doesn't know how to represent that in the console right but let's just go ahead and spam like a bunch of pluses and see if we can get something meaningful so let's do that and here we get the character L so that's the basics on how you do something and then how you print it out right pretty straightforward so you can see if I go you know plus minus like that and then I run this we get nothing because the first characters no so let's do a little bit of a more advanced example now so let's say that I actually want to generate the character a right so 65 but I really don't want to do like 65 plus signs like that's not the best way to do this what I should really do is use a loop so what I'm actually gonna do is I'm gonna set the first memory block to be the amount of times that I want to loop now in this case what I'm gonna do is figure out what multiples of numbers I could use to get to 65 faster than having to write 65 so in this case right and this is why this is a challenging language because you have to do something like this what I want to do is multiply 5 13 times so if I can multiply 513 times then what that's gonna allow me to do is get to the value 65 right so I'm gonna set up a loop that's gonna happen five times and in that loop I'm gonna add 13 to a memory location I'm gonna add 1 to a memory location 13 times since that loop runs 5 times we should get the value 65 and I'll show you what I mean by this so this is my command for loop we're gonna go a little bit smaller here just so it's a bit easier to see we have 5 plus signs like that and then here I'm gonna do 13 so 1 2 3 4 5 6 7 8 9 10 11 12 13 now the first thing I need to do is make sure that when I enter this loop I decrement ursery increment the data points your one to the right so I'm not changing what's storing my looping variable I'm changing what's gonna store my data right which is here then at the end of the loop I'm gonna go back to the previous data pointer which is gonna move us with from essentially here from this here to be to here and then I'm gonna subtract 1 what's that what that is gonna do is say okay we have five here in our first loop then every time we add 13 we'll subtract one from five and when we get to the point where this first data pointer is equal to zero this loop will stop running and we'll print the value with a period so let's look at this and we can see I don't think I saved this properly actually whoops I need to move my dad pointer over one when we do that we get the character a so the reason we didn't print anything the first time was because I didn't move the data pointer to the data value after I ended the loop which meant it was still at what was telling us how many times to loop which obviously was going to be zero because we stopped so when we moved it over to the right one we got the character a so this is how you kind of generate one character right you could do some you could do 65 plus signs if you wanted to to make the character a I mean that's not really the best approach to doing this the best approach would be to find the lowest two numbers you can use that multiplied together to equal the number that you want and if you wanted to do say like make a little bit easier on yourself and multiply six ten times and then add five you could do that right so you could change this so that we have what is this five we could we actually make this time so I'll copy this so let's make this 10 like this and then inside here we'll go 5 or we go 6 actually I guess which is that so 1 1 2 3 4 5 6 ok and then after we move the data pointer we'll add 5 to it so 1 2 3 4 5 like that and then print it did it mean to do that and then print it and we still get the character a so that's how that works so if we want to make hello world we need to find a way that we can generate hello and then world so I mean I'm kind of gonna leave that to you guys because I feel like it's gonna be pretty boring if you guys just watch me do this but let's do an example of getting some user input and then just printing that out so let's do a comma and then let's do a dot and let's run this and see what happens we can see we get the cursor blinking let's do the character say B and you can see that it just simply outputs the character B right and then ends the program so if we wanted what we could do is actually output and then we could say move the data pointer over 1 we could add 5 to some value and then output that and let's see what that looks like let's add some character are we can see when we add are then we print 5 directly after it doesn't do anything right and and that's what we get now what happens if we don't print after we get the input let's look at it so if we go are you can see that it just immediately prints this unknown character which is ASCII 5 because it didn't print the character that we just inputted that was stored in data pointer 1 so that's the way that this works right if we wanted to move over like two data pointers we want to move over ten data pointer x' we could do that in a loop too so if we wanted to move say five data pointer we do plus plus plus we could say all right actually this one will be complicated we're gonna have to go if we move five if we move over five we're gonna have to go back five to modify this initial counting variable but I hope this gave you guys enough examples so I'm not gonna do that one so that you're confident and being able to use this so I don't know I think this is a fun language I think it's cool I like messing with stuff like this just because it kind of tests your brain and I mean look at the name of the language right it's not meant to be like I don't know fun but it's not really meant to be useful it's just meant to be like can you figure out how to do some stuff so a challenge for you guys and I would you know say this is try to make it so you can have some input and then have the program do something according to your input so maybe based on the number that it goes in it's gonna loop that many times and add some numbers together or something like that see if you could figure out how to add two numbers that's not very easy right how do you add two things we don't just can't just add with the plus addition like if I have two memories store two pointers or two different things stored in two cells how can I add those two cells together into another cell well the idea behind that would be let's just you know increment pointer three so if we have cell one and two with two values let's increment point three so that it has all the values from point one so add that many times and then we'll add all the values from point two to it and that should give us the sum of cell one and cell two so small problems like that become difficult I think it's fun let me know what you think of the language and I hope you enjoyed there's definitely long tutorial but hopefully useful so know he's that has been it I hope you enjoyed leave a like if you did subscribe and I will talk to you guys in another video
Original Description
Think you can code in BrainF*ck? "Brain" is one of the most complicated languages I've ever used and today I decided I'd challenge you all to try it yourself. This BrainF*ck tutorial covers everything you need to know to create an "Hello World!" program and understand the lower level language concepts.
BrainFuck Documentation: https://en.wikipedia.org/wiki/Brainfuck
ASCII Table: http://www.asciitable.com/
Download Python: https://www.python.org/downloads/
BrainFuck Python Interpreter: https://github.com/techwithtim/Python-Brainfuck
BrainFuck Java Interpreter: https://www.geeksforgeeks.org/brainfuck-interpreter-java/
◾◾◾◾◾
💻 Enroll in The Fundamentals of Programming w/ Python
https://tech-with-tim.teachable.com/p/the-fundamentals-of-programming-with-python
📸 Instagram: https://www.instagram.com/tech_with_tim
🌎 Website https://techwithtim.net
📱 Twitter: https://twitter.com/TechWithTimm
⭐ Discord: https://discord.gg/pr2k55t
📝 LinkedIn: https://www.linkedin.com/in/tim-ruscica-82631b179/
📂 GitHub: https://github.com/techwithtim
🔊 Podcast: https://anchor.fm/tech-with-tim
💵 One-Time Donations: https://www.paypal.com/donate/?token=m_JfrPK7DsK4PLk0CxNnv4VPutjqSldorAmgQIQnMozUwwQw93vdul-yhU06IwAuig15uG&country.x=CA&locale.x=
💰 Patreon: https://www.patreon.com/techwithtim
◾◾◾◾◾◾
⚡ Please leave a LIKE and SUBSCRIBE for more content! ⚡
⭐ Tags ⭐
- Tech With Tim
- Python Tutorials
- Brainfuck tutorial
- How to code in brainfuck
- Brainfuck programming
- What is Brainfuck
- Brainfuck coding tutorial
⭐ Hashtags ⭐
#BrainF*ck
Playlist
Uploads from Tech With Tim · Tech With Tim · 0 of 60
← Previous
Next →
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
A* Path Finding Algorithm(Visualization)
Tech With Tim
Python Programming Tutorial #1 - Variables and Data Types
Tech With Tim
Python Programming Tutorial #2 - Basic Operators and Input
Tech With Tim
Python Programming Tutorial #3 - Conditions
Tech With Tim
Python Programming Tutorial #4 - IF/ELIF/ELSE
Tech With Tim
Python Programming Tutorial #5 - Chained Conditionals and Nested Statements
Tech With Tim
Python Programming Tutorial #6 - For Loops
Tech With Tim
Python Programming Tutorial #7 - While Loops
Tech With Tim
Python Programming Tutorial #8 - Lists and Tuples
Tech With Tim
Python Programming Tutorial #9 - Iteration by Item (For Loops Continued...)
Tech With Tim
Python Programming Tutorial #10 - String Methods
Tech With Tim
How to Overclock a NVIDIA GPU
Tech With Tim
Python Programming Tutorial #11 - Slice Operator
Tech With Tim
Python Programming Tutorial #12 - Functions
Tech With Tim
Python Programming Tutorial #13 - How to Read a Text File
Tech With Tim
Python Programming Tutorial #14 - Writing to a Text File
Tech With Tim
Python Programming Tutorial #15 - Using .count() and .find()
Tech With Tim
Python Programming Tutorial #16 - Introduction to Modular Programming
Tech With Tim
Python Programming Tutorial #17 - Optional Parameters
Tech With Tim
Python Programming Tutorial #18 - Try and Except (Python Error Handling)
Tech With Tim
Python Programming Tutorial #19 - Global vs Local Variables
Tech With Tim
Python Programming Tutorial #20 - Classes and Objects
Tech With Tim
Cool VBS Script to Prank Your Friends!
Tech With Tim
How to Overclock an AMD GPU
Tech With Tim
Best GPU'S For Mining Ethereum (2018)
Tech With Tim
Recursion and Memoization Tutorial Python
Tech With Tim
Ethereum Mining Rig - Hardware Guide
Tech With Tim
Pygame Tutorial #1 - Basic Movement and Key Presses
Tech With Tim
How to Install Pygame (Windows 8/10)
Tech With Tim
How to Trade Your Cryptocurrency (Bitcoin, Ethereum etc.) For Cash!
Tech With Tim
How to Mine Ethereum 2018 - WORKING (Super-Easy)
Tech With Tim
Microphone Comparison - $10 Mic vs $150 Mic (Blue Yeti USB)
Tech With Tim
Pygame Tutorial #2 - Jumping and Boundaries
Tech With Tim
Pygame Tutorial #3 - Character Animation & Sprites
Tech With Tim
Pygame Tutorial #4 - Optimization & OOP
Tech With Tim
OBS Studio Tutorial - Best OBS Settings
Tech With Tim
Linear Search Algorithm - Python Example and Code
Tech With Tim
Make Any Mic Sound AMAZING! (WITH OBS)
Tech With Tim
Binary Search Algorithm - Python Example & Code
Tech With Tim
Pygame Tutorial #5 - Projectiles
Tech With Tim
Pygame Game - Mini Golf
Tech With Tim
Pygame Tutorial - Projectile Motion (Part 1)
Tech With Tim
Pygame Tutorial - Projectile Motion (Part 2)
Tech With Tim
Pygame Tutorial #6 - Enemies
Tech With Tim
Pygame Tutorial #7 - Collision and Hit Boxes
Tech With Tim
Pygame Tutorial #8 - Scoring and Health Bars
Tech With Tim
Cloud Mining vs. Hardware Mining - 2018
Tech With Tim
How to Install Pygame on Mac OSX (Fast-Simple)
Tech With Tim
Pygame Tutorial #9 - Sound Effects, Music & More Collision
Tech With Tim
Pygame Tutorial #10 - Finishing Touches & Next Steps
Tech With Tim
How to Fade Your Screen in Pygame [CODE IN DESCRIPTION]
Tech With Tim
How to Create a Button in Pygame [CODE IN DESCRIPTION]
Tech With Tim
Pygame Side-Scroller Tutorial #1 - Scrolling Background/Character Movement
Tech With Tim
Pygame Side-Scroller Tutorial #2 - Random Object Generation
Tech With Tim
Pygame Side-Scroller Tutorial #3 - Collision
Tech With Tim
Pygame Side-Scroller Tutorial #4 - Scoring and End Screen
Tech With Tim
How to Create A Message Box in Python - Tkinter
Tech With Tim
Is Ethereum Mining Still Profitable - Is It Worth It (April 2018)
Tech With Tim
How to Run MAC OSX on a WINDOWS PC (Clover Boot-loader)
Tech With Tim
Programming Problem #1 - Alphabet Soup (Beginner/Novice)
Tech With Tim
More on: Algorithm Basics
View skill →Related Reads
📰
📰
📰
📰
Hybrid AI in Word: How to Use Free OpenRouter Models
Medium · LLM
Too Much Information, Not Enough Direction: Why AI Learners Feel Stuck in 2026
Medium · AI
The Answerable Scientist LiveBook: One Step Beyond the Interactive Book
Medium · AI
AI Passed the Medical Exam. Now It Has to Pass the Hospital.
Medium · LLM
🎓
Tutor Explanation
DeepCamp AI