HNHacker News
TopNewBestAskShowJobs

hayley-patton

628 karma · joined November 13, 2021

https://applied-langua.ge/
submissionscomments
hayley-patton··on Ask HN: How do browsers isolate internal audio from microphone input?
I think module-null-sink and module-loopback could be used to create a virtual source which combines multiple sources, though the source/sink thing makes my head spin. Or, more simply, I suppose using the loopback of whatever audio output device does the combination (and the same mixing) for you, if you play all audio through one output device (which is most likely)?
hayley-patton··on Show HN: What Beats Rock – AI Rock Paper Scissors
I got lazy, to be fair:

MORE book burning -X-> multi location backups -> book burning -> passing down fables -> the ever-finite span of life -> convection and time -> volcano induced winter -> lots of lava -> lots of water -> base -> acid -> angle grinder -> hammer -> rock

hayley-patton··on "AI", students, and epistemic crisis
Does it give real citations? I've heard it gives bogus citations, though can't remember how well it went last time.
hayley-patton··on Using SIMD for Parallel Processing in Rust
Narrator: "The code did not, in fact, auto-vectorise."

(There's only addsd/movsd instructions, which are add/move scalar-double; we want addpd/movpd which are add/move packed-double in vectorised code.)

hayley-patton··on Tracing garbage collection for arenas
Dang, it's the shadow stack paper, not the BDW one! Sorry, my comment doesn't apply to shadow stacks and thus doesn't apply to the article.
hayley-patton··on Tracing garbage collection for arenas
We're going to put just a type ID in the word - you could probably get away with much smaller than a 64-bit ID, but padding will round it up to 64 bits in any case. The heap has exactly one tracing function and size function for all objects, and the functions check the type ID to determine what type they're looking at.
hayley-patton··on Tracing garbage collection for arenas
Where do you get 24 bytes of overhead from? A mark-sweep collector only needs a bitmap of 1 bit per alignment granule.

edit: oh, that's what the article uses - the tracing function and size function can be per-heap and the forwarding pointers can overwrite the start of objects, to just have enough header to support tracing and sizing, which could be one word.

hayley-patton··on Tracing garbage collection for arenas
> In a custom language, this can be implemented very easily following the approach outlined in this paper: Accurate garbage collection in an uncooperative environment.

Cheney's algorithm and conservative roots don't mix too easily, as you cannot move conservative roots: an integer which looks like a pointer shouldn't be changed by moving. https://dl.acm.org/doi/10.1145/2660193.2660198 has an overview of algorithms which don't move conservative roots (including never moving, as in Boehm-Demers-Weiser).

hayley-patton··on Y combinator codex (2021)
Omega combinators would have made for better growth hacking.
hayley-patton··on The Pre-Scheme Restoration
> but the fact that it then supports Scheme macros

Good for them.

> possibly share code between developing for the PreScheme compiler target and non-PreScheme targets

"possibly" is a strong word, seeing that Pre-Scheme is a statically typed, explicitly memory managed subset and all. There's a very large and coarse-grained semantic leap.

Then you can read the rest of <https://www.steveblackburn.org/pubs/papers/vmmagic-vee-2009....>, for a bonus.

hayley-patton··on Innovation heroes are a sign of a dysfunctional organization
"Unhappy the land that has no heroes!" "No. Unhappy the land that needs heroes."
hayley-patton··on The Pre-Scheme Restoration
The hell of the systems language is the systems, not that it has infix syntax.
hayley-patton··on Why "Structure and Interpretation of Computer Programs" matters (2011)
This one? https://gist.github.com/no-defun-allowed/4f0a06e17b3ce74c6ae...

It also responds to a few parents up "almost all of the innovations in lisp [...] have been absorbed into more popular languages" - pervasive interactivity hasn't even been taken up by some "Lisps", let alone has it been absorbed outside Lisp.

hayley-patton··on SBCL: New in Version 2.4.5
It has data races. Why would SBCL have a borrow checker?
hayley-patton··on Tail Recursion Elimination (2009)
> The first observation is that you can't do it at compile time. I've seen at least one blog entry that used a bytecode hack to replace a CALL opcode immediately before a RETURN opcode with a jump to the top of the function body. This may be a nice demo, but unfortunately Python's compiler cannot reliably determine whether any particular call is actually reference the current function, even if it appears to have the same name.

Tail call elimination should handle mutual recursion too, so this is completely unnecessary to check, and any CALL in tail position should become a tail call. Ironically I found this post from https://news.ycombinator.com/item?id=40504141 which is all about using mutual recursion to encode automata.

hayley-patton··on Beginner's guide to the Shenandoah garbage collector
I also suspect the author meant "humongous" in:

> Shenandoah is location-based, so there are regions, and region sizes, and therefore _homologous_ allocation is a special case to be handled.

hayley-patton··on The Evolution of Lisp (1993) [pdf]
It's especially hard when you don't have semantics for your language outside of what your interpreter does. Then the semantics of the language in the book are plain bad: there is only dynamic scoping (oh, and the book often has plain misinformation - the provided definition of "lexical scoping" is wrong), and setting a local variable only affects the innermost LET if you nest environments, since the interpreter deep-copies environments (as it does with everything, to cope with lack of GC).

The book also uses something more like fexprs than macros, which I don't have an opinion _outside of this book_ on with regards to language UX, but fexprs are generally harder to compile. That is in part because they control if/when their arguments are evaluated, but the fexpr-alike things here do not (instead "Q-expressions" delay evaluation like QUOTE). You still would want to do something about calls to EVAL though. The fexpr system _in this book_ also does have bad UX: it only incidentally works with dynamic binding (Shutt's lexically scoped fexprs explicitly pass the environment around) and it also leaks every variable binding from the fexpr function into what it evaluates.

The book also just doesn't cover compilers, so you're doing that slog on your own.

hayley-patton··on The Evolution of Lisp (1993) [pdf]
It is a very bad start and teaches writing an interpreter and not a compiler. https://gist.github.com/no-defun-allowed/7e3e238c959e27d4919...
hayley-patton··on LunarML – Standard ML compiler that produces Lua/JavaScript
I can no longer google "ML Kit" and find the ML compiler, instead I find Google's ML library. You win some, you lose some.
hayley-patton··on A Road to Common Lisp (2018)
There's a lot of language semantics which make the REPL convenient to write interesting amounts of code in, Gilad Bracha details some in <https://blog.bracha.org/primordialsoup.html?snapshot=Amplefo...> (with the message reflected in the medium, embedding the Newspeak IDE in the document for examples). It's unrelated to compiling or interpreting; many Common Lisp implementations will compile code from the REPL too.
hayley-patton··on D-Expressions: Lisp power, Dylan style [pdf]
Implementations interpret, languages don't; PyPy compiles and is about half the speed of V8. But one should put micro trust in a micro benchmark in general.
hayley-patton··on Parallel garbage collection for SBCL (2023)
Compile SBCL with the command ./make.sh --with-mark-region-gc and the resulting build will use the mark-region GC. (Picking the GC at start-time instead of build-time would be very nice, but technically hard to pull off unfortunately.)
hayley-patton··on Raspberry Pi Ltd is considering an IPO
I can view it just fine in Australia. Now I'm going to download a car too before I get caught.
hayley-patton··on Fast linked lists
SBCL cheats and copies starting from the first cons cell that is referenced from outside the list; this tends to be the start of the list, and so traversing just works. The contiguous copying also ends when a cons cell which was already copied is found, so there can't be more discontinuities than there are cons cells referenced from outside the list, regardless of which order we discover the references.
hayley-patton··on Fast linked lists
SBCL tries its hardest to allocate sequentially, then moves lists to be sequential in GC.
hayley-patton··on Zero Feet: a proposal for a systems-free Lisp
The Smalltalk special of Byte Magazine infamously has a hot air balloon floating away from an island with ivory towers on it. Flying things measure their altitude in feet, but the low level is low. Furthermore, according to Tubeway Army, bombers fly at zero feet <https://www.youtube.com/watch?v=GAj89NEqX-M>.
hayley-patton··on Zero Feet: a proposal for a systems-free Lisp
This isn't about Lisp in the browser though, it's about high-level low-level programming (to borrow the name from Daniel Frampton <https://www.steveblackburn.org/pubs/theses/frampton-2010.pdf>).
hayley-patton··on Zero Feet: a proposal for a systems-free Lisp
What was Brendan Eich doing that is covered in this article?
hayley-patton··on Parallel garbage collection for SBCL (2023)
It's not always faster, so making it the default could cause regressions; it seems pretty stable now but the default (gencgc) had a head-start of a few decades for bug finding (and making).
hayley-patton··on Unix and Multics (2019)
But Multics was written in PL/I (and the Burroughs B5000 system in Algol before) so Unix doesn't have an advantage there.
← PreviousPage 2 of 10Next →