HNHacker News
TopNewBestAskShowJobs

corank

26 karma · joined April 5, 2024

submissionscomments
corank··on Moving Back to a Tiling WM – XMonad
If you want automatic tiling, there are Kwin scripts for that eg https://github.com/anametologin/krohnkite/

Essentially turning kwin into a tiling WM

corank··on Left to Right Programming
As I understand it this is precisely why in Haskell and OCaml standard libraries we get lots of things like

  map : (a -> b) -> a list -> b list
instead of

  map : a list -> (a -> b) -> b list

The main argument (data to be operated on) is positioned last, after the others which are more like parameters that tune the function. It's to allow chaining these things up left to right like Unix pipes:

  map f l |> filter g |> ...
corank··on Helix: A Modern, High-Performance Language
I see.

My understanding is that Rust doesn't have _automatic_ reference counting as in Swift only because it has an alternative (move), which requires the programmer to specify their intent. The principle is nevertheless the same: ensure every time a reference is copied the ref count is incremented, free only when ref count is zero, and we get temporal memory safety.

corank··on Helix: A Modern, High-Performance Language
I was actually talking about automatic reference counting. I think both Rc and Arc count as automatic reference counting? It's just that the term (which was apparently coined by Apple?) is not commonly used outside Apple's languages.

I'm not familiar with Swift though so my understanding could be incorrect.

corank··on Helix: A Modern, High-Performance Language
The point about Rust is to avoid any extra runtime cost by statically enforcing a set of rules (borrow checking) on reference use that are sufficient to guarantee memory safety. It also has ARC but it's reserved only for cases where those rules are too restrictive.
corank··on Helix: A Modern, High-Performance Language
I think I saw them sharing it on Reddit earlier
corank··on Helix: A Modern, High-Performance Language
I'd love to learn more about how AMT works. How would a doubly linked list work in this language for example?

Does the conversion happen during run-time? Isn't that going to be super expensive?

corank··on Show HN: Let’s Bend – Open-Source Harmonica Bending Trainer
There are different types of harmonicas. For 10-hole/blues harmonicas bending is a fairly common technique. It's less common or easy to do on other types of harmonicas, eg chromatic harmonicas. Maybe you tried one of those as a kid.
corank··on Rusty Cascading Style Sheets – Another CSS Preprocessor
What are some safety guarantees for CSS?
corank··on Show HN: I built a Rust crate for running unsafe code safely
> It forces functions to be memory pure (pure with respect to memory), even if they aren't.

What if the unsafe code is not supposed to be pure but mutates some memory? For example, does this allow implementing a doubly-linked list?

corank··on KOReader: Open-Source eBook Reader
I own a Kindle Oasis 2. Amazon stopped software updates for it so I just jailbroke it and loaded KOReader. It's way better than the official software, probably the most feature-rich and customisable document viewer I've ever seen. I regret not installing it earlier.
corank··on Blue95: a desktop for your childhood home's computer room
I wouldn't call it an entirely new distro. It's just an Fedora image bundled with the necessary changes to create the UX. It doesn't provide its own software repositories. It's more like an unofficial Fedora Spin.
corank··on Rust Adopting Ferrocene Language Specification
It seems to me that the part about unsafe operations is pretty much still unspecified. It's currently just a short paragraph saying it may cause undefined behaviour and a list of high-level descriptions of those unsafe operations. But what's the exact semantics of those operations? When is it undefined?
corank··on Leaking Passwords and more on macOS
> if a process were to expose a mechanism for other processes to essentially proxy keychain queries through it, that can undermine the security of the whole system.

This looks like a case of confused deputy problem: https://en.wikipedia.org/wiki/Confused_deputy_problem

A capability-based design should be able to systematically prevent this kind of problems.

corank··on VS Code Pets
Perhaps these 1. Stress relief 2. Makes boring work a bit more interesting 3. Rubber duck debugging 4. A small amount of distraction might actually boost productivity by allowing us to jump out of a local optimum?
corank··on Haskell: A Great Procedural Language
I think as long as the code sticks to the discipline of never actually doing I/O but only manipulating functions that perform them it would basically be doing the same thing as IO monads in Haskell.

So print(s) returns a function that when called prints s. Then there needs to be function that joins those functions, so print(a); print(b) evaluates to a function that once called prints out a and then b.

What makes Haskell special in my opinion is 1) it generalises this way of achieving "stateful" functions, 2) enforces such discipline for you and makes sure calling functions never produces side effects, and 3) some syntactic sugar (do, <-, etc) to make it easier to write this kind of code.

Also note that the above example only does output which would be the easier case. When it comes to code with input, there will suddenly be values which are unavailable until some side effects have been made, so the returned functions will also need to encode how those values are to be obtained and used, which complicates things further.

corank··on VS Code Pets
Is there evidence showing that such things do boost productivity? Or any research on how they affect the way people work?
corank··on Operating System in 1,000 Lines – Intro
It likely doesn't have performance that's good enough for production use. Doesn't look like there's JIT so it's all instruction by instruction interpreting.
corank··on How China turns members of its diaspora into spies
Have you tried using Google in China? Or post anything that the government/party doesn't like online?
corank··on Tokyo University Used "Tiananmen Square" Keyword to Block Chinese Admissions
Pretty confident that it's not covered at all.
corank··on Nyxt: The Hacker's Browser
I think an important difference between how I use vim and how I use a web browser is that in vim I need to type frequently. Though I may spend most time in normal mode in vim, I still need to switch to insert mode to make edits very frequently. With my normal web browsing it's not the case, so I'm more comfortable with a mouse for that. But I realise that this depends largely on the specific use case for web browsing. Reading blog posts is quite different from reading some documentation where one needs to search and backtrack frequently, for example, although both are done on a web browser. The latter involves the keyboard more frequently so would benefit from a keyboard-centric interface more.
corank··on Nyxt: The Hacker's Browser
That's indeed a nice use case. In general keeping to the keyboard can be helpful in the context of typing, but if I'm just reading news or blog posts or watching videos I'd go with a mouse.
corank··on Nyxt: The Hacker's Browser
For text editors or IDEs, basically contexts where we expect a lot of typing, I get why sticking to the keyboard is desirable. I don't get how it's better to browse the web without using the mouse. Most of the time on the web I just read, not type.
corank··on Why pipes sometimes get "stuck": buffering
An interesting idea! Sending signals to all processes sounds expensive as hell though. All that work just to make a system call again to flush a buffer. Maybe a mechanism can be added to make the kernel aware of the user space buffer so it can directly fetch stuff from there when it's idle? Is it kind of like io_uring https://man7.org/linux/man-pages/man3/io_uring_register_buff...
corank··on Reading texts on paper versus computer screen: Effects on reading comprehension [pdf]
My hypothesis is that the PDF format bears much blame here. The results might be very different if the material is in a reflowable format like an epub or a web page. If you think about it, the notion of a page exists only because of the physical limitations of the paper medium, and PDF is page-centric only because it was designed to represent printable materials. There's no reason to stick to pages anymore if the material is to be consumed on a screen, and PDF is therefore also the wrong choice for this.