Learning help?
Sep. 11th, 2019 09:57 pmThree topics about learning I'd like some advice on:
How do you learn from videos, especially taking notes? My current online course, which I'm really enjoying, has videos as well as texts. In theory I approve of this because people who aren't 40+ hyperlexics generally prefer and learn better from videos. But for me personally, it's a slog. It took me about 6 hours to take notes on a 2-hour documentary this week, including a lot of going back over it to get accurate quotes. That's not really sustainable, quite aside from the fact that I'm frustrated by how much less information is conveyed in 2 hours of video that I would read in that time period.
jack suggested I should try using two computers, one to screen the video and one to type and take notes, rather than tabbing between the video and my notes all the time. That seems excessive, but maybe it's the right answer.
I'm trying to teach myself Arabic. Does anyone have any good resources? I'm completely frustrated with the beta course on Duolingo; it's possible it may improve someday but right now it's too far from ready. There's a really good deck on Memrise, How to read Arabic which is logically organized and has a real human pronouncing all the words clearly. I still need more practice to get fluent at actually reading. But I also want to move on beyond just matching symbols to sounds and learn the language as a language. I think I have a leg-up because I know Hebrew, a reasonably closely related Semitic language.
I am looking for: an explanation of grammar, not just something that teaches inductively by looking at lots of examples. I get the impression Arabic is moderately complicated and also I just prefer learning rules as well as working bottom-up. Some kind of resource to practise really simple sentences, perhaps a video with very simplified language and maybe even subtitles. Or a book aimed at young children first learning to read. It doesn't need to be gamified particularly, but a series of exercises that I can work through so I get practice at applying rules and skills starting from really easy and building up. I wouldn't at all mind getting a textbook, but if there's anything free of cost online that's also great.
I'm probably more interested in Modern Standard Arabic but I have no objections to picking up some Classical or using resources aimed at building Qur'an fluency. I do want to be a bit careful to avoid either intruding on something that isn't really meant for non-Muslims, or on the other hand anything with a lot of nationalist or fundamentalist propaganda mixed in with the language learning.
The remaining two points are to do with programming and I'm not sure I even know enough to know what I'm asking for, so helping me to formulate the question would be a good start.
I want to learn how to do servers. I described this as a basic intro to sysadminning but I'm not sure it's quite that. But to be able to set up my email and web hosting properly rather than just ignorantly copying code with no idea what it does. And just having a clue about how different computers in different physical locations talk to each other, and maybe a very basic grasp of security stuff.
cjwatson suggested maybe I need some Unix programming, and I think that might be part of what I'm looking for, but mostly I want to understand principles. Otherwise I end up learning a lot of syntax for commands, but still having no idea where or in what context I'm supposed to type those commands.
Anyway I can't find courses that teach it, it all seems to be about programming languages. Which is also something I want to learn about, but I have plenty of options for learning how to code, so that's not what I'm asking about here.
Partners' kid is excited about "programming a game". And it seems like most of what he means by that is creating interactive fiction, he has some really cool descriptions of the story he wants the player to experience. I don't know if there is any kind of system that exists to allow complete beginners to put together elements to tell a story (not just text, indeed ideally not primarily text, mostly graphics). I wonder if maybe Twine is the answer? Anyone have any experience? He has some knowledge of Scratch and some of Minecraft, but I think there's too big a gap between what he can imagine and what he can implement in those environments.
Several of his adults are professional programmers so they're teaching him actual coding. But I wonder if there's a tool for creating something that might be approximately playable, without having to spend several years learning foundational skills first? Or possibly a way that an adult can relatively quickly implement some of his designs, other than actually coding an entire game? I mean, maybe not, maybe that's an unreasonable thing to hope for. But maybe someone knows of something that might be relevant?
I am looking for: an explanation of grammar, not just something that teaches inductively by looking at lots of examples. I get the impression Arabic is moderately complicated and also I just prefer learning rules as well as working bottom-up. Some kind of resource to practise really simple sentences, perhaps a video with very simplified language and maybe even subtitles. Or a book aimed at young children first learning to read. It doesn't need to be gamified particularly, but a series of exercises that I can work through so I get practice at applying rules and skills starting from really easy and building up. I wouldn't at all mind getting a textbook, but if there's anything free of cost online that's also great.
I'm probably more interested in Modern Standard Arabic but I have no objections to picking up some Classical or using resources aimed at building Qur'an fluency. I do want to be a bit careful to avoid either intruding on something that isn't really meant for non-Muslims, or on the other hand anything with a lot of nationalist or fundamentalist propaganda mixed in with the language learning.
The remaining two points are to do with programming and I'm not sure I even know enough to know what I'm asking for, so helping me to formulate the question would be a good start.
Anyway I can't find courses that teach it, it all seems to be about programming languages. Which is also something I want to learn about, but I have plenty of options for learning how to code, so that's not what I'm asking about here.
Several of his adults are professional programmers so they're teaching him actual coding. But I wonder if there's a tool for creating something that might be approximately playable, without having to spend several years learning foundational skills first? Or possibly a way that an adult can relatively quickly implement some of his designs, other than actually coding an entire game? I mean, maybe not, maybe that's an unreasonable thing to hope for. But maybe someone knows of something that might be relevant?
(no subject)
Date: 2019-09-11 09:12 pm (UTC)For the server stuff, I endorse cjwatson's approach. Even were you to find an intro to sysadmin course, I would be *extremely* wary about it without a solid Unix background, and a primer in security (I strongly recommend Ross Anderson's Security Engineering book in whatever its latest edition is), because you can perfectly well learn current best practice, but that doesn't defend you from whatever the problems are in five years' time. Whereas solid basic skills in this area are much more useful, and much less likely to land you in unexpected hot water, but also will take a lot longer to acquire. (Bearing in mind that most of our programming acquaintance have been doing this professionally for 20+ years, and unprofessionally for a lot longer. Just typing the magic runes may be a more effective use of your time.)
(no subject)
Date: 2019-09-11 09:12 pm (UTC)(no subject)
Date: 2019-09-11 09:13 pm (UTC)(no subject)
Date: 2019-09-11 09:14 pm (UTC)I do not have the expertise to help with your other queries.
(no subject)
Date: 2019-09-11 09:56 pm (UTC)lsor something), but IME it evens out as you go.The other thing I thought of this evening was that I've mentioned fundamentals of Unix but I wonder if what you actually need is fundamentals of internet protocols? It seems as though exactly how everything connects together might be a useful thing for you to inhale. I remember Stevens's books on TCP/IP (and you definitely want that keyword) being useful back in the day, and while they'll be dated now they might well still be useful. Or perhaps whatever O'Reilly has on SMTP and HTTP?
(no subject)
Date: 2019-09-11 09:57 pm (UTC)(no subject)
Date: 2019-09-11 10:01 pm (UTC)(no subject)
Date: 2019-09-12 01:48 am (UTC)Here is a book on System Adminstration by a computer science professor who was lost at sea a few years ago.
(no subject)
Date: 2019-09-12 02:53 am (UTC)I agree with others, though, that regular stopping is counter-productive and that any online course should already have a transcript and possibly also copies of slides.
(no subject)
Date: 2019-09-12 04:10 am (UTC)(no subject)
Date: 2019-09-12 05:14 am (UTC)Some things I know you will need to learn:
1) You're going to need to learn how to run/manage the operating system of a server. Presumably some flavor of linux. You may find – I did – that this information is easier to learn for a specific flavor of linux. Speaking of learning linux is a little bit like speaking of "learning romance languages"; most pedagogy is organized around learning one at a time, though after you've learned one or two, generalizing to the rest is pretty easy. I have a Debian linux server, so that's what I looked into, and found some nice resources I should spend more time with. And expect to soon.
2) Programming and system administration have a particularly intertwined relationship in the unix/linux world, because:
• The unix command-line commands, themselves, work like tinker-toys: you can concatenate them up into meaningful expressions that are basically little programs. For example: The expression ls means "list out the files in a directory"; the expression grep means "find all lines that match this example". The expression "|" (called "pipe") means take the output of this command and make it the input of that command, so ls | grep '.html' means "get the list of files in this directory and return only those with '.html' in their names." The expression ";" means "and then next do"; the expression ls this; ls that will result in the directory listing for this followed by the directory listing for that. And there are other ways to cause commands to interact. So you can see how you can start building long complex chains of expression. And this isn't "programming", in the sense of making a document that you store and run; this is conversational code, expressing yourself to the computer at the prompt.
• Certain unix command-line commands are, themselves, programmable in weird and powerful ways. sed and awk are two famous examples. I never remember how they work, and always have to look them up. There are others; there are conventional programming languages that allow themselves to be called this way, and some other things, like the insane email client I use.
• You can write programs that function as command line commands and interact with the above. If you write a little program in perl called myprogram.pl and put it in your bin directory as is traditional, you could then say at the prompt ls | ~/bin/myprogram.pl.
• You can capture any of the above into programs, which are called "shell scripts" (also there is something called "aliases", which are like particularly simple shell scripts.)
Upshot: basic interaction with unix/linux servers, at the command line, entails some degree of speaking conversational unix/linux to the computer, which is done in something that looks a lot like a programming language, but! Which is actually a whole bunch of programming languages.
3) If you're going to want to run interesting services on your server, yourself (not a foregone conclusion; most mere mortals just configure their email that someone else runs, because running an email server is Hard these days) you will need to learn the specifics of whatever applications you're running.
4) And that will probably entail some amount of learning how computers talk to one another, which is protocols. This might be something you only need the rough outlines of to get done what you want. Like, I have a studious ignorance of how TCP/IP actually works and it has slowed me down not at all so far. OTOH, if you actually get interested in that, more power to you. And to do interesting things with webpages or email, you might actually have to know a bit more about how HTTP or SMTP works.
5) You may need to learn how to compile things from source, because that's how the applications you want to run are distributed. This is kind of considered part of "how to program" because compiling is a things programers do to programs.
6) Somewhere along the line, if you're doing a lot of work at the command line, you're probably going to need to learn vi. Or maybe emacs. These are text editors for commandline unix/linux systems. You use these to edit files. And they are full of their own quirky commands. (emacs, in particular, is famous for being/having its own language embedded within it, hence the joke, "emacs isn't a bad operating system, but it needs a better text editor".)
That's just off the top of my head.
(no subject)
Date: 2019-09-12 05:15 am (UTC)I do not myself use Twine, but everyone I know who writes games uses it for functionality quite similar to what your partners' kid would like. In fact this is literally what Twine was designed to do.
If you don't already have the Arabic alphabet down, a friend of mine wrote a book, though it might be pitched a little younger than you need.
(no subject)
Date: 2019-09-12 08:36 am (UTC)The only seriously long videos I've watched in the last couple of decades for educational purposes was a 22-lecture course on advanced data structures (highly recommended to anyone in the small set of people who are as much of a DS nerd as I am), and I found the sensible thing was to put the videos up on my TV, and sit in front of it with a laptop on my lap. Then I only have to press pause when my note-taking can't keep up; as long as it can, I can keep going.
(My style of note-taking was less 'take down everything the lecturer said' and more 'write down enough that I can trust myself to fill in the rest later from my existing knowledge, plus copious side notes on how the techniques he's discussing relate to things I've tried before in my own time or problems I've been looking for solutions to'. I think I ended up taking about 1.5 × the videos' nominal running time to watch the whole lot.)
Sysadmin: it's always dangerous to give advice about learning a thing for the first time when you yourself learned it so long ago that the details of how you did it have fallen out of your memory. But bearing that risk in mind, I'll make a suggestion regardless :-)
When I was learning my way round Unix, the single thing I found most useful was the Linux
stracetool, which wraps another program and shows you every interaction it makes with the operating system kernel: files it opens and closes, files it tries to open and doesn't manage to, network connections it makes, changes it makes to its own state (like the current directory), and so on.I ran across this tool quite early, and initially found its output very hard to read, because it's very copious and you start off knowing very little about what it means. (In particular, more or less every program does a huge pile of startup-time faffing around that has very little to do with its functionality, so the first thing you learn is to ignore that; generally I read
stracelogs starting from the bottom, where the real work happens.) But you only need to learn to look for a handful of things, likeopencalls, orstat("tell me a little about this file without going as far as opening it") to get value: for example, if I want to know where some program expects to find its configuration file, I'm at least as likely tostraceit and watch the locations it probes with those system calls than to look in itsmanpage for the official documentation.I don't mean to say that
stracecan teach you everything all by itself – it's a complement to other learning methods, not a self-contained study course. And it might not be to your taste at all. But I remember finding it very useful for finding out what a program was doing (especially if it prints one of those short and not-very-detailed Unix error messages like "No such file or directory" without telling you what file it failed to find), and also, most of the system-call operations it lists havemanpages of their own, so it's a constant source of search terms.(Twenty years later, I still use
straceall the time, for debugging and for cross-checking my own understanding. I'm known at work for being that guy who goes on aboutstraceall the time and suggests it as the first response to any problem. So if any colleagues of mine saw me say this, they'd probably get a giggle out of it. But I remember it being a valuable educational tool long before it became useful to me as a debugging tool!)(no subject)
Date: 2019-09-12 09:18 am (UTC)You're also completely right about my problem with learning the stuff I want to learn about systems and servers. It's that most of my circle have been doing this since they were little kids, so asking for a beginners' intro is like saying that I never managed to learn basic arithmetic. Not that anyone is going to be horrible to me for not already knowing, but that people can't remember what it's like to be a beginner at this stuff.
I think with security I'm not actually planning to set things up myself from scratch. That's definitely a situation for relying on experts rather than flailing about as a beginner. I just mostly want to have a vague grasp of why the most obvious security precautions are in place. Like, I don't want to end up trying to do something the most obvious way without realizing the security implications, that kind of thing.
I'm in theory fine with just typing code I don't understand. Except that because I don't grok how systems fit together, I end up never knowing literally where I'm supposed to type it. One example of a problem I have is that my email provider wants me to set up SPF and DKIM, which seems like a reasonable request, except that I've found lots of examples of how to write the appropriate commands but absolutely no clue as to which part of my setup (computer, domain host, email provider, something else?) is supposed to receive those commands. And I don't know what questions to ask to find out. So I feel like there's a stage of learning I need to go through before I even get to the 'magic runes' level, if you see what I mean?
(no subject)
Date: 2019-09-12 10:22 am (UTC)For video learning, I watch it like a lecture, if taking computer notes you need a 2nd screen, or a really big screen you can fit both the video and your notes on. I don't think they expect word perfect quotes, if they do this format is striking inaccessible.
(no subject)
Date: 2019-09-12 10:29 am (UTC)(no subject)
Date: 2019-09-12 10:31 am (UTC)(no subject)
Date: 2019-09-12 11:10 am (UTC)And thanks for helping with the bit you do know about. The whole reason for asking my entire diverse circle is different people will know about different topics. I feel like I've done remarkably well so far at getting suggestions for each of the disparate things I asked about.
(no subject)
Date: 2019-09-12 11:16 am (UTC)Can you gloss ? Cos the individual words in that are roughly familiar but I'm not sure I am correctly imagining what sort of thing you were doing. (I mean, presumably sitting at a computer typing things, but beyond that I'm confused.)
Internet protocols: maybe. Thank you for recommending books, that might well be the answer. I have a feeling that lots of stuff talks to other stuff not via the internet, but presumably understanding the interactions that do go via the internet would be a good start.
(no subject)
Date: 2019-09-12 11:17 am (UTC)(no subject)
Date: 2019-09-12 11:23 am (UTC)Failing that, you don't need a second computer; you could use a second monitor, or even just video on one half of the screen and notes on the other (this is what Alex does when he wants to use his computer at the same time as the kids want to watch videos on it).
Kid programming: if Scratch can't do what he wants, I suggest RenPy. It's a framework built on top of Python for making Japanese-style visual novels, i.e. interactive fiction that's mainly graphics-based with some text, rather than mainly text-based like western IF. You can add character sprites and backgrounds and make the story branch depending on what the player chooses, all without doing any actual programming. If you want to do anything more complicated you can call out to Python. Alex has written a couple of VNs in it, so he can tell you more about it than I can:
https://www.toothycat.net/wiki/wiki.pl?ElvenRelations
https://www.toothycat.net/wiki/wiki.pl?WhenIRuleTheWorld
https://www.toothycat.net/wiki/wiki.pl?CloudFairy
Cloud Fairy was a very small and quick project, so it's a simple game without any extra features (IIRC), so it shows the sort of thing RenPy can do without needing any proper programming. Elven Relations is a longer and more detailed game and definitely had a lot of hand-coded extra features. When I Rule The World is somewhere in between.
(no subject)
Date: 2019-09-12 11:25 am (UTC)The other thing is, when I take notes on written material, if I'm doing it electronically I copy and paste relevant phrases into my notes, and if I'm doing it on paper I mark the margins so I can easily go back and find the bit I want to cite. With video I can't really do that.
Treating a video as a lecture rather than a document might well be a better framing, thank you. Because I am pretty good at taking notes while someone talks at me, so I can adapt that to a bunch of different talking heads.
(no subject)
Date: 2019-09-12 11:28 am (UTC)Thank you for the book rec and the suggestion of someone knowledgeable. Those are great.
(no subject)
Date: 2019-09-12 11:43 am (UTC)I find that writing helps me, but mainly I need to do something with my hands. Highlighting a document works nearly as well, or typing. Handwriting recognition would solve the problem that I don't really want to store a lot of paper notes, which is why I've been trying to note-take electronically. Worth thinking about at least.
(no subject)
Date: 2019-09-12 11:55 am (UTC)Tools in this context are commands you type at the command prompt, like ls (to list files), grep(to search for things matching given criteria/patterns), or sed(to edit text programmatically). They each have their own help files ("man pages"). So you can type man lsto find out about all the options you can send to ls to make it display full details rather than filenames, make it display files ordered by time rather than name, make it display them in reverse order, make it recurse through subdirectories, etc.
I learned all this stuff from Alex; I'd never used anything in the Unix/Linux family before we got together. I have very fond memories of doing stuff togther at a computer with him teaching me. Maybe you could do something similar with cjwatson?