It’s been about a month since I came out of the closet as a desultory Python studier, and I’ve been thinking that I should have included in my plans a commitment to post about what I’m learning, at least once a week. I’ll try to do that, going forward. Less sweeping saga, more this:
I started this blog as a sort of “developer notebook”. If you look back at the first ten or so posts, they are titled “Weekly Noise”. I was interested in learning Node.js (the hotness at the time) so I just wrote about what I learned each week and what I was planning to do next week.
—Matt Swanson, “Do things, write about it,” August 11, 2013
My progress for the past 3.5 weeks is as follows:
Completed weeks 1 and 2 of the U. Toronto course Learn to Program: The Fundamentals and aced all the in-video quizzes as well as the week 1 homework. I missed two questions on the week 2 homework but got them on the second try—easy enough to do when you’re allowed and encouraged to test out the code as you go along.
Did not try CodeAcademy. It seemed redundant, and I really like the approach of the U. Toronto course.
Did not read any of the books I previously listed. Instead, I bought the companion textbook for the U. Toronto Course: Practical Programming (2nd edition) by Paul Gries, Jennifer Campbell, and Jason Montojo (The Pragmatic Programmers, forthcoming this month). I like this, too.
Went to that NYC Python Meetup, and it did not make me want to go to any more of them. Ted Roden gave a talk about how to launch a startup while having a real life, including kids, and he was interesting and fun, but the space was inauspicious and the other attendees weren’t welcoming at all, either to me or to anyone who came in after me. Seats were scarce, and what there were, were hogged. And I was the only woman present (though IIRC there was one when I arrived who didn’t stay for the talk).
Probably the most useful thing I did this month, though, was INSTALLING PYTHON. That is, I had it, of course, being on OS X, but I didn’t have the current version, and I’d never even launched IDLE. It’s amazing how much more sense it all makes when you are typing code into an actual thing, in the world, instead of just reading about it. Who’da thunk it.
Also, to address the problem of not being able to test code while I’m reading on the iPad, I took the radical step of—GASP!—installing an iOS Python-learning app. It’s a hideous thing, so I can’t recommend it, but it does act sort of like IDLE, and it was free.
On learning more better
I recently listened to the audiobook of Geoff Colvin’s Talent Is Overrated (Portfolio, 2008), which didn’t tell me a whole lot I didn’t know already about how mastery works. It did make me try to think of what I ought to be deliberately practicing and how I might design that practice to be most effective.
I also just read through the first six posts in a “free one-week learn faster bootcamp” offered by Scott Young, whose e-mails I’ve been subscribing to for a long time but hardly ever read. The posts are going to stay on the Web for only another week before he takes them down (this bootcamp is a teaser for a paid course in study skills), so if you want to read them, go now: Day 1: The principle you can use to amplify your focus and stop procrastinating (the succeeding days are at the same URL with only the number changed).
Young’s posts gave me two useful ideas. First, rather than try to rebuild my Booknik project all at once, in a big codey burst, I should build it a snippet at a time, as I relearn how to do so. Come up with a minimum viable product, if you will, and gradually add features as they become possible (yes, I also listened to a chunk of Eric Ries’s The Lean Startup last week (Crown Business, 2011)). Toward that end, I wrote up a description of what I want it to do—which is basically a restatement from memory of what the old version did or was supposed to do:
- Upload a text file of a book
- Allow you to associate an author, title, genre, and publication year with that book
- Count the total words in the file
- Collect all the unique words from that file, along with a count of how many times each occurs
- Display a list of those unique words and their frequency, sortable by either column
Assuming you have uploaded multiple books, and that there are multiple authors, as well as multiple books by each author . . .
- Compare the word list of one book with that of another book, with options to see which words appear in both and which are unique to each
- Display stats for the percentage of unique vs. common words in a given book (relative to what? I don’t remember how this worked)
- Allow comparison of the cumulative vocabulary of all of a given author’s books versus all those of another author
- Display a list of only the words that are common across all an author’s books
- Display a list of only the words that are unique to each book in an author’s oeuvre
- Determine whether a given book is more like the work of one author or another, using Bayesian filtering (In Programming from A to Z, A. Parrish gave us code to do this in Java, but I ended up with only a vague notion of how it worked and none of how to automate the process)
- Determine which author’s work, in the entire collection, an uploaded text resembles most; return a list of authors in order by likeness
Some of this I can do right now, but only in PHP, which, since I read Alex Munroe’s PHP: a fractal of bad design, seems like much less of a bright idea. But I might as well rough it out, I guess, to be replaced with non-shite code later on.
Second, I should apply Young’s Question Book Method to make sure I’m continuing to understand the things I’m studying, for more than five minutes after I watch the relevant lecture.
- Save all the test questions from Coursera into one master list, with the answers saved separately
- Randomize the questions and answer a chunk of them each week
- Mark those I can answer from memory versus those I have to test in IDLE. Review more heavily any material that I had to actually test.
So, that’s the plan. A friend is planning to take the U. Toronto course with me when it starts up again next week, and I’m hoping having a study buddy will keep us both on track. And henceforth I will report back more frequently, to avoid these massive brain-dump posts.