A fun quiz on eval() in JS, and corner cases of its behaviour: https://blog.brownplt.org/2012/10/21/js-eval.html
I've seen some of the gotchas before, but I still don't envy JS implementors.
Related Posts
I'm having fun writing a simple type checker, but I'm learning firsthand why syntax-directed checking doesn't work. It prevents inference.
My checker catches real bugs, but it can't handle cases like this:
[1, 2].map(fun(x) { x + 1; })
I think I need bidirectional checking.
Coming from JS or Python, imports in Rust feel weird. They're entirely optional aliases for fully qualified symbols, which are always available.
I don't know of many other languages where you can just start using libraries. Java is the only one I can think of.
I've written difftastic packaging instructions: https://difftastic.wilfred.me.uk/packaging_difftastic.html
The different distros have taken different approaches, so I'm trying to help with common gotchas — don't forget the man page!
Feedback welcome, especially if you've ever packaged something 🙂