Productivity

All the things I wish I knew about studying at school

 
 

My niece reached out to me a few days back asking about tips for studying at school. She was specifically interested in any ideas I had about how to excel in her maths studies. I wrote up my thoughts for her and it occurred to me yesterday that there might be some benefit from putting these notes online as well.

Without further ado, therefore…

Study Skills Advice

As I understand it, your question takes two parts:

  1. how do I learn / study better
  2. how do I specifically learn / study for my upcoming exams (in particular for mathematics)

I've split my response up into two parts since they're somehow related but also different. Part one ('how do I learn new things') is sort of required for part two ('what do I have to do to get good grades on my exams'), since it's pretty hard to try to cram ideas and concepts into your head if you don't first understand them.

1. Learning to Understand

Something you just have to 'learn'

First off, you'll want to learn the small tiny 'fact-like' things first. Some of this you just have to put in some work and learn them. It'll help you a LOT when it comes to getting a grasp on the bigger-picture concepts. To give an example, if there are certain equations or definitions of concepts, it can help to take a bit of time and just learn those by heart (in whatever way usually works for you for that). Note that this is limited to just small fact-like things. For sciences, maybe there are some facts or properties of something derived from the periodic table, etc, that are important. In the specific case of quadratics that you asked about, it might be simple things like:

  • the usual form of a quadratic equation
  • the quadratic formula
  • 'what is a discriminant'
  • what does the completed square form look like, and how do you solve it?
  • what does this or that quadratic look like when you graph it out?

The key thing is to isolated and master those tiny morsels of information / facts early on, since a) it needs to be done anyway and b) it'll help you with the big-picture stuff. Sometimes textbooks help out by highlighting or bolding those key concepts. Just make sure you're not just trying to learn EVERYTHING by rote, since that advice is as good as no advice in my opinion!

Learning for understanding: foundations

Something else I'll say early on is that there are some core foundations that will serve you well:

  • start with a / the problem — it will help to try to wrestle with the kinds of things you're expected to do with this particular topic you're studying. It can actually help you to do this at the very beginning of starting a new topic: before you even study things, take a look at the kinds of questions that you'll be tested on and expected to answer. Maybe even try to solve them. You'll learn a lot about the subject area just by rolling around in the mud and struggling a bit.
  • curiosity — this almost goes without saying, but you should try to find a way to be curious about whatever you're meant to be studying. It'll help a LOT with your motivation and interest, which will in turn help you keep moving forward and give you energy at moments when things get hard. Sometimes the trick to this is just trying to ask questions about whatever it is you're studying: why is this important? how does it connect to topic X or Y we already studied? what is most surprising about this topic? Sometimes it can also help to know a tiny bit about the history of a topic. Calculus is a bit down the road in terms of your studies, but back in the day (late 19th century, early 20th century) there were really epic debates between the various people who were developing this new area of maths. Lots of drama and falling out between people. So sometimes just knowing a bit about the personalities behind things can help.
  • growth mindset — I wrote a blog on this a while back but the core thing is just to believe that you have it in you to master this thing. Once you have that, and if you start from that place, then you'll have much of what you need to keep moving forward. And as one teacher once told me, as long as you never give up then you'll eventually master it. Sometimes you just have to be a bit patient. Most things come if you give them enough time :)

Retrieval Practice

This is sort of the core of most learning, in my opinion, and I have a lot of thoughts and practice around this. (Have read a LOT about what research recommends in this area, but I figure you're interested mostly in whatever is practical so I'll keep it mostly at that level.)

The core: if you want to learn something / master it, you have to retrieve it from your memory somehow. (Retrieve can mean lost of things: for German vocabulary it might mean knowing the gender or translation of a particular word. For Maths it might mean a particular formula, or even a high level understanding of how one concept relates to another.)

The important thing about this retrieval is that it will be and should be hard to do. (This is one reason why people don't necessarily enjoy doing this, and even fewer actually do it.) It's hard to struggle to put together a coherent explanation of topic x or y, but that struggle is what helps create neural pathways that cement the understanding going forward.

One possible way you could do this is to write short summaries of what you understood of a particular topic, then check your notes to see if you were correct. IMPORTANT: the key thing is to do this from memory / without notes. Otherwise you're not actually reinforcing materials in your head.

Another way of testing things (e.g. in your specific case of quadratics) is to do practice examples. Your school or textbook probably gives you some practice examples, but you shouldn't confine yourself just to doing those. Make up your own examples, or go online and find more examples (use Khan Academy or whatever).

It can also help to make distilled summary sheets at some point during your studies which gather together your understanding on a single piece of paper for the entire topic. Here actually you can see the one I made digitally for my own study of quadratics a few months ago:

The key thing with retrieval practice is to get a lot of it, and to try to make it the 'hard' / 'difficult' kind of retrieval. Mostly this starts with a blank sheet of paper and then you try to write down what you know about a topic, or a concept, or whatever specific thing you're trying to understand. Writing things down will help you realise (quickly! painfully!) which parts you don't actually understand. So it's as much to reveal to you which parts you need to work on as it is for anything else.

(There's a much-praised technique named after a well-known American scientist, Richard Feynman, and you can do something like this, too:

  1. Write the title of a topic that you want to study / test yourself on
  2. Write or map out an explanation of that subject intelligible / appropriate to a non-specialist. Do this from memory.
  3. Identify any gaps in your explanation / understanding.
  4. Relearn / restudy / interrogate to fill in the gaps.

You can use narrative / diagrams to condense and clarify your explanation. It's basically the same idea. And yes, bullet points or spider diagrams are all possible ways of doing this.)

Developing mental models

There's this idea that the whole thing you're doing when you learn something is developing 'mental models', which I personally find a bit hard to wrap my head around, but it is a thing… It's maybe the next layer up in what's happening when you try to learn something.

Mental models are, for me, about making a topic your own somehow. They're also about making the concepts of that topic manipulable somehow.

The 'making it your own' part has a lot to do with confidence, somehow, but it's also just feeling familiar and effective with the concepts that you feel comfortable solving problems in that area. If you see a problem, e.g., you know which techniques (or which subset of techniques) are needed to solve it. If there are multiple possible ways to solve something, you'll have a good feel for the tradeoffs: i.e. why this way is better than that way etc. In the case of quadratics, for example, we know that there is this amazing thing which is the quadratic formula, but you probably don't want to use that formula the whole time because it's easy to make a mistake with it and it's a bit cumbersome. Instead, we often use other simpler techniques that work for many (if not totally 100%) of the problems that you'll be exposed to.

One way to help develop mental models is to try to explain the topic to someone else. You already did a bit of this in the retrieval practice above: trying to explain it on paper is already some of this. But trying to explain a topic to people at different levels of understanding can be really clarifying. I.e. if you had to explain quadratics to a 5-year old it's probably different to how you'd explain it to a 40-year old. (Along with this, you can test out this approach by chatting with a chatbot about the topic. I'm sure you've heard of ChatGPT, but Claude is also another good option, esp for things like maths. The key thing is to start the conversation by saying something like "I would like to have a conversation about quadratics. I've been studying it and I'd like to test out my explanations of some core concepts with you. I would like you to tell me if things feel unclear about what I'm saying, or if you notice that there are some areas where I could improve my understanding.")

(While we're here, using things like ChatGPT to develop mental models can be useful. I will often have conversations that begin with something like "What is a good way to think about the discriminant in relation to quadratic equations? Please make your explanation simple to follow and use some concrete items in your reply, like only items that you'd find in a kitchen.")

Making mental models is hard! But the work you do to solidify things and make them your own is really worth it!

Anyway, the big point here is to reflect on what you're studying. Make sure to also give some time to connecting it to other things either in your maths studies or outside, or even life in general. It's not the best to just view everything completely isolated and disconnected from the other topics, so try to take a step back from time to time! (Unfortunately, most schools aren't built to encourage that process much, but it's important!)

Specific contexts

There are some other specific contexts that require different / more targeted advice, but you didn't mention them so I'll ignore them a bit. But language learning is one of them, and learning some kind of 'motor skill' is another (i.e. that requires coordination or physical movement like playing golf or the yoyo or whatever).

In Practice: Understanding Quadratics

To summarise the practical points listed above:

  • learn the small fact-sized pieces early on
  • get lots of retrieval practice (a mixture of examples of doing whatever the skill requires of you, and/or writing or explaining the topic at various levels)
  • develop mental models where you can.

2. Studying for Exams

I'll take it for granted that you agree that you can't study for something without properly understanding it, so somehow the things in part 1 are sort of a prerequisite for this section; you can't get ready for an exam if you don't understand what's going on.

That said, there are some tactical things you can do to help your chances of success once you do have an understanding of a particular topic. Note that for all of this, it's a bit of a question of picking which parts seem doable / manageable. It's probably unwise / counterproductive to necessarily try to do EVERYTHING :)

Ground rules

You should understand the requirements of the exam. Take a bit of time to read through some previous exam papers. I'm sure your teachers have also given you clear guidelines on what kinds of things to expect. That will give you a map for how to prepare, so be sure to do this.

Foundations: Exam Study

There are some basic foundations here which for various reasons get forgotten when you're under exam pressure, but it's good to remind yourself of these, since if you neglect these it'll negatively affect your ability to study etc.

  • sleep
  • eating things that nourish your body instead of just feeding cravings
  • taking breaks (every hour, ideally, get up and walk around for a minute or two)
  • minimise distractions (put your phone in airplane mode or in a lock box while studying)
  • movement in general / going out of the house for walks a few times a day is a good minimum.
  • 'managing your energy' — this one's a bit hard to quantify / explain, but I'd say it's worth trying to embody the principle that you should only study as much today as allows you to keep studying tomorrow. I.e. if you overdo it and you study a lot today, but it's a bit too much and tomorrow then you can't do any study etc, then that was counterproductive. (Hope that was clear!)

Mnemonic / memory tricks

There are a TON of memory tricks out in the world. All of them are useful, but not all of them are equally useful for every situation :)

Things like the major system, the link system and the peg system are all useful, but they require a bit of time and probably also someone who knows how they work to explain them to you.

If you already have a bit of experience with these things, then I'd encourage you to use them in your studies, but if you don't have much experience then I'd say probably that it's not going to be the difference between an A and a B grade so probably it's a waste of your time to try to get into that in the run-up to exams.

That said, it would TOTALLY be a really useful investment to learn a few of these during summer holidays in a non-stress / fun way. You can play around with learning the order of decks of cards etc — I can explain all this if you're interested — and then you'll have that skill available to you if you need it next year or throughout your life.

There are some general memory principles that you can rely on in general terms:

  • when trying to remember something, make it memorable in your mind! so maybe try to imagine the concepts as characters in some kind of image in your mind, and use all your senses and bring in some shock or drama etc etc. (LMK if you want more of these kinds of advice. I have a lot, but not sure how useful it is for you right now.)

Spaced Repetition

This is a really useful tool, but it requires a bit of upfront (time) investment and unless you're feeling super comfortable / not stressed at all, I might suggest to add it to the list of 'things to learn about over summer / winter (?) holidays'.

Basically this means testing yourself with (digital) flashcards, but the twist is that you only get shown the flashcard at exactly the optimum time / day when you need to be tested on it. (There's a whole science to this which I won't go into, but there's a TON of backing to the fact that this is the way to make things get into your memory.)

The best option for this is a piece of software called Anki. It runs on your laptop and phone etc, but it has a bit of a steep learning curve mainly because the defaults it comes with aren't great. So if you were interested I could help you set that up, but the key thing to know is that using this requires a bit of extra work.

The main idea is that you create (digital) flashcards for all the things you need to know, and then every day you check in with Anki to review whatever cards it says you need to know. There's an algorithm that calculates which cards you should review. It should mesh well with your intuitive sense of how memory works: i.e. over time you slowly forget things, so Anki will prompt you to recall a particular concept just at the point before you forget it, since that exact moment is the best time to review it. When you review it at that moment and you get it right, it'll really strengthen your memory for that thing. If you don't remember it, then it'll reset the status of that card and it'll know to show it more often for a few days etc.

There are more manual ways to get the same effect, but (for a lot of reasons) they're not as effective since humans don't work / behave like computers so really using a digital tool is the only way to go.

For quadratics, to use my experience, I have a bunch of cards relating to that that I get tested on. Writing a 'good flashcard' is a bit of an art, and we can get into that if you're interested, but I'll just lay it here as an option for now.

Interleaving

This is a fancy word for saying: 'don't study just one topic on its own'. When you're testing yourself on things that you'll need to know for exams, make sure to switch things up a lot. This means doing one problem from quadratics, then another relating to trigonometry, and another relating to topic z etc etc.

There is again quite a bit of evidence that this makes you much stronger in your understanding / learning, even though (or maybe because!) it's a bit harder to do.

If at least part of your review of topics / facts are handled by Anki it'll take care of giving you random flashcards anyway, so this more relates to things like solving maths problems by hand.

So don't just do 50 iterations of the same maths problem, in other words. Make sure you're switching topics etc.

3. Next Steps

  • Check the practical suggestions above
  • let me know if anything's unclear / or you want to know more about how to do thing x or y
  • gather some problems to solve so you can make sure you're practicing the things you need to study
  • get into some good habits around retrieval practice (i.e. writing things down to test whether you know them or not)

Automating social media posting for my new blogposts

I love blogging and I've benefitted a lot from what it's done for me ever since I started my first Geocities page in the mid 1990s. I maintain a technical blog at mlops.systems and a somewhat less technical blog at alexstrick.com/blog, though hope at some point to merge these together.

In the past I would have been content with ensuring that my blog published an RSS feed and known that anyone wanting to follow what I was writing could do so simply by connecting their feed reader and subscribing. I've become more conscious in recent years of a healthy brew of ambivalence, ignorance or even outright hostility to even the idea of RSS feeds and readers. It seems many people don't have RSS as an essential part of their informational hygiene any more. (I'll put my sadness / confusion about this to one side for now.)

And if I love blogging, I really dislike having to post my new blog posts to social media one by one, coming up with some catchy yet not overtly breathless summary of what I wrote, since this is apparently what many people use instead of RSS.

I've been grumbling under my breath about this situation for this for a few years now, but when ChatGPT came out it seemed like an obvious use: summarise my blogpost and repost to all my social media accounts taking into account their particular needs. (Mastodon uses hashtags more than the others, whereas LinkedIn posts can be a bit longer, vs Twitter which needs to be a bit shorter and so on.)

I held off, thinking I'd want to set up some system fully under my control involving serverless function calls and so on, but then I was reminded that I already use Zapier for some other administrative tasks. So this afternoon I set up and turned on some automation for social media posting to my Mastodon, Twitter and LinkedIn accounts. Posting happens at one step removed since I queue my posts in Buffer so that they go out at a time when people are more likely to see them. I apologise / don't apologise for this. My blog writings remain wholly un-automated; it would completely remove the point of 'learning through writing' if I were to automate the things that I blog about. My social media postings (just one post per blogpost so as not to spam you all) are from now on automated. As an additional courtesy / discourtesy, I've tweaked the prompt such that the social media posts should always read just slightly 'off' and will be labelled with an #automated hashtag.

FastAI Lesson Zero: video notes

[These are mainly notes for myself, based off Jeremy Howard’s ‘Lesson 0’ video that was recently posted. It doesn’t capture the entirety of what was said during the course, but it includes pieces that I felt are relevant to me now and that might be relevant to me in the future.]

  • decide when you’re studying
    • be precise about how much time you’re going to spend
    • think about how it’s going to fit into your day or your life
    • give yourself deadlines and goals, perhaps, but also don’t worry if disruptions happen.
    • Mainly make sure that if something does come up, make sure you get back on the horse and keep going. (Tenacity counts for a lot)
  • Finish. The. Course.
    • make a commitment to complete the course, and make sure you actually do that.
    • If you’re attending the course and working through it, you should follow through on your original commitment and actually work through the course.
  • Finish a Project
    • build a project and make it really great.
    • You’ll probably have several projects here and there that you work on during the course of the fastai course, but at a minimum make sure you pick one of those and make it really great.
    • (It doesn’t have to be unique or world-changing. Even replicating something that’s already in existence can still be worth it).
  • Find good role models
  • Learn by doing. Use what you learn and figure out the rest as you go. (Don’t get paralyzed by trying to learn ‘pre-requisites’ like complex mathematics topics, esp since most of them aren’t actually needed to become a practitioner).
  • Share and communicate your work
    • (Jeremy doesn’t mention the book, but I’ll insert here that the book “Show Your Work” by Austin Kleon is a great starter on this point).
    • If you consistently blog during your studies, at the end of it you’ll likely have a huge collection of artefacts of that study, showing what you’ve learned and accomplished.
    • Alongside that, being a good citizen and contributing in the forums etc is also a really solid way to extend whatever knowledge you have to others, and quite possibly cement things in your own mind as you reply.
  • How to do a lesson
    • watch the video / read the chapter
    • Run the notebook & experiment — play around with things + make sure you actually understand what’s happening
    • Reproduce the notebook from scratch — (and really start with nothing here, and try to reimplement whatever was done during the lesson. From previous experience, this work will be hard, but it’s super worth it. Recall learning is the best kind of learning)
    • Repeat with a different dataset — use the techniques you learned in the course on a dataset of your own / or solve some related problem using these techniques
  • Using a notebook server vs a full linux server
    • the notebook server allows you to get going much faster
    • A full linux server is more ‘your own’ and you get to also practice a bunch of other not-specifically-deep-learning skills along the way
    • With the fastsetup library, Jeremy has made getting going with an EC2 instance pretty easy.
    • the video spends a fair amount of time showing how to do this with Colab Noteboks and a AWS EC2 instance. Refer to the FastAI website and the full video for more details.
  • Get better as a developer
    • just doing the course, you’ll also work on your development skills along the way
    • Two important things to do to help with this:
      • Read a lot of code
      • Write a lot of code
  • Start with a simple baseline & get a basic end-to-end solution up and running
    • When you’re working on a project, it’s a really good idea to start with a naive / super-basic baseline so that you know whether you’re making progress or whether you’re achieving anything with the work you’re doing.
    • Successful ML projects that Jeremy has seen start with the simplest possible end-to-end solution and then incrementally grow from there.
    • The work of getting your pipeline working / your data imported etc will take a bit of time, and if you get that all sorted upfront it’ll help you focus on the actual work you want to be focused on.
  • (At some point during the course) join a Kaggle competition and make a serious attempt to do your best
    • just getting a model on the leaderboard tests your knowledge and your skills
    • just work regularly on things, show up every day, try to make your model a little better each day
    • Do these things:
 
 
  • For getting a job in the space
    • having a public-facing portfolio of writings and projects will take you a really long way
    • Some companies are more interested in people having the right credentials etc and will never choose you.
    • Startups are a great place where this matters less.
  • Try to take the second course
    • The first course gets you going as a practitioner of deep learning, but the second course allows you to implement algorithms and models from scratch and digs far more into the depths of the subject.
    • Jeremy wishes more people would take part two + encourages them to do so.
  • The fastsetup library is great for installing everything on a Ubuntu machine (like an AWS EC2 instance)
  • Experiment tracking software
    • The two big players are TensorBoard and Weights & Biases.
    • Jeremy doesn’t use these. Finds it too tempting to spend your time watching your models train instead of doing something else that is probably more valuable.
    • There are some cases where it might help to use this software.
    • Weights & Biases seems like a good company to work for & they’ve hired FastAI grads in the past.

My new book: The Taliban Reader

 
DeXH1VMW0AAN60p.jpg:large.jpg
 

My new book is out (finally). The Taliban Reader is somehow the culmination of years of work to drive studies of the Taliban back to primary sources. Some of this work was accidental; more recently it was more purposeful. The book I produced (together with Felix Kuehn) is long and detailed.

Comments and feedback prior to publication were extremely positive. It'll presumably take readers a while to start getting some real independent reviews in, but I look forward to feedback and whatever conversation is generated off the back of it all.

You can pick up a copy at any good bookshop or from Amazon here.

Tweeting to the Void

I've previously written about how I turned off Facebook's news feed. I keep an account with Facebook because people occasionally contact me there. It is also an unfortunate truth that many companies in Jordan (where I live) or in the wider Middle East only have representation on Facebook instead of their own website. (Why they insist on doing this baffles me and is perhaps a topic for a future post).

I have long preferred Twitter as a medium for filtering through or touching -- however obliquely -- things going on at any particular moment. I have no pretensions to actively follow every single tweet to pass through my feed. Rather, it's something I dip into every now and then.

Increasingly in recent months, I found myself growing dissatisfied with the pull it often has on me. It has become something of a truism to state that 'twitter isn't what it once was', but there's less and less long-term benefit in following discussions as and when they happen.

RescueTime tells me that I spent 86 hours and 16 minutes on Twitter in 2017 -- just under quarter of an hour each day. That feels like a lot to me.

ScreenShot 2018-01-25 at 19.13.15.png

Enter 'Tweet to the Void'. This is a Chrome extension. (For Firefox and other browsers, I have to imagine things like this exist.) When I visit twitter.com, the feed is not visible. All I see is somewhere to post a tweet if that's what I want to do. (There is still some value in posting blogposts and articles there, since I know some people don't use RSS). Of course, I can always turn off the extension with ease, but adding this extra step has effectively neutralised Twitter for me. 

Try it; see how you feel about having something standing in the way of your social media fix. Let me know how you get on.

Tabula for extracting table data from PDFs

Have you ever come across a PDF filled with useful data, but wanted to play around with that data yourself? In the past if I had that problem, I'd type the table out manually. This has some disadvantages:

  • it is extremely boring
  • it's likely that mistakes will get made, especially if the table is long and extends over several pages
  • it takes a long time

I recently discovered a tool that solves this problem: Tabula. It works on Windows and Mac and is very easy and intuitive to use. Simply take your page of data:

A page listing Kandahar's provincial council election polling stations from a few years back. Note the use of English and Dari scripts. Tabula handles all this without problems.

Then import the file into Tabula's web interface. It's surprisingly good at autodetecting where tables and table borders are, but you can do it manually if need be:

ScreenShot 2018-01-17 at 15.56.25.png

Then check that the data has been correctly scraped, select formats for export (from CSV to JSON etc):

ScreenShot 2018-01-17 at 15.57.19.png

And there you have it, all your data in a CSV file ready for use in R or Python or just a simple Excel spreadsheet:

ScreenShot 2018-01-17 at 15.57.50.png

Note that even though the interface runs through a browser, none of your data touches external servers. All the processing and stripping of data from PDFs is done on your computer, and isn't sent for processing to cloud servers. This is a really nice feature and I'm glad they wrote the software this way.

I haven't had any problems using Tabula so far. It's a great time saver. Highly recommended.