This is what and how much I studied in July
7.2 – 2h I started the cs101 class on udemy. Tonight I finished the first lesson but not the homework. I played most of them at 2x because, well, I don’t have time for 1x when I’m studying at 10:00 at night. I studied for almost 2 hours and completed 12% of the class. I also started retyping my notes to the complete python bootcamp and cleaning them up. Oh , I also started up this blog today! Lots of config and setting up, although WordPress makes it really easy to get started. I bet I’ll do some customization at some point in the future, but we will see.
7.3 – 3h I did 3 hours of cs101. I’m on lesson 5/30. 22% done. It’s covering python and its mostly beginner topics right now, but it’s still good to get the fundamentals covered. Today we learned about find() in strings, string indexing, and functions. I learned that you can do boolean operators comparing alpha characters! a<b = True.
7.4 4h Back at it again with cs101. I finished unit 2 which covered procedures and the if statement. assertions were covered for the first time and we did a function that calculated days between two dates. I am up to 37% complete, and some of the questions slowed me down a bit. I put in 4 hours today.
7.5 4h I wasn’t stoked on another night of learning to code, so I decided to actually write something tonight. It called the noDaysOff calendar and I posted about it here. I spent about 3 hours on it and I was really happy with my modest success. I’ll keep chipping away at it over time.
7.6 I put in 4 hours today on cs101. I’m up to unit 4 and 56% of the way through the course. not bad for four days! today I learned a lot of cool stuff. I learned the intricacies of list concatenation, how to use list.index and “value in list” as a boolean test. I also learned about depth-first and width-first algos in scraping.
7.7 3.5 hours on cs101. hash functions, data structures, and a lot about transferring data across the world. I learned about ord() and chr(). Using modulo to evenly divide entries into buckets was a pretty cool thing to learn. I also saw a bit of code that was appending chars to the last string in a list. I think it is neat.
7.8 3h on cs101. lots and lots of dictionary talk. This is also my first full week of studying AND blogging, so things are shaping up. I plan on going to a python meetup this week and finishing cs101. I’m unsure if I should go on to the next cs class or do a more specialized python class like django.
7.9 2h on cs101. I feel terrible, but I pushed through. we learned about recursive functions, and my mind was blown. We also learned about a web result relaxation ranking algorythm that seems pretty confusing. the recursion is hard to see for a beginner. I need to rewatch that a few times.
7.10 2h Today I started on my idea to make a scraper program that downloads new images from my email. It conditionally works now. I spent about 2h on it.I also went to the Boston python users meetup! Tonight was project night, so it was mostly people talking with each other. It was a lot of fun. I sat at the beginner table and we had a lot of talk about intro python stuff, some of which I knew, and some of which was new to me. Maybe the most interesting thing I learned was about the spyder ide. I don’t like having to tab back and forth between sublime and terminal, so being able to do it all in one program really appeals to me.
7.11 1.75h Between feeling sick and having a super sick kid I didn’t get in as much studying as I wanted today. I did 45min of rewriting my notes from the udemy python bootcamp class, and an hour of work on noDaysOff. I fixed the day-of-week bug and added a total hours worked counter. Rewriting my notes is super valuable, but also really draining. I think it may be because it isn’t actually learning anything new (just reinforcing), and also because I am a terrible typer and I end up doing a lot of deleting. Typing-wise I’m getting much better at my alphas, slightly better at my numbers, and I don’t want to talk about the punctuation. I also listened to an episode of “podcast.__init__” while I was out for a walk. I feel like I’m just starting to have enough vocabulary to get something out of podcasts like that. I also struggle with podcasts because they tend to be fairly low information density, but without supporting visuals it’s hard to listen to them at a high speed and slow down when something interesting comes up. It’s a good way to build familiarity with the lingo, but I dont think I could entirely learn through podcasts.
7.12 7.5h I was able to put a ton of work in today. I did 5 hours of coding and 1.5 hours of rewriting my notes. I pushed code for noDaysOff and did an initial commit for kaymbu_image_downloader. It was great to be able to put in a bunch of time.
7.13 1.5h This weekend was rough. I definitely need to plan for trips so that I know what to study and how to do it if I have poor internet. I ended up listening to an episode of talk python to me (“10 books python developers should be reading” ) and listening to Ned Batchelder’s pycon talk about how to treat unicode in your programs. His main strategy is to have unicode on the outside and utf8 on the inside. He was running the python meetup I went to this week, and it’s clear he knows his stuff.
7.14 2.25h Tonight I listened to two “talk python to me” episodes, (“pythonic career advice” and “4 python web frameworks compared”) and also watched about 30 minutes of tutorials on pytest. I’m going to push myself to write tests for everything I make moving forward. It seems like a way to actually save debug time, especially when it’s a complicated thing like a web app.
7.15 2h tonight I did 2 sections of Tim Buchalka’s python masterclass on Udemy, focused on OOP. This is a concept that still seems hard for me to understand. In the example of a flask webserver I don’t know why it makes sense to go OOP vs functional programming because you are not usually going to have more than one instance. At least I understand a bit more about OOP, even if I’m not done learning. I also got my web app running on my laptop. Previously it was set up to run on the pi, but that felt very cumbersome to develop on. Even if the end use is going to be on the pi it makes sense to get it running on my laptop so I can iterate faster. On the plus side I realized that the flask app is already OOP. I had been banging away at it without fully realizing that when I started it months ago!
7.16 7h Tonight I did a ton of work on my email image scraper and started learning some data structures. I also did:
7.17 4h I worked on sorting algorithms from Data Structures & Algorithms in Python – Udemy This is my first taste of sorting algorithms, and now I can see why some people are afraid of them. This stuff really requires you to slow down and think it through. You have to remember not only how to write the algo, but also how efficient it is (in both processing and space), AND what type of scenarios are ideal for each algorithm. My one criticism of this class is that is that it is obvious that this is not a python-specific class, even though it has python in the name. It seems like they recorded videos that are language agnostic and then interspersed them with python quizzes. The tough thing about that approach is that it is all theoretical lessons, and then they basically say “Now write a bubble sort algorithm!” I’m sure that some people can follow that, but it feels a bit slow/unproductive to grind away, writing (or trying) to write an algo that most other classes would show you an example of. I wrote one of the three intro ones and then found example code of the rest. I heavily commented the example code as a way of learning and understanding how they work.
7.18 6.5h I did about 3h more of Data Structures & Algorithms in Python – Udemy and it continues to be a slog. I’m not sure if it is always this difficult or if maybe I should have more fundamentals under my belt. Either way it is really forcing me to slow down and focus. Recursive sorting algorithms are a 1-2 punch of things I am just barely starting to understand. On the other hand I wrote a fun script that will allow me to copy a file or folder of files with a user-entered delay. This is great for when you want to move big things but not swamp your network. having tiny little scripts like that is a great distraction.
7.19 2h More work on Data Structures & Algorithms in Python – Udemy. Not too much else to add. I’m still unsure if I’m getting the most out of this class, but I doubt it will be the last algo class I take. I also did one kata on codewars.
7.20 2h I started cleaning up the quizzes for cs101, making sure I actually did them all. It is nice because it shows me how much I have learned, but it is definitely slower than I would like. The videos fly by, but you certainly don’t prove that you have learned anything just by watching a video! It takes actually writing the code to do that.
7.21 4h I’m almost done with the remaining quizzes on cs101. I am looking at cs253 next, and then branching off into something else.
7.22 1.5h Tonight I tackled OOP again. I’m relatively comfortable with the ‘how’, but I am lost with the ‘why’. More specifically I am unsure about why I should write code as object-oriented when my planned end use only involves one object. That seems like it would be more code vs functional programming. I did 6 videos in Corey Schafer’s OOP series. This still didn’t give me much info on the ‘why’, but it definitely gave me a lot more info and tricks on the ‘how’. This series was also good in that it talked about naming conventions as well. I feel like this is hard to learn from a book, and easy to get wrong when writing code in a vacuum. I also did a few interview question videos, but the quality of those videos is really mixed. I think they get a lot of traffic so everyone in the programming video space is making them. All of the ones I saw last night weren’t worth mentioning.
7.23 2.5h mostly cs101 on udacity, but a little codewars as well. I’m only 2 questions away from finishing (for real this time!) I’m not sure if I am going to go on to cs253 next. I probably should. Recursion is starting to stick a little bit better, and my supplemental oop videos seem to be working as well. I should think up and build something oop for a test project. I also watched a few general interest python videos today. Corey schafer has one on 10 things you should know to prepare for a python job interview. It was a decent video, but I fear he seems to be making it out to be a bit easier than it will actually be. Hopefully not, but it seems pretty easy when he says it. I’m also interested in starting to do some git pull requests for small things, so this video was interesting. Contributing to Open-Source Projects as a New Python Developer: How to Do It His argument was that it’s better to establish actual connections with people than to do random pull requests. I think his reasoning was that beginners will often do things incorrectly, and it ends up putting a load on the maintainers. Consequently the maintainers have little patience for beginners and both sides feel like they are wasting their time.
7.24 3.5h I started cs253 on udacity. There are a few “interesting” things about this class. It’s not in the official course listing and you can’t find it by searching. After taking the first 2 sections I think I understand why. They basically teach a small amount of html and then say “now install google app engine!” with a few links on how to do that. The course was released initially in 2012, and google app engine has changed a LOT since then. None of the commands in the links work for me (on a mac) and I’ve been struggling trying to find the newer replacement commands. The one thing that does work is using their entirely online code editor, but that’s really slow and I hope that isn’t the only way. They mention that you can technically use any hosting provider, but that they won’t be able to help you with anything outside of google. I’ve been considering using pythonanywhere.com, but it seems like there is a fair amount of GAE-specific code and instruction. I also think that things will get a lot more complicated when databases start to be involved. I could imagine them pulling the course (possibly temporarily) based solely on the amount of hand-holding that must be required to install GAE.
7.25 3.5h 1.5 of cs253 and 2h reconfiguring my Google App Engine install and working on the first assignment – “rot13 encoding a textarea”. This felt really good once I was able to get it working locally and then deploy it to the cloud. For future reference:
# dev_appserver.py . (to run locally) # gcloud app deploy (to deploy) # gcloud projects create unique-project-name (make new proj.)
7.26 4.5h of cs253. Jinja templates were lesson 2.5 and it was great to get a refresher on that. I had picked up a little jinja info previously but it was very scattered. It’s nice to have a broader base to build off of. I’m on lesson 3 now – databases! I’ve been interested and afraid of learning databases for quite some time now. I think that may be because (for some reason in my head I thought) mysql code has always looked like unintelligible garbage to me. Regardless of the reason it is well past time that I start using databases, as my previous (ab)use of too many text files as a database is fairly ridiculous. I’m also seeng the benefit gap between applications and web apps shrinking. I’ve always preferred desktop applications due to their ease of use, but the underlying python code is very similar and the benefit of not having to ‘ship’ anything seems really, really attractive. I think it will be a while away before I have any code that multiple people are using, but when I do I can see a lot of benefits to them accessing it via the web.
7.27 2.5h of cs253. DATABASES!! I’ve been looking forward to this. It hasn’t been bad so far. I also haven’t written much from the ground up yet either. I wish I was learning more SQL and not GQL, but it seems like it is similar, if not a subset of all SQL commands. I still only understand the bobby tables comic in a general sense. I bet I’ll understand it more specifically in a day or two.
7.28 2.25 of cs253. I made my first blog today! I also started on hashing. The blog assignment had me worried because it felt like a big assignment. Ultimately it wasn’t that hard to do once I broke it down into small enough pieces. I think that’s a takeaway for a lot of programming. If you break it down into small enough pieces you can always build the next function. The trick is to understand it well enough before you start building, or else you will end up with a half built, unfunctional program.
7.29 3h of cs253. We covered hashing and password security, setting and getting cookies, and started on a new user feature for our blog. I don’t know why it took me so long to figure this out, but I realized that I need to be saving my code quizzes and commenting them. I’m not good enough at rote memorization in order to remember the code snippets so I’m constantly going back and forth between the quizzes and the test. That brings up another weird thing about this class (and all udacity classes so far.) I really dislike how they name the structures of the class. Most lessons have two lesson numbers in their name. (see below) I think it is because the initial lesson order has been changed. Either way it is common enough that they really need to figure something else out. I’m tired of looking for lesson one / lesson three, and not having any clue as to which one I am actually on.
7.30 1.5h of cs253, 2h of boston python meetup. Tonight I went to the Boston python meetup. It’s the second time I have been to a meeting and this is the first time it has been a presentation. The last one I went to was a project night where people group together by interest and learn and teach and network. Last night Wolfgang Richter from soroco talked about using encrypted bytecode as a way to distribute python applications without distributing the sourcecode. Also Eugene Kovalev spoke at length about itertools and how they can make your life easier and your code more efficient. It’s funny how the more you know, the more you can get out of these events. Just two nights ago I heard about macd for the first time in a cs253 lesson, and then Wolf used it on one of his slides tonight! As a beginner it’s always nice to see a little light at the end of the tunnel, even if it is miles away!
7.31 1.5h of assorted youtube videos. I wasn’t feeling up to pushing more on the cs253 user login project, so I learned a bit more about unittesting in python, using pylint, I watched a class on sql injection attacks from Tim Buchalka, and I watched a video from Dan Bader on how to write clean, yet readable code.
This has been a hell of a month. I’ve learned a ton, and worked a ton. I’ll post a month recap soon!