Learning Emacs

For the past few weeks, on top of writing delightful documentation and exploring New York, I have been executing an herculean undertaking: learning Emacs.

10gen’s lead tech writer is an avid Emacs user: he uses Emacs for his email, his chat client, and, of course, for editing the docs. We write MongoDB’s docs in Docutils, and (mostly) easy to write. It helps to have a text editor that will do reStructuredText syntax highlighting, though, and those seem to be rare. My beloved Coda 2 does not appear to do it; Sublime Text’s highlighting is inconsistent, and its tabs a pain in the ass. TextMate is great, but even it sometimes fills me with rage with auto-indent behaviours that I can’t figure out / turn off.

So my colleague suggested I try out Emacs. It was lateish on a Tuesday afternoon, and I said “why not!” and promptly downloaded the GUI version of Emacs. He kindly gave me his Emacs configuration file so that I would have all his handy reStructuredText-facilitating extensions, and gave me a quick crash course. I suspect part of his enthusiasm was the prospect of being able to use Emacs on my computer when I needed his help with something, but a good deed is a good deed regardless. After a 45-minute pep talk, I was left feeling not unlike I did when my parents bought me my first iMac back in… 1998: “this is very cool, now how the heck do I turn it off?”

Aside: for those of you who do not recall, OS 9 hid the Restart / Sleep / Shutdown menu items in the “Special” menu. The first night I had my iMac, I ended up unplugging the computer in a fit of “oh god what have I done?” and having a cry because of all the money that had been spent on a computer that I had no idea how to use. I bought David Pogue’s “iMac for Dummies,” and life improved immeasurably.

On Wednesday, I remembered that Sacha Chua was an Emacs user, and vaguely recalled her posting a Beginner’s Guide to Emacs. I printed it out, propped it up on my desk, and have been adding to it ever since. Much like the purchase of Pogue’s book, this was an excellent life choice. There are a few things that bug me about Emacs: memorizing keystrokes isn’t something that I’ve ever been very good at, and I don’t like that (given my current configuration) I can’t highlight with shift and the arrow keys. As a learning experience, though, it’s been really pleasant, especially now that I’m starting to remember how to do things (I can now consistently write files, copy & paste, and move to the beginning and ends of lines!).

It sounds goofy, but I’ve always enjoyed the idea of being a person who is good at command line-y text editors. Whenever I see someone mysteriously navigating without a keyboard, typing furiously as windows pop up and disappear, I think it’s neat. Admitting this is both amusing and embarrassing: I’m forcing myself to learn Emacs because I think it looks cool.

Despite my somewhat goofy reasoning, Emacs is kind of fun! At a minimum, it’s made me realize that the way I’ve always interacted with files is not the only way, and it has made my emacs-loving colleague’s workflow is much less mysterious to me. I also really like that I can create a buffer that will execute a command for me: I like being able to generate the html version of whatever I’m working on and being able to click on links to the file if there’s an error.

If you’re just starting out and have an intense desire to look cool learn emacs, check out Sacha’s guide. I also suggest finding someone who is patient and kind, and willing to help you learn.

On Self-Directed Learning and Learning to Code

When I was doing my undergrad some years ago, I initially enrolled as a Chemistry major. As I’ve alluded to before, I realized early on that it wasn’t for me, but I soldiered on for a year and took some of the Chemistry major’s required classes that looked like they might be useful. One of those classes ended up being “Intro to Computing”, which should really have been called “Intro to Object-Oriented Programming” or “Intro to Java”. For a semester I slogged through lectures and assignments, spent hours trying to figure out why my stuff wouldn’t compile, and cursed my version of Eclipse (which tended to crash just before I hit command+S). In the end, the class went ‘okay’, but certainly didn’t help my GPA (it didn’t hurt as badly as the F I got in Ordinary Differential Equations in the same semester, but that is another story), and I didn’t really feel like it was something that I would/could use in general day-to-day life.

Fast forward five or six years… a friend sent me a postcard at my parents’ house, and because writing post cards that your friends’ parents might read can be awkward, he wrote it in ROT-13, helpfully starting with “Dear Allison” and signing his name at the end. Decoding it by hand (since I hadn’t thought to google and find rot13.com) was kind of a pain, and I wanted to impress my friend, so I broke out my old java textbook and wrote myself a (very) simple decoder. All the punctuation was wonky (because I couldn’t really think of how to deal with it), but it did a reasonably good job, and I was super proud (as was my friend). Looking back at the code, I’m still mightily impressed at past Allison’s skills!

I’d always been interested in programming, and enjoyed playing around with computer, but I’d never really understood how people learn these things, how one comes up with ideas to tinker with, and how to get started. Since the original ill-fated adventure with Java, I’d pretty much written off programming as something other people did. Once I had a reason to use it, and discovered how satisfying it was to solve a problem with something I’d made, my tune changed. Since then, I’ve learned Python by hacking in Starbucks next to Paul (while he learned it next to me), and since moving to Toronto last year, I’ve taken a bunch of Ladies Learning Code workshops and expanded my skill set. I’ve also discovered I really like programming.

That said, I still find self-directed learning tricky: I try to think up ‘stuff’ to do that’s manageable at my skill level, and I get stuck. Programming Challenges always seemed too hard or obscure or mysterious for me (though now that I’m a relatively adept Python programmer the Python Challenge seems much more accessible). I’m super lucky to live with a programmer who also has a teaching background, who can suggest ‘stuff’ for me to tinker with, and ways to expand what I’m doing as I learn more. When we were learning Python together, he was writing code to do complicated load testing stuff, while I was making a text-based lemonade stand game; now that I’m trying to sink my teeth into PHP, he’s proposed a race-across-Canada game, with a variety of parameters for me to start with, and a bunch of ideas for ways I can add complexity as I get more comfortable. A lot of coders seem to be self-taught, and maybe they’re just more creative than I am, or maybe they decide to learn something because they need it, rather than learning because they want to know stuff… I don’t know, but I’m glad to have some direction in my self-directed learning, and I hope as I become more adept I’ll be able to help others with theirs.

Wishbone, Carmen Sandiego, and why I know things

Last summer, my manfriend and I challenged each other to read the BBC’s Top 100 books list, The Big Read. The list is from 2003, but we’d seen the meme that was all over Facebook and decided to see who could get to one hundred first. I think we’re currently tied, but I’m reading Little Women in the hopes of sneakily overtaking him this summer. What I noticed looking over the list, though, was how many of the books I ‘knew’ – books whose plot lines and characters I could describe with reasonable precision and could speak about intelligently in conversation, despite never having read them.

To my embarrassment, it wasn’t the bunch of English Lit classes during my undergrad, general mad knowledges, or familial propensity to pick up random facts that could be of use should one find oneself playing Trivial Pursuit that resulted in my comfort with the material, but the fact that I watched Wishbone as a young person. I’ve since realized that PBS cleaned a lot of the stories up for a young audience – Sherlock isn’t a drug addict in the Wishbone version, for instance, but the general gist of the storyline has remained deeply embedded in my psyche years later.

In a similar vein, despite having spent a semester as a History and Geography major, and holding a B.Sc. that was roughly 25% Geography cases, most of my geographic and historical fun facts come from Where in the World and Where in Time is Carmen Sandiego. My familiarity with Yuri Gagarin is owed 100% to it being the last level of the Where in Time game I played – the only PC game I ever finished, I think… Any American History related to the Civil War? Wishbone. Marco Polo and the Silk Road? Carmen. Don’t even get me started on Miss Frizzle and the Magic School bus!

As tools for teaching – and for disseminating both information and knowledge, these TV shows and video games were extremely effective. Recently, my friend Justin directed me to the games that the Wellcome Collection has put out to accompany their exhibits. My European History prof alluded to the Opium Wars, but as a tool for teaching a lesser-known historical event, High Tea is both fun, informative, and compelling. As a tool for teaching history, commerce, economics, and forecasting, it is excellent, and could be a great departure point for interesting conversations for groups of all ages.

I think there’s something to be learned here: topics become more accessible when they are stimulating and interactive. Lots of cool people are studying gamification as ways to make people more environmentally friendly… or to make dull repetitive jobs less dull, but maybe there are other features we can take away to enhance communication at all levels, be it a boring government website, or a dynamic presentation in a classroom.

The difference between wanting an education, and wanting a degree

Students seem to fall into two categories: people who want the letters after their name, and people who want to learn. That might seem like an unfair distinction, and everything I’ve been learning this year has cheap mlb jerseys with stressed that categorizing anything into two distinct groups is wrought of peril, but it seems to remain an applicable (if not necessarily accurate) differentiation, and one cheap nfl jerseys that I’d like to drill into a bit.

When I was doing my B.Sc., wholesale nba jerseys I spent a miserable year in a major that did Microsoft not suit me in the least. I knew that it wasn’t the path for me from the third week, but I was committed, and my university would not allow me to change majors until the first year was over. Trying to excel at something you don’t care about is hard, and my grade in Ordinary Differential Equations clearly showed that. I was aiming for the bare minimum: to pass, preferably with cheap jerseys a Scanning C, rather than the pity-pass D. cheap nfl jerseys I missed the pity-pass, and I still have no idea what an ODE is, let alone how to deal with them. Moving into a program I cared about changed things: I put more signe time and energy into my studies, did Wood my readings, and went to see my professors when I had questions. I failed another class (one I cared very much about), through poor cheap jerseys planning rather than neglect, and rest assured, when I took it again, my study skills had improved, and my colour-coding obsessiveness had reached new heights. More importantly, rather than simply trying to learn the material, I tried cheap jerseys to understand it, and to this day it’s the class I remember most clearly and can discuss most enthusiastically. Rather than trying to pass, I tried watch to learn, and it was incredibly fulfilling.

I am currently working with a partner on a major assignment designing a database as well as a web interface to interact with it. We’ve improved our Python programming skills (mine, at the very least, have improved dramatically; I suspect she started off with some more skillz), become reasonably adept at Sliders writing reasonably complex MySQL queries, and challenged ourselves to do more than the assignment called for. We were expected to deal with sessions: we chose to do so with cookies, rather than the suggested ‘send a random number as the token on each page’; we were expected to provide a way to log in (based on existing data in the DB): we chose to allow users to both sign up and then log in. Doing extra probably won’t affect our grade (though I am hopeful it might raise us from an A to A+) but it has been incredibly instructive.

If we hadn’t decided to do Titel a bit ‘more’ than necessary, I’d still have no ideas how Cookies work, and I probably wouldn’t have learned as wholesale nfl jerseys much about HTML and CSS as I did. If I didn’t do (most of) my readings, I’d have a much smaller repertoire to draw on. If I wasn’t transit trying to get as much out of this program as I can, I’d feel like I’m wasting my time and my money. If I hadn’t failed Animal Diversity during my Undergrad, I wouldn’t have obsessively studied the evolutionary development of Animalia, and wouldn’t be able to draw a (roughly accurate) molecular phylogeny from memory. I’d have wasting the opportunity to really learn.

I would be lying if I said I wasn’t a little bit excited that I’ll get to call myself a ‘Master of Information’ around this time next year. I would be lying if I said there was no part of me that likes the thought of having a bunch of letters after my name (or a ‘Dr’ in front of it) simply for the sake of having them (a larger part of me tends to say, “PhDs take ages, Allison… You do not do a cheap nba jerseys PhD for the Drhood”). It would, however, be horribly inaccurate to say that I’m currently spending two years of my life reading and writing and spending thousands of dollars and having no social life simply to be able to call myself Allison Moore, M.I.. At the end of the day, having the degree is not nearly as ???? useful as having the education, and I’m glad I’ve learned that.