Using Anki to learn programming - Talk @ DC Python Meetup

Using Anki to learn programming – Talk @ DC Python Meetup



Views:3823|Rating:3.06|View Time:1:11Minutes|Likes:33|Dislikes:21
2014.02.04

so that they can put it on the internet oh so my talk is really for people I wasn't exactly sure who's gonna show up but the reason I volunteered this talk was because I was here last time and there were a lot people who had never done Python before and they looked like they had never done any kind of programming at all before and so I thought it would be useful for me because I'm a little bit further ahead of the total beginners but I'm not quite where these guys are where they'd know how to do a lot I thought it'd be useful for people to know what I did to get where I am and so just for a quick background on my programming history I started programming in high school because I was playing video games and I wanted to make custom scenarios so I had to learn how to open the text files and change these numbers which were the coordinates of where the people would start and that's how I started I started by taking something cool and just opening it up and making a small change so that it would be a little bit different and that was that that was the goal to make a small change that would make it a little bit interesting after I didn't major in programming in college I did psychology and philosophy but then after college I was think about what I wanted to do and I realized that program is a great field to go into because it's very amenable to working remotely and it has a much younger culture so it's not like law where to go into law you have to wear the suit you have to do all these things that that's not that fun so I started studying programming again after college and I and I learned a bunch of different things and now I'm using it to automate my work and I'm also hoping to eventually get a job as a programmer or a web developer or something like that so that's just to give you a rough idea of Who I am I'm not a computer expert so now I'm going to talk about how many people here are total beginners at programming never done anything just trying to start out okay we got one two three because I just want to make sure that I cover you guys in fact I have a special topic that I want to talk about to you guys so if you are and this is useful for the rest of you to if any of you know anyone who doesn't know how to program I highly recommend and they seem like they're receptive I highly recommend that you try to get them to start to learn and what I have personally found works the best is and this is going to be a little bit weird to say at a Python group but I think that Python is maybe not the best thing to start with if you're trying to learn how to program and I know right and what I the reason is that python is powerful you can do a lot of really cool stuff but in order to do the cool stuff you have to use modules and you have to use something called easy install that lets you and I can stall all this dog and or pip or pip no no that's please if you have something to say just say so the with Python if you're doing cool stuff a lot of the headache is in taking these new tools that someone else created and getting it to work with what you've installed so it's like getting the whole thing set up is a bit of a headache where I like to analogize it to video games so the whole appeal of the Xbox on the playstation is that the whole thing is in one package and you don't have to waste any time figuring out how to get it all set up whereas with the PC guys they spend a lot of time getting everything set up feel nice and they get a lot they can do a lot more cool things with it but it requires a little bit of a struggle to get everything set up in your lights and it's the same thing with Apple right Apple versus Windows people say they like Apple because it has everything kind of taken care of for them and they're not to waste any time thinking about stuff but with Windows you have to mess around with a little bit more but you can get some cool stuff too so Python where if you are an absolute beginner if you're an absolute beginner Python I think it's going to require a little bit too much fiddling around with it to install modules that will let you do cool stuff like I'll give you an example I just in the past couple days I created a Python program that will let me automatically download stuff from Craigslist the ads from Craigslist and then it looks words and it automatically sends an email to the jobs that I want to apply to or it sense like if I want to buy a TV it'll automatically send an email to that guy as soon as it gets it in the RSS that's super cool and I and I let my friends use it and I give them you know they'd send me their resume and I have you know working the thing is in order to get that thing to work I had to install a bunch of modules that would let me make it talk to the email and talk to the internet and and the hard part is getting those modules working so that the hard part is that a lot of the stuff that's pool in Python is not in the Box right away and so that's why I recommend if you're absolute beginner you should learn something else before you learn Python just to get your foot in the door so you don't get discouraged by having to install all these modules to get to do cool stuff like talk to the internet so yeah right right so that's the big question so what am I talking about so what I recommend to people is something called Auto hotkey if you use Windows it only works on Windows it's called autohotkey and the reason I recommend autohotkey is not as pretty as I thought like you know the way things work but it out of the box you can do stuff that's really cool like for example but just like one command you can they have it basically what Auto hockey does is it moves around your mouse on the screen and if you tell it it can like type in stuff on the screen and it can switch to certain windows on the screen so you can do really cool stuff like for example just on Sunday you know when everybody was watching the Super Bowl I was teaching this girl who did no programming at all she had knew nothing about programming but I showed her in like two hours how do you download Auto hockey it's really easy to download Auto hockey it's really easy to get it working you don't have to worry about like the version being right or anything and then with just like a couple all you need to know is like two or three phrases and you can have it typing stuff out automatically so for example if you have an extranet or an intranet in your office and they're constantly logging you out of your out of your out of your email you can have this one keyword and once you learn how to use this real easy it takes you five minutes it'll type out your past before you and then hit enter I know that's a security thing you know you shouldn't do it but you know whatever that's why I recommend that you store it with Auto hockey and learn how to like move the mouse around and I'd send in the button so it'll type stuff out and you can automate your job I was at a job where I automated like a huge portion of my job just by having a move around and stuff so that's where the people that are total beginners but because there's a Python Club I'm not gonna spend all my time talking about Auto hockey I just wanted to give that heads-up because my goal here I think Python is the place where the new people should go people that are not used to program they should go to Python because Python is a lot easier to use and a lot of the other programming language about programming languages so I wanted to be helpful to those guys that are just starting out and give them a tip about what they should do before they before they struggle with all the installation and like setting up they call it setting up your development environment where you get the whole pro click you'll get your computer all set up so that you can have a do cool stuff with Python it's a little bit harder than with Auto hockey so I recommend you so Auto hockey alright so now I'm going to talk about what my actual talk was was which was Python and flash cards and I started I discovered this program called Anki a.m. I discovered this program a year ago and it's a flashcard program and it's really easy to install in fact I should probably just log out a user and I'm gonna put it I'm gonna install it in funny you guys you can see how easy it is and it works you can use it on you can use it on Android is totally free on iPhone it cost like 25 bucks the best investment you'll ever make it's totally worth it and they got a lot of free decks of cards that you can use to learn all kinds of different things like for example if you're learning languages like you're learning Chinese or Spanish or German or whatever you can use this program to constantly remind you how to say something and what I want what I like to stress the people is you know in the old days when you learn is something you would have an apprenticeship right so when Benjamin Franklin was trying to get a job when he was a teenager he became an apprentice to his own little older brother who was a printer and I I would ask you what is the point of being an apprentice well the point is that you just kind of sit there and you do the boring stuff that they don't want to do but this is the key you learn by watching them and seeing them do this stuff over and over again until it's just kind of beat into your head and then you know how to do it yourself so nowadays it's not as easy to get an apprenticeship I wanted to it would I probably would have a lot of trouble getting a programming apprenticeship nobody does that anymore so the question is how can you get that kind of experience where you see the same basic stuff over and over and over again until you know how to do the basic stuff how can you get that experience if you can't get an apprenticeship well in my opinion the way to do that is with the flash cards and so let me show you how to get it so you just go to Google you type in on key you go to the first link on key SRS SRS stands for spaced repetition software and it's like it's hole filled they have another one called super memo that was really popular in the nineties and I think people still use it yeah so now you just click download and it breaks it down here and you got Mac Linux all this you click on window so I took download for Windows 25 maybe 25 megabytes down load and the other cool thing is that it stores all of your flash cards online so if your computer blows up or you know if you're at someone else's house you can check it you can do it on their house as well and you can do your flash card straight in the browser so I discovered this a year ago just from like randomly browsing on the web and I have used it to do a bunch of different things and actually before I even bring that well let's pretend that it works right so because I don't have admin access I'm just gonna go back to my other profile but that's how you do it you just click on that button it's really easy so I want to tell you a story I got these cousins that live in upstate New York and they live out on this like out it's basic like on a farm and they're homeschooling their kids and they live in this tiny house that's like literally smaller than this in this area this area that were sitting in and I was visiting him this one time and I was watching their daughter was like in fourth grade do her homework and what she was doing was the long multiplication when you do like 557 a you know times 35 right and I was watching her do her homework this is the way that she was doing that multiplication she wouldn't she had this big chart and for every single you know how that you know how it normally works for you do you go to the lot the right and you do the multiplication of the thing on the right times all the top and then you go to the next one and Joanne was good she had this chart of the times table and for literally every single multiplication every single mini multiplication she was looking it up on this x table so she she was looking up i've times eight and she had this huge chart and she had to look it up i a and she had like 40 problems that she had to do like this and i just looked at that i'm like oh my god right that's that's not the way you're supposed to do it but it was like an epiphany for me because it made me realize that they're going to be times when you have to put in an investment to memorize something that you're going to be using a lot so that when you're working on some of the project you don't get bogged down in all of these stupid little details that are going to slow you down and make you give up right that's the key you don't want to you don't want to lose your motivation and so so I thought that was like a really cool story because it made me realize that I was making that same mistake with a lot of my projects that I was working on where I would because I'm starting out because I don't have a bachelor's in computer science I don't have some kind of external motivation to make me keep going if I'm working on a project that's really being a headache right if I'm learning some language like Java or Python and I run into all these problems my motivation is gradually gonna go down and down and down and down and down and what would happen to me is that after like a week or two of non-stop problems I would give up and then I would stop working on that language totally for months in some cases like six months I would I would go without doing any programming because I lost my motivation so what I was thinking to myself this had happened several times and I would go for months without doing any programming I thought to myself how can I get over this problem how can I get over this problem of I'm working on a project and running into all these problems I lose my motivation I give up and I stop working for months and the conclusion I came to was that what I should do is focus entirely on some kind of way to repeat these basic tasks that I'm gonna have to do when I'm working on that project repeat those tasks over and over and over again at some low level every day so that even though I'm I'm not doing any big project over time through that tiny investment every day I'm building up this this bank of knowledge that I can use if I decide to start some project and what that does is it reduces the barrier to entry when you're trying to start a project if you don't know anything about some some language like if you say oh I'd really like to do this thing in Java but I don't know anything about Java you have this you might have this like big mental block where you think oh I'm gonna have to learn how to do this and then I'm gonna have to learn how to do that and that makes you stop from even starting and what I learned was that if you can use these flashcard programs to reinforce those basic steps like how do you load the program so that it works how do you open a new file and get something basic running you can make flashcards that will force you to never forget how to get started on a project so that even if you lose your motivation you always remember how to start the project and that way it's a lot easier for you to – if you have an idea for something it's a lot easier to get started because you don't have all about those barriers to getting started we've already put in that little bit of investment every day into how to get over that merit started you Cyril any questions you use flashcards you right you well that's the thing with this program you can do anything you can make it yeah you can put video you can put audio you can just you hit a button and it record your voice right it's really easy to do yeah I would say it's not as large as you might think like with Python they have like 20 people that have posted their decks but the problem right now is that there's no coordinated way of organizing people into creating you really useful and one of the things that I recommend you do is create your own cards whenever you run into a problem whenever you run into something that that stops you for ten minutes and you're trying to figure out the answer and it's something that you're going to run into over and over again or you think you may run into it over and over again like for example an error message when you get that error message what does it mean well a lot of time you could just google it and you'll get a pretty quick answer but sometimes when you google it you don't get a good answer and in those situations I think it's very valuable to create a flashcard that will remind you in the future what does that what that error message might indicate when you see it and so that's like an example it's just like with that my my cousin's story where anything where you're gonna see it over and over again like the multiplication you want to put the time you want to invest the time to try to memorize it so that you'll you'll be able to come up with a quick so I think the big the big difference with programming nowadays that versus like learning mathematics like a language is that with programming the body of knowledge that you might need to know is so vast that a lot of the time you just you just have to Google a lot you have to Google a lot of what you're doing because on one particular project you might have to use this one this one module that you've never used before and then you might not use that module again for five years and so in that situation you have to be good at googling the problem but I think that's that in itself that realization that you have to get good at googling stuff that is the kind of thing that you would want a flash bug you would want a flash card I had this problem how did I fix it and the answer would be something like well I googled this and then I did this and then I found the answer like that just reminding yourself of those kinds of victories is going to help you another story that I like to when I was studying Chinese in college I I was having a lot of trouble memorizing the characters and it was my first semester I was I was just and I was basically flunking and the once I just by chance happened across that the method of using flashcards in different segments where you have different groups of flashcards that you review at different intervals so for example I had three pilots I had a pile that I would review every day I had a pile that I would review every week and then I had a pile I would review every month and by breaking up the flash part like that and forcing myself to repeat the cards until I had it down and then moving them gradually from one deck to the next I was able to I was able to vastly improve my ability at the using the cards and now I'm using right now I have decks that are in German I'm learning German Spanish I was learning ASL sign language people's names learning mathematics I was learning you it's important and you need to have that stuff kind of pop into your head when it's going to be interesting and so that's what I think the flashcards but in the past year been experimenting so one of the problems is you have to figure out what the right balance is between the investments that you're doing in to memorizing cards and the time you're losing by putting in all that time memorizing the cards and that's I don't know the answer yeah I'm still in the process of figuring that out because you really you want to memorize things that you're going to see over and over again but there's a real danger where you might just start investing time in to memorize so for example I have stopped studying the language ones because I realized that I was spending a lot of time every day like 30 minutes every day learning this stuff and it made me really think you know what was the situation which I'm going to use this information that is worth the cost worth the amount of time that I'm giving up you so right now it's just sinking and that means that it's sinking with the online thing and so now you can see this is where you have all of the different decks that you look when you start this whole thing is blank like if I switch my profile to my LSAT student okay so this is my else that's doing so when you start with on key your page is gonna look a little bit more like this whereas basically blank and you're gonna have thanks to this one this is for the ELSA she's studying for the Law School Admission so she has these cards well I'm gonna go back to mine she's still learning how to you but basically all you have to do is drag an image let me show so I'm learning this is ASL they have it broken you can have it broken into like kind of like folders or subfolders you hit the plus sign of them want to study each so if I click on this folder this is level one team cards study now you see a gift see Egypt where she's she does this motion and your goal is to figure out what does that mean so I honestly have not say these parts in like a couple weeks because I've been extremely busy at my time we're gonna start up right now I'm working like 12 hour days so a lot of these but in this case I think this is I don't even remember but so what are you do is you hit space right hard-of-hearing so that's what that means now you see at the bottom it has these four different buttons again hard good things up above it tell you they're supposed to tell you I think approximately one of the problems with monkey is that that that works quite right or maybe I still have to figure it out well right now I see the cards a lot I see the cards maybe more frequently I ended up hitting easy a lot but what I would do is I would hit again and then I would keep working on these other ones and it would show me at the bottom you see this orange one in the middle there these three numbers zero on the left and then this 8 on the right the ones that are green are the ones that I still need to do for that day the ones in the middle that are orange those are ones that I said that were difficult for me and I'm gonna be seeing them again the ones on the left of the blue would be totally new so Green is things that I have to review that day or injure ones that I indicated that I needed and blue yeah searching yeah you you see this button here at the top it says browse you click on there and you have this thing up at the on the left that lets you you can have tags on different cards but you can also you can click on whole collection you can search up at the top and you can search like hearing and then boom you get everything that has so the guy that made this he did a really good job and it's totally open source and it's made in Python I should have said that this program is made in Python play around so it's it's really cool and you can look at just your current deck so here's a great example I'm using this program to learn knots because knots are something that if you know them in the right situation they can be extremely useful and if you don't know how to tie a knot you can waste a lot of time trying to untie something that and the problem with math is that you don't need to use them that often it's just that you know it's in a while on some random situation at knowing how to tie a knot would be useful but if you use unki you can review how to tie knots easy way to the point where in that random situation you will go oh I remember how to do this so for example just randomly I got a PC from somebody off of Craigslist and I happen I carry a little bit of string around with me since I started learning out of timeouts and I gave me this cart and I could put the PC on but there was no way of securing the PC to the cart but because I had that string with me and I knew how to tie the knots I was able to you know get it all figured out so that's like an example of how you can use this program to study and you can put images just drag images straight in there it automatically converts the images to PNG it automatically puts it in folder where all of its images are automatically downloads it through the cloud all this is totally free great question so what'd you do to create a deck you see this button at the bottom called create deck you just click that you put in the name so I'll just call this a SDF and then it's sorted alphabetically oh yeah this really automatically but the capital letters go so I click on that so now this is the new deck so if I want to make it add a card just go to this button at the top I'll add you click there and you get this window now with this window you can just go to your hard drive and drag images you can drag audio you can just download stuff so if I go to you so if I click there's a weight down you can do it you can just download stuff on Google you go you're gonna win it downloads it'll show up in the bottom left and you just literally drag you hold down the button you drag it and then you drag it in window and you just drop it in there and it immediately says if I search you I got it in my flashcard it's that easy it's really they make it really really easy to add anything same exact thing with audio you just download the audio you just drag it over and boom you've got the audio if any of you guys know math it works with late lot tech or latex with my tech lay tech the worst with late type so you can download a module it's going to require a little bit of fidgeting but you can download a module that has latex and you can put all this fancy formatting stuff so I can show you some of my math you okay so here's an example seamlessly yeah well you get the point right you can have another one freak out math but I don't know the Greek alphabets initial what they're talking about so what I do is I just drag it from Google into here and now I've got the Greek alphabet memorized and this is the key thing because when I'm studying those math books that's like a perfect example what it's talking about with my cousin when she was doing the math thing she had this stupid stuff that she had not memorized that was slowing her down when she was trying to do that task and she should have focused on memorizing that stupid stuff so that she could waste less time when she was working on the bigger task and this Greek is exactly the same thing if I'm reading a math book and I don't know how to pronounce it week symbol that is going to slow me down again and again and again but if I just use this flashcard program to memorize what the Greek symbols are that is going to remove that barrier once I decide to work on that larger project so it's that's the way you should look at it is if you have this big project that you want to do but you you always lose motivation when you start because it seems like such a huge thing just pick off one piece of it and say I'm just gonna focus on memorizing how to do that for it and then just put it in your flashcards and then come back to the project in like a couple weeks or a couple months if even if you need to do it that over that kind of time create a deck you Yeah right the good question thank you for asking yeah any of you have questions or comments I would much prefer this to be a dialog instead of just me talking because I'm gonna forget stuff and so if you ask questions it's gonna remind me stuff I should cover so what I did was I chose a title you've got you have different kinds of cars usually it's just basic which just has the front on the back but what I would often do is I would want to test myself on knowledge in two different ways like so for example if you're trying to learn Python and you want to learn how do I like what does what does phenom mean what does that mean when you see it but you also want to know well if I have this task that I want to get done and enum is like you you know if the guy who knows Python he says all enum is the tool for that but if I don't know Python and I want to know well what what keyword am I should I use to do this task you want to test yourself on in both directions you want to test yourself if you see a word what does that word mean and you also want to test yourself if I need to do this task what keyword do I need to use to get that task on and that's what the reverse does if you just put you but in like you this is the synth in Python well I mean this is that's not a great example you see this you'll probably know what so like you could test yourself well if I see that on one side like they're just going to show you a flashcard where the front of the flashcard is the top card and then you're gonna your goal is going to be to figure it like to answer well what is that what is that doing and then you'd have to produce the answer well that is going to iterate through something and then you might have the other opposite question where if I want to iterate through something how do I do that in Python but what is the syntax for that because that's another example of something that can slow you down if you if you are trying to work on a project and you just keep hitting again and again against the syntax of the language and you're just saying you know this is wrong that's wrong no you're not doing this right that can really mess up your motivation and so memorizing the syntax is like one of the best ways that you can really help yourself get started on projects cuz you don't you don't constantly get dragged down by those little things so that's what the reverse all you do you just type anything if you just type anything in this in this field it will automatically add a reverse card which in which the bottom one is the front of the card and the top one is the back of the card so what I use why they're like yes I think it's just as a reminder to me of how that field works where you don't all you have to do is put any kind of stuff and we'll add a reverse bar so I just pull so that's what that's for and that's super useful I think yeah honest I'm going to be totally honest with a lot of this stuff I still don't know how to do it so with this these are buttons honestly that I have not played around with that much this looks like these are different boxes that you so one thing that people do sometimes is if you're dealing with like a vocabulary word you have different properties of that word like so you have the part of speech you have might have the gender if it's like a certain kind of language you might have like whether it's singular plural each of those are like properties and you can have those properties in different boxes so that you can organize that information in a certain way on your you can like format each field in a separate way so that it all looks pretty it just basically adds another white box yeah so what'd you do that's a good question I don't really remember it's like I had to google it yeah so he was question how do you get how do you get late tech work this late tech is what lets you put the formulas so that looks pretty and so what you I think the part thing for me was you have to install a tech on your computer it's like a programming language like Python and PHP and that you need to have like a program on your computer so that it'll do the work of like generating the picture and so that was the hard thing for me was downloading latex and then I think I mean you could just try it right now you just Google latex ronke and then there we go like you can usually find somebody who's talking about it on their blog and they'll help you figure out how to how to get it working I would say there's a lot of good YouTube videos out there there's a really cool video that I saw where this guy takes he's studying a medicines gonna go to med school and he's got this picture of this maybe okay he's got this picture of this like this person out of a textbook and it's got all this stuff lately right and he had they have this thing for unki where you just dragged it into this add-on for Anki because all these people create add-ons cause it's all open source they got this add-on where you just drag a box over all these different words that are pointing to the different parts of the body and then it makes all of them blank and adds a card for each part of the body where it says well what is this part of the body what is that part of the body and so it takes in like 10 seconds to make a card like to make 30 cards for all these different parts of the body so you could use that in you might be able to use that in different circumstance I don't know but the point is that there are a lot of number one thing that I want to show you guys before I forget how to sync your your stuff on your computer to online that is something that can be kind of confusing you have to go to this button in the top right right there it's synchronized but well in this case what I'm gonna do is I'm gonna make a new because what you do is if you have not created an account you have to create an account on site if you have not done that it will ask you and that's actually I think the hard part is just you you yeah I would say the PC is where you're going to want to create the parts this is useful when you're on the bus and you got five minutes yeah she's asking are they publicly available or a private everything on your computer is going to be private unless you choose to share it and I honestly I have shared something I don't remember how I did Yeah right so unless you go through the unless you put in the extra effort to make your thing publicly available it is private it's just like email no one's going to be able to get in there and so I mean unless there's like some kind of security so the other thing I want to say is how do you get shared cars right so you go down to this bar button right here and you click get shared and then it's gonna bring you to this website and then you can click on all these different buttons for all these different subjects but you might see like look there is no programming so does that mean there are no programming cards well no it took me a while to figure this out but you just go to the search thing and you type in the name of the language that you're trying to learn and then you don't hit just click on search and then you get the list of all the flashcards that are publicly available and and not that database that have that word in it so you can see there aren't a lot for Python it's I think this is a very new thing right it's not very many but I don't think it's really taken off the way it should I really think that this is the best way this is a really good way of learning stuff and there still isn't a good way to to find good cards I would say if I had to guess the number one problem with this program in my opinion is that there is no way to charge for your cars and so there are no companies that that have developed cards for this program I think that if they added a feature where people could charge like a dollar like an app store in your IP I mean he's rolling his eyes but I don't know I think I think if you could charge like a dollar for your cards you would see people generating really good flash cards but the guy has I think people have been asking for a long time and he just refuses to allow people to charge for stuff I mean he's refusing to add that feature and you could it's open source so you could probably create your I don't know if the license says so that's how you do that I've been Java now when order in order to check out the language the flashcards it's going to be a lot of trial and error right now but what I would do is I would go and I would look at this stuff on the right and it this tells you how many flashcards are in the day this tells you how many of the flashcards have audio and this tells you how many flashcards and that's those audio and images are really mainly relevant for languages so what then I do what I do then is I click on the info here and you can see a description where they talk about it you can see when they last updated you can see three examples of cards if if it has something like latex in it it's not going to show the actual image it's just going to show the latex code so then what you do is you just plug download you download it and then it immediately imports it it's really easy right so now it's immediately in your program it's really the guys did a really good job you made it really easy so now this is the card what you can do is if you're using someone else's deck and you find that some of the cards are useful but other cars are not using you just go to this button down at the bottom right more you click there you okay so you can suspend I don't I'll be honest I don't know the ins and outs of this program but basically if you're finding a cards not useful you can get rid of it it's not that it's not like you have to take the entire and so you can just so as for how you would use it so this is all my stuff for programming I have java i've got i've got what i like to do is i like to break it down just like how you when you're making a program you have to break it down into different like small function want to keep everything nice and tidy i try to do the same thing with my flashcards where i don't just have one big deck for java or i don't have just one big deck for in excel i break it down into each kind of like little module of information so that for example in excel i would go through first and I would remember I would want to memorize all of the functions and then I would go through again and I would want to memorize all the shortcuts I would say even just having a giant functions thing in Excel is probably being too broad you should probably break it down even more into like financial functions and searching for data functions so that's I think the way it should be but they really don't have a way of collaborating online to create something like that and so that's something that I think they should really do to allow people to like yeah you great question thank you that's me yeah so this is another thing that I recommend I personally recommend that you download flashcards not strictly about programming so that you can use those experiences to inform how you create flashcards to programming so for example with me the first deck that I down I'm gonna get your answer this is all relevant so with me the deck one of the first decks that I downloaded was the German like this German ones and so I was using I was playing around with these things and seeing how this one has audio this one has a picture and I would see good decks and bad decks and I would see what worked what helped me and decks that were not helpful that were that did not help me and what I found to answer his question because this question is well how do you go about learning a programming language when you're when you're doing stuff is you don't want to start off with really advanced stuff if you're don't want to do stuff that's gonna ruin your motivation this is something I have to stress over and over and over again it's all motivation if you can keep yourself motivated you're gonna make a lot if you keep yourself motivated there's a good chance that you're gonna be really successful if you lose motivation then you're gonna there's a you know it's gonna be a lot harder for so personally what I do is I spend a lot of time thinking about how to stay motivated and the way to do that if you're learning a language to answer his questions or I have comments peeking around it is start with small things so for example with learning a human language what I would do is memorize basic nouns first don't start off with a huge sentence start with nouns just memorize them noun for this object and the noun for that object and start small so that you don't lose motivation because yeah so now to bring that to programming what I would recommend you do is start with basic things like how do I install Python on a computer that's the kind of thing that you can you know once you once you know how to do that it can make you feel it can be a challenge if you're not if you're new to programming it can be a challenge to just stall some money computer and then you could add another flash part saying you know how do I start how do I create a Python program on a computer and that requires that you understand how to like start idle like you you might ask yourself what is idle on in Python and you might ask yourself you know what is the command farm all these kinds of basic things so I would what I would do is I would say how do i download Python how do I create a new Python program you might open it up so I can start doing stuff in it and then I would create another one saying like how do i how do i print to the screen that's then you know that's the classic thing that you want to do a program how do i point to the screen and what is the syntax for that and then the syntax is a huge thing that'll keep you from doing stuff and then I would do all the basics like what I basically what I do is I just go to the documentation it's basically a memorizing the jocket documentation I go to documentation I look at the list of all the functions and I start looking at the ones that I think gonna be the most useful in the near future and I just take those once I copy the name of the function I put it in the top of the frontal card and then I put you know what the function does I put that on the other side and then I hit the option for reverse so I see both what the function says and I have to remember what it does and I also see the description of what is my deck for processing processing is just like visualization software made built on Java so what I do is so here's a good example of a thing what is wrong with the code below and this is it's like a test of your syntax and something this is an example of a card that would get too advanced or somebody who's just starting out you would need to know out of how to start a program first like you wouldn't want to start with a card like this if you know absolutely nothing about processing because it's gonna be demotivating like i have no idea what's going on this is for when i was learning how to do vector okay so basically what you want to do is yeah so here's a great example I put the name of the function on the front of the card and then on the back I have to remind myself well what does this function do in this case it's kind of self-explanatory it just tells you when it's a function that's called every time the person let's go to the mouse and then you might see something like this and the question is well is this checking the name of a string or is this just checking the length of a string or is this checking the length of an array this is the kind of thing that if you don't memorize this it's going to just drive you insane little things like this it's gonna drive you insane so what I did is I just copied the documentation into this flash card and I removed any reference to the name or and so what my goal is what I'm studying this card is I want to memorize the syntax of using the function like what are the different arguments that I have to pass the defunct in order to make it work because it's again little things like that but knowing what arguments have to be passed and in what order little stuff like that is just going to drive you nuts if you're starting out there so it's really useful to just memorize that stuff and a lot of the time there aren't even that many functions that you really need to know in order to like get started and it really if you memorize it for the functions that are used the most often it really cuts down on the amount of time that you it's you don't wanna get interrupted that's the things like have any of you read about flow the whole thing with flow is it's got to be uninterrupted so if you're constantly getting into interrupted by I don't know how to do this I don't know how to do that and I don't do that it's just it ruins the experience it's a lot harder to stay in the zone so you that's why you want to memorize this stuff so that you stay so like what is this function this is the name of the function what does it do you know even these are a little bit too long but you can see that what I did was I got rid of the name in the documentation that F was the word size move the word size and I put F you know spoil it when I can get this one of the corn another example is Excel memorizing strictly related to Python but it's the kind of the same idea memorizing shortcuts that you can use so I don't I don't personally use vim but I've heard people say that like if you know the shortcuts in that program you can work really efficiently and I've seen that with excel where if you memorize shortcuts you can do a lot of cool stuff and you can do it that really fast and it just makes it a lot more pleasant to work with that thing and so that's memorizing the shortcuts of a development environment is an example of the kind of thing that I think is like in the past but would not have done it because it would have there was no it was too unwieldy there's no easy way to memorize the shortcuts but now when you just can carry that thing around on your phone and just invest a little bit of time every day it just makes it a lot easier to memorize those kinds of things that a lot of the time when somebody's going on a job interview and they say our program for five years a lot of the stuff they're bragging about is just annoying the shortcuts so that they can get stuff done faster so if you can you can put yourself at a huge advantage if you know how to if you can quickly memorize yeah I don't know how long I've been talking but he told me that it was about five minutes anybody any questions yeah right so you made like using web scraping yeah so I one of the first I think was like the first pipe DC Python group I went to when it was at the other place I asked if anybody could help me with web scraping to do it automatically because I don't know enough to do that yet somebody said they would but then they didn't do anything so yeah I think that's a huge opportunity if you know enough about web scraping that you could create these things automatically that would be extremely helpful well what you would want to do is that's a good question that's a really good what you can do is you can import you can import cards as text separated by tabs or something so you can scrape it off a web format it like the way needs to be formatted and then import it in that way and then that'll be the fast way that I imported but that's something that I really wanted to do because a lot of this stuff I'm doing my hand that's what I was saying is like a lot of the a lot of the things that I don't like about honky is just that the work that goes into creating the cards is a huge hassle and that's annoying so if they had people creating quality cards it would make it even better and an even better experience that's a good question that's a good point right that's a really good that's a really good point because that's something that people say a lot is that the process of creating the study guide the process of creating the flashcards is what really helps you learn or helps you learn as much in my experience and the reason of things from my experience with this German deck with this German deck in particular I did not create this German deck but it it really helped me just to get interested in German and having it all there and easy to use it just it reduced the barrier for me to get started so what I would say is you're absolutely right if you have the motivation to push through any aggravation involved in creating the cars yourself if you can push through that then creating the cars it's going to be a great learning experience it's just like learning about computers if you can push through the difficulty of learning how to build a computer or you know do any kind of basic stuff then you're gonna get a great learning experience but for the people that have more trouble motivating themself how to use the computer than using an apple where everything's just kind of done for you might be an easier way for them to like get eased into the experience that's a great question that's something that I think they need to add is that right now there's no way to I think is the future I'm gonna just like talk about I have someone crazy ideas I I was a psychology major in college and what they used to do this guy named BF Skinner he would get a rat and he would put it in this box and he would like not feed the rat he would only feed the rat like 75% of the food so the rat was always hungry and then they would use food as reinforcement and they would say to the rat that a pigeon like all you could do was press this bar and you get a thing of food and they were able to use that to train pigeons how to dance to train animals do all kinds of crazy stuff crazy things I think in my opinion if you did something kind of similar to that with people where like people in prison for example if you have them in that thing I really think it can work I really think yeah that's one of the books that BF Skinner so I well it's good to see people like nobody's talking about but I really think that one of the problems like when you're a kid what your parents do is they say oh if you do this then I will give you this reward but we live in a society right now where you can just like buy anything so it's like there's no you well yeah money is the reward but it's a lot of the time it's hard for people to overcome it's hard for people to delay satisfaction and so if people are like if people say oh I'm gonna reward myself with a candy bar for doing this thing what inevitably happens is you do it for one day and you reward yourself with a candy bar and then the next day you just buy the candy bar you don't do the activity anymore right because that's that's the way people are that's way I am so I think if if they had a thing like that where it's like a boot camp or like people talk about the same thing with joining the army they say oh the army cleaned up my life the army turned me into the man I am today and I think you know maybe that's not always the case but I've seen that with people and I think the reason is that it's like that kind of structured environment where you force people into a situation where they have to go through this activity that allows them to to do things that they would not have otherwise been able to do they were in their original environment a lot of people if they stay in the same environment it's really hard for them to motivate themselves to do great things and so I think that one of the big things in the future is they're going to be taking people into the people are gonna volunteer they're gonna say please let me go into this environment for three months and they're gonna they're gonna fix me up and I'm gonna do these flashcards and then after three months you know of helping me stay motivated to do this task then I'm gonna come out like a much better person I think people would voluntarily do that and I yeah people do that with the weight thing where they joined this camp where they they like learn that they they're forced to do it so it's that to get back to your question I think that's a great idea I think that's gonna be the future I think the problem the fundamental problem is that these programs as they are created right now have no leverage over they have there's nothing that they can give you that will overcome any kind of like feeling that you have that you don't want to do it and so until they have that until they have something that will motivate you some kind of what they call external extrinsic extrinsic or external motivator until they have that then I don't know if it's gonna be that useful they have all these websites where they say oh you can run points who cares right 20 points for its you need to have some kind of control over that person's environment if you want to have them reacting you know if you want to make it rewarding so yeah that's the matrix so anyone any other questions okay yeah yeah yeah yeah yeah yeah you you you

10 Replies to “Using Anki to learn programming – Talk @ DC Python Meetup”

  1. David

    That comment about BF Skinner and the prison+SRS experiment – that's the basis of a really awesome sci-fi book. Or possibly real-life book.

  2. David

    I had a revelation while watching this video – when you're making cards for programming languages, you should use cloze deletions! That way you have a very well-defined, short thing to memorize.

    I've been feeling like – I've been trying to incorporate programming into my Anki routine, but I hadn't found the secret sauce yet. Maybe this is it!

  3. Mamunur Rashid

    Python is not for beginner? Utter nonsense!! If someone is having hard time to install 'modules/libraries',then,he/she shouldn't get to programming,anyway!! If it is painful for someone to just type 'pip install modulename',then,well,what can be said….Again…Utter nonsense!!

  4. Jonathan Rooke

    I don't comment much on Youtube videos. But, I wanted to tell you that I'm really enjoying your presentation (at about 13 minutes). You have a great out-of-the-box DIY approach and make interesting points on a variety of levels. I'm poking around Anki for CSci videos I'm an experienced Unix admin working on my chops in order to score some cool Dev Ops gigs. To me what I caught so far feels a little inspirational.. Thanks.

Leave a Reply

Your email address will not be published. Required fields are marked *