Readit News logoReadit News
Posted by u/curious16 3 years ago
Ask HN: Do you recall any book or course that made a topic finally click?
Sometimes it takes a book or a course (or explanation from a mentor) for a topic to finally click for you that you were struggling with for a long time.

For me, it was Stanford's EE261 course that made Fourier Transform click for me. Here is the link: https://see.stanford.edu/course/ee261

Similarly for deep learning it was fast.ai courses.

For programming it was How to Design Programs at www.htdp.org.

Your topic of choice may be anything, not necessarily CS.

luuuzeta · 3 years ago
I've been struggling with wrapping my head around asynchronous programming with callbacks, promises and async/await in JS, however I think it's finally clicking after watching these YouTube videos and creating a document where I explain these concepts as if I'm teaching them to someone else:

* Philip Roberts's What the heck is the event loop anyway? - https://www.youtube.com/watch?v=8aGhZQkoFbQ

* The Story of Asynchronous JavaScript - https://www.youtube.com/watch?v=rivBfgaEyWQ

* JavaScript Callbacks, Promises, and Async / Await Explained - https://www.youtube.com/watch?v=JRNToFh3hxU

* Async Javascript Tutorial For Beginners (Callbacks, Promises, Async Await). - https://www.youtube.com/watch?v=_8gHHBlbziw

* Jake Archibald: In The Loop - setTimeout, micro tasks, requestAnimationFrame, requestIdleCallback, - https://www.youtube.com/watch?v=cCOL7MC4Pl0

Edit... I've been rewatching these videos, reading the MDN docs, the Eloquent JavaScript book, javascript.info, blogs about the subject, etc. This further proves you shouldn't limit yourself to a single resource, and instead fill up the laguna with water from different sources if you will.

philip_roberts · 3 years ago
Thanks for the shout out! I'm still amazed how well that talk struck a nerve and it's a real kick seeing people getting something out of it 8 (!) years later.
jakemauer · 3 years ago
That video was the first time I felt like I understood the Javscript stack. Really grateful you put that talk together.
SquareWheel · 3 years ago
I watched the video just recently, and almost immediately put the knowledge to use in a project. Finally the setTimeout(0)'s make sense.
luuuzeta · 3 years ago
Wow small world! Thanks to you for taking the time to explore this topic and putting such a great presentation together. I'd wager it's a must-watch for anyone who keeps asking "what the heck is the event loop anyway?" haha
digianarchist · 3 years ago
I liked swyx's talk on React Hooks: Getting Closure on React Hooks - https://www.youtube.com/watch?v=KJP1E-Y-xyo
floppydiskette · 3 years ago
I wrote this one over the course of a few months that summarized everything I could think of on the topic - https://www.taniarascia.com/asynchronous-javascript-event-lo...
luuuzeta · 3 years ago
I've your blog bookmarked and I'll be reading it this weekend haha. Thanks for putting it together!

>Callbacks are not asynchronous by nature, but can be used for asynchronous purposes.

Glad you mention this because some people make it since like callbacks are a de-facto asynchronous-based concept. Callbacks are simply anonymous functions or lambdas that you pass to asynchronous functions so you can work with the produced values. Correct me if I'm wrong though.

ericbarrett · 3 years ago
> creating a document where I explain these concepts as if I'm teaching them to someone else

Tangentially, that is a marvelous way to learn something. I often find that in explaining a complex topic I uncover gaps in my own understanding.

luuuzeta · 3 years ago
I've realized it's so easy to read or watch something and fool yourself into thinking that you know the topic.

For example, coming up with your examples helps a lot. For instance, I found most of the examples quite underwhelming and confusing so I ended up creating my own asynchronous functions to demonstrate the concepts as I go along.

cudgy · 3 years ago
The Montessori model
electrondood · 3 years ago
The event loop one was a must-watch video for anyone who write Javascript. It even secured me a job offer.
luuuzeta · 3 years ago
I'd argue that you cannot understand asynchronous programming in JS without knowing how the call stack in the JS engine, web APIs (provided by the browser or NodeJS as far as I know), the callback/(macro)task queue, microtask queue, and the event loop all fit together. The JS engine is a small component of that entire environment, and not being aware of it is like walking in the dark with dim candle.

The fact I didn't know about these concepts is the reason why I always struggled to understand examples involving setTimeout, setInterval, etc.

Most videos on YouTube, even from well-known personalities in the programming YouTube community, simply jump into things without context at all even when the videos are titled "for beginners". Even some books and docs simply describe the spec without providing context and motivation.

Edit... Forgot to say Philip does an outstanding job in that video. He's even humble enough to admit it took him a few months to grasp what was going on.

tylermcginnis · 3 years ago
So glad you found The Story of Async JS helpful! Appreciate the shout-out.
luuuzeta · 3 years ago
Thanks for your video! After I finished watching it and going to your channel's page, all I could think about was "Wow I hit jackpot".

Funnily enough "The Story of React" started playing right after, and I didn't even notice I was listening to another video.

thoughtpalette · 3 years ago
Commenting for later. Wish you could "favorite" comments.
solarmist · 3 years ago
You can. Click on the time for the comment. Then you can favorite it.
baxtr · 3 years ago
You absolutely can. But beware: these are public.
mandeepj · 3 years ago
> Commenting for later. Wish you could "favorite" comments.

Or, you can upvote it (comment)

Deleted Comment

mayankkaizen · 3 years ago
I wish someone can suggest me similar links for Python. Asynchronous programming has always been elusive to me.
lawxls · 3 years ago
https://superfastpython.com/python-asyncio/ - Python Asyncio: The Complete Guide
tmh88j · 3 years ago
Effective Python has a great chapter that goes over concurrency and parallelism using threads, coroutines and subprocesses. There are a lot of non-trivial code examples that the author gradually shows how to improve with more advanced language features over the course of several chapters so it's not all thrown at you at once, enabling you see benefits and pitfalls of approaching problems with different techniques. I highly suggest it even beyond learning async features.

Deleted Comment

asicsp · 3 years ago
These might help:

* Async Python in real life - https://guicommits.com/async-python-in-real-life/

* Python Concurrency: The Tricky Bits - https://python.hamel.dev/concurrency/

andrewstuart · 3 years ago
async programming IS hard to get your head around.

The resources you suggest are spot on.

AND, async programming will really only click when you do lots of it.

Read tons of async resources like the ones above, write lots of async code. One day you'll realise it's second nature.

luuuzeta · 3 years ago
Thanks a lot, I'll keep this in mind and try to write as much async code as possible.

>One day you'll realise it's second nature.

This is great but then the curse of knowledge hits you hard haha

digitalsushi · 3 years ago
i finally got callbacks this year when i pictured someone tossing a yo-yo into an elevator going down a few random floors and rolling out. the elevator leaves but i am still yanking on that yo-yo some random floor.
thecoppinger · 3 years ago
This is my learning goal right now, I can’t thank you enough!
luuuzeta · 3 years ago
You're welcome! Rewatch Philip's video as many times as you need until the concepts sink in, before you move into learning promises and await/async [1]. Similarly for Jake Archibald's video.

Good luck!

[1]: from what I gather asynchronous programming using callbacks isn't used anymore but it might be instructive to start with it, understand the issues with it, and why promises replaced this style.

TedDoesntTalk · 3 years ago
Anything for React (modern versions)?
tunesmith · 3 years ago
The beta docs are really good. I just keep re-reading them, particularly "You might not need an effect", and I still keep finding nuggets that surprise me.
waboremo · 3 years ago
No because the React team changes their approach every other year anyways.
foooobaba · 3 years ago
3blue1brown linear algebra + the linear algebra chapter from “all the math you missed but need to know for graduate school” - linear algebra and abstract vector spaces in general finally feel familiar.

Also, timbuktu manuscripts - showed a history that I had never really heard of. These are written manuscripts of african scholars which are hundreds of years old, and still exist today. Some record the history of great west african civilizations along with other things they studied (e.g. science, religion, math, literature, ect). I was never taught this history even existed but yet was made to learn the various details about asian, european, middle eastern, central/south american history. This, and the attempts to destroy/steal these manuscripts at various points in history, made it click how serious power of controlling information, and ultimately influencing beliefs can be, with respect to giving legitimacy to the various rulers/authorities. Beliefs/perceptions matter quite a lot. This 1hr lecture is quite good: https://m.youtube.com/watch?v=lQiqyyRfL2Y&t=16s

Behavioral biology class from Dr. Sapolsky (Sanford) - explains a lot of why we behave the way we do, from different biological perspectives https://m.youtube.com/playlist?list=PLqeYp3nxIYpF7dW7qK8OvLs...

signaru · 3 years ago
Jeffrey Chasnov's linear algebra courses when you want to get your hands dirty. I made my first matrix inversion code after watching his videos. His videos are not code, but instead just going through and explaining process without skipping any details such that you'd understand enough to code it. He does many linear algebra examples by hand on a writing board which ends up more engaging than the typical slideshow that tends to skip the "tedious" details.

https://www.youtube.com/playlist?list=PLkZjai-2Jcxlg-Z1roB0p...

dendrite9 · 3 years ago
On the Timbuktu manuscripts, I found this book really fascinating. I knew about bits of the story on a very rough sense but the details about various people, and excerpts from the manuscripts made for a book I had to finish. https://www.simonandschuster.com/books/The-Bad-Ass-Librarian...

Syria’s Secret Library By Mike Thomson was suggested to me while I was reading the previous book, but I haven't made time to read it just yet.

foooobaba · 3 years ago
Thanks for sharing, I’ll have to check these out.
bongwater_OS · 3 years ago
If it weren't for those Sapolsky lectures I would have never become intellectually curious. Beautiful lectures from a beautiful mind.
gwbas1c · 3 years ago
The E-Myth Revisited: Why Most Small Businesses Don't Work and What to Do About It (Michael E. Gerber)

What it taught me is that effective organizations invest heavily in training newcomers how to do their jobs / processes. I see this everywhere; when I walk into a business and something's "just off," it's almost always because management is dropping the ball on training newcomers how to do their jobs.

In my specific case, I was having trouble getting good bug reports, and my teammates were struggling with poorly written tickets. I had to take the time to explain what the process was for handing off work from QA to developers. Things moved much more smoothly after that. (IE, I had to explain that all tickets needed steps to reproduce, except in very specific circumstances.)

https://www.amazon.com/Myth-Revisited-Small-Businesses-About...

Taylor_OD · 3 years ago
My first question for recruiters is always about how a company trains/mentors employees. I have gotten maybe 5 good responses out of the 100's of times I've asked that question.

It's shocking to me. Every employee you hire is going to have to be trained on SOMETHING that is new to them or specific to your company. Why dont companies spend more time developing onboarding and training programs that actually work?

cassepipe · 3 years ago
Because companies prefer offloading the cost of education onto society but then endlessly complain on how formation is too broad, that is not catered specifically to their needs while not be willing to pay for it. Ok I (hope I am) exaggerating but there seems to be something like that going on in my country
tsycho · 3 years ago
While your question itself is good, it's unfortunately quite likely that the recruiters won't actually know the answer. So their answer isn't a good signal.

Separately, in larger companies, there will be significant variance between the onboarding process of teams/orgs.

xkgt · 3 years ago
Do you have any tips or guides for creating good training programs? I find it challenging to think from a newcomer point of view and I significantly underestimate their challenges. Consequently I feel the learning curve I set for the team is either too steep or too shallow.

This happens to me irrespective of whether I went through the painful learning curve just recently or several years in the past. Once I am comfortable with a topic, I cannot approach it from a newcomers perspective.

So I think having a systematic approach to KT and training will help.

swyx · 3 years ago
what counts to you as a good response?
mjburgess · 3 years ago
100% agree with this... it's very strange. The younger the business I've worked at, the more they assume incoming talent has the skills. And its exactly the opposite.
rahimnathwani · 3 years ago
You can't train people if you don't standardize first! This could be as simple as deciding what elements a big report should contain, or as complex as a multi-page standard operating procedure (SOP) for a knarly process.
is_true · 3 years ago
I think the problem is that most people managing organizations don't see the value in processes.
gwbas1c · 3 years ago
It's a cultural thing. I've seen it in California companies, but not in Massachusetts companies. (In MA, people will talk about SOPs all the time.)

> In my specific case, I was having trouble getting good bug reports,

I just had to avoid the word "process."

What I've also observed is that some people in the startup scene think processes are restrictive. That's usually a sign of a company / leader that's too immature to effectively manage through high growth. (You can't have exponential startup growth without processes.)

denton-scratch · 3 years ago
No book. Just one course.

I was a rather humble support guy for COBOL applications, so I had to learn COBOL, which I did.

I was sent by my manager for a one-off, three-day "advanced COBOL" course.

It wasn't about advanced COBOL; it was an advanced course on the seven-pass Burroughs COBOL compiler. Memory was short in those days, hence the seven passes; intermediate results were files on disk. We learned that by nulling the executable for a chosen pass, we could hack the intermediate files, to do things COBOL programs weren't supposed to do, like calling OS functions.

I learned how parsers work, and how parse trees are represented. I learned about intermediate code, optimisers, interpreters, and code generators. I got interested in compilers, and wrote a source-level debugger. It was just a three-day course, but it was incredibly valuable to me. Perhaps life-changing.

Perhaps it's not so much that that course made something click that wasn't clicking for me; rather, it inspired an interest in me that simply wasn't there before.

As I said this was a one-off course. There was about seven of us, and I don't believe anyone else ever received that training.

forbiddenvoid · 3 years ago
1. Peter Norvig's Design of Computer Programs course on Udacity probably singlehandedly changed my perspective on thinking and modeling software solutions to problems.

https://www.udacity.com/course/design-of-computer-programs--...

2. Crafting Interpreters by Robert Nystrom is of similar quality. There are a lot of 'oh that's how that works' moments in this book.

https://craftinginterpreters.com/

3. Doyle Brunson's Super System 2 is of a similar nature, but for poker. It's outdated these days because the nature of the game has changed so much due to the internet and a shift in meta strategy, but it's really insightful in understanding the human aspects of the game. His perspective as a 'gambler' rather than poker player is also unique, because he talks a lot about prop bets and identifying when you have an edge in a bet.

4. Stephen King's "On Writing" is a masterpiece of a memoir of a man and his craft. My own writing improved significantly as a result of this book.

luuuzeta · 3 years ago
If you liked Stephen King's "On Writing", give William Zinsser's "On Writing Well" a read. It's not a memoir but more like a manual addressing different types of writing from corporate writing to sports to academic.
rahimnathwani · 3 years ago
If you liked William Zinsser's "On Writing Well", give Joseph M. William's "Style: Toward Clarity and Grace" a read.
systemvoltage · 3 years ago
+1 Peter Norvig's class. His approach is totally fascinating and the way he effortlessly translates common-thinking and logic into a program is pure magic to me. Highly recommend it and also checkout his notebooks, unparalleled beauty: https://github.com/norvig/pytudes
6ak74rfy · 3 years ago
I am reading Crafting Interpreters right now. It seems to be a solid book but I am curious how others read it?

Do you reproduce all, or most, the code yourself? That’d be a great way to make everything stick but makes progress terribly slow.

ok_dad · 3 years ago
I'm in the process of reading Part II (the Java interpreter) thoroughly on the toilet, then will implement Part III (the C bytecode interpreter) in Zig. That way I understand the concepts well but end up with something a bit nicer for my efforts. I know I wouldn't finish the bytecode interpreter if I did both parts fully.
fantod · 3 years ago
My approach was to port everything to a different language I was learning.
mminkov · 3 years ago
Same as others. I took it as an opportunity to work with Rust and enjoyed it a ton! Crafting Interpreters has been ported to any language you can think of so try that approach out!
quaunaut · 3 years ago
I'm a software engineer, but these have been instrumental in my success in a way no coding book can compare to(though John Ousterhout's "A Philosophy of Software Design" would have, if it came out earlier in my life).

Personal time/task management- The classic, Getting Things Done(https://www.amazon.com/Getting-Things-Done-Stress-Free-Produ...). The power this has on people cannot be understated. Turns out that most of how life is conducted is rife with forgetfulness, decision paralysis, prioritization mistakes, and massive motivation issues. This book gives you specific workflows to cut through these in a magical way.

Personal Knowledge Management- The equally classic, How to Take Smart Notes(https://www.amazon.com/How-Take-Smart-Notes-Technique/dp/398...). Where GTD(above) does this for well-defined tasks/work, this book does it for open-ended work, giving you an amazing workflow for introducing "Thinking by Writing", which is frankly a superpower. This lets you see things your friends/colleagues simply won't, lets you deconstruct your feelings better, learn new/deeper subjects faster, and connect thoughts in a way to produce real insight.

For Product/Business Management, Gojko Adzic's "Impact Mapping"(https://www.amazon.com/Impact-Mapping-software-products-proj...) feels like it could make nearly every software team/business 10x better by just reading this book. I've personally watched as enormous portions of my life were spent on things that barely moved the needle for companies, or merely didn't keep the metric from rising. So many projects taken on faith that if you work on X, X will improve, without ever measuring, or asking if you could have accomplished that with less. The world looks insane afterward.

erganemic · 3 years ago
I adopted GTD right before I left college, and I sometimes wonder how I ever would have managed to adapt to the explosion of tiny, attention-grabbing tasks that adult life supplies without it. Admittedly, it feels a little clunky and "enterprise-grade" in places, but the underlying principles are so rock-solid and obvious-in-hindsight it feels magical.

Plus, org-mode really helps to make the over-engineered parts more frictionless--I run my life off of org-agenda now, where creating a new project, capturing tasks for it, and refiling them as needed are only a few keystrokes away. Keeping with the theme of hyped productivity books, I also take inspiration from Deep Work to tag certain actions as being ":deep:", so that after clocking into those tasks, I can look at a clock report at the end of the day/week to understand how many hours I actually spent working on "important" stuff. It's very motivating to make that number go up!

I know not everyone feels the need to be so intentional about their productivity landscape--indeed, a lot of very naturally productive people I know explicitly /don't/. But for those of us who aren't one of those magicians, I highly recommend putting some thought into at least a bare-bones system.

jjice · 3 years ago
I second "A Philosophy of Software Design" as a great set of loose principles. Just some really good stuff to keep in mind in a succinct book. Would love for Ousterhout to write some more.
ShredKazoo · 3 years ago
Thirded, I'm reading it now and it's a lovely book. Dense with good ideas.
tempera · 3 years ago
Sir, I have started reading The Art of Getting Things Done and boy that book is pure gold!

I've been missing it all my life! I'm on my way on getting wealthy and rich!

ahmedalsudani · 3 years ago
Thank you for your super practical list! Going to go through all of those books over the next few months.
yeswecatan · 3 years ago
What do you use for your getting things done workflow? I just started using neovim and found the neorg (https://github.com/nvim-neorg/neorg) package which has a GTD module.
easywood · 3 years ago
Keep it simple. My inbox only contains mails that require an action at some time. If I have done this action, I immediately archive the mail. I often mail todo's to myself so I have only one place for todo's. If I have to do something on a specific time, I put it in my online agenda. I have a separate setup for work and private, that's it. This works great.
quaunaut · 3 years ago
ATM I use Todoist, but I'm wildly unhappy in using it. The only reason I do is that since it's a web-based UI, I can use it from my Windows box. Most of the halfway good GTD tools are Mac-only.

I've had a project going to build my own but admittedly have been somewhat dumb/lazy about it.

dudeinjapan · 3 years ago
"Div, Grad, Curl, And All That: An Informal Text On Vector Calculus"

This was "optional" reading in my Undergrad Calculus class at Brown, I probably was the only student who bothered to read it, and it made most of engineering a breeze for the next 3.5 years, whether electromagnetism, fluid dynamics, etc.

jstogin · 3 years ago
I came here to see if this book made the list. I read it the summer before taking AP Physics. It made that class a breeze. Still, I'm impressed it made this list given it's not a CS book.
dudeinjapan · 3 years ago
I'm surprised so many other people had the same experience I did! Cool!
grahamplace · 3 years ago
Was going to post this as well — I read this in the middle of taking my vector calc class in college (with a terrible professor) and really had one of those "ohhhhhhh" moments where you unlock an intuitive understanding of something previously out of reach
lamontcg · 3 years ago
I was about to post this then did a search...
tcmb · 3 years ago
Gilbert Strang's lectures on Linear Algebra: https://ocw.mit.edu/courses/18-06-linear-algebra-spring-2010...

LinAlg was the only maths course I needed in my interdisciplinary study program. I had struggled to grasp maths in high school, but these lectures really made it click for me and I passed my university's class with a B+.

foooobaba · 3 years ago
Similar to that one, he also teaches a more recent course geared for applications of linear algebra: Matrix Methods In Data Analysis, Signal Processing, And Machine Learning

https://ocw.mit.edu/courses/18-065-matrix-methods-in-data-an...

jimbokun · 3 years ago
I used this to get up to speed when taking Machine Learning grad courses, having never took a Linear Algebra course in high school or undergrad.

Along with the wonderful MIT videos! Just a man and a chalkboard, explaining the core insights and relationships behind linear algebra concepts.

elteto · 3 years ago
The first couple of lectures _alone_ are incredible to really grok raw matrix multiplication.

I found the rest of the lectures a bit less of an epiphany, I think he meanders sometimes too much, but that’s a personal note. The whole series is absolutely incredible.

mtalantikite · 3 years ago
When I was an undergrad math major, linear algebra was one of those general foundations math classes that students from all the science majors were in. Because of that they had to teach a lot of sections of it, and that meant grad students lecturing it. The class was kind of a mess, but luckily professor Strang had these lectures up online even back then (2003 probably). Who knows how I would have done in that class without them, they really saved me at the time.

I should revisit them, I remember them being great!

aix1 · 3 years ago
I watched these lectures as a refresher many years after graduating and found them amazing.

Dead Comment