Hacker News new | ask | show | jobs
by chakspak 1903 days ago
This tutorial looks amazing. I know what I'm going to be doing the next few weekends.
4 comments

It’s such a great idea for a book!

I quite like Python but really I want a version all written in NodeJS, so it’s javascript all the way down :)

Hi mjgs. I'm one of the book's authors, and we debated this quite a bit. The reasoning for using Python is written up here: https://browser.engineering/blog/why-python.html

That said, it's pretty easy to follow along in JS if you really want and in fact... Stay tuned, there'll be an update in this space very soon.

Thanks for the reply. I like that you’ve chosen a scripting language, it makes the book much more accessible. If it were in c / c++ / rust etc, I would never read it.

Thanks for sending the writeup of why you chose Python.

As for javascript readability issues, IMO those are non-issues and actually in some ways beneficial to have one language, no need to context switch.

The web workers issue is perhaps a problem, but maybe it makes the implementation easier, even if it doesn’t look much like real browsers?

I don’t understand the networking issue you highlight, you can build any networking functionality using NodeJS, it’s actually very good in networked application settings.

With so many people that write code online in javascript, the book would be so much more accessible. It would be a great compliment to the Python version or any C / C++ version.

I’m interested to hear your update, what’s the best way to get that automatically?

One other thing...this passed by in my feeds last week, I’m not an expert in web workers or browser threads etc, but it seems like it might be relevant, so sharing it just in case:

“A fast, efficient Node.js Worker Thread Pool implementation”

https://github.com/piscinajs/piscina

Right! I'm working with the web since 2006 but still I find this book a must to read.
Yes! Apparently it's still being written.... and I NEED them to get to the CSS bits.
Book author here. A basic styling engine is the very next chapter, so it should be out in about two months, depending on how the writing process goes.
Incredible, thank you!

I believe expanding the simple version into a decently robust rendering engine will be the ultimate way for me to learn CSS.

Thanks so much again!

No doubt I'll do something crazy, that is, try to implement this in C.
I was going to > inb4 rust!, but, isn't Gecko built in Rust?
The style parts are in Rust, but layout is C++, I believe. servo does have an experimental layout engine (or two? layout 2020?) in Rust, but I don't think that ever reached a point where Mozilla were seriously considering replacing Gecko's with it.
I think Servo is basically a proving ground for replacing components in Firefox with Rust equivalents.
Gecko is (mostly, at least) traditional C++. Servo is written in Rust.
Would Rust be the best choice of language, given all the back pointers (previous, parent)?
Trees are not that bad in Rust, it's when you have a cyclical structure that Rust is really difficult.
Yes, that's what I meant by "back pointers". In the article, every node has a parent pointer and a child pointer (or several). You can't have both of these pointers without introducing cycles.