HNHacker News
TopNewBestAskShowJobs

chhs

117 karma · joined September 15, 2016

submissionscomments
chhs··on Ask HN: Alternatives to GitHub
I migrated my Gitea instance to Forgejo, it was pretty painless
chhs··on My Steam Machine is a 50ft HDMI cable
I bought the same adapter and use it with Bazzite, which has a `toggle-cec-sleep` you can run that just set it up. Now when I press a button on my keyboard, the PC starts up and the TV turns on. It's magical.

https://docs.bazzite.gg/Installing_and_Managing_Software/Baz...

chhs··on Ask HN: What are you working on? (May 2026)
I'm working on JRECC, a Java remotely executing caching compiler.

It's designed to integrate with Maven projects, to bring in the benefits of tools like Gradle and Bazel, where local and remote builds and tests share the same cache, and builds and tests are distributed over many machines. Cache hits greatly speed up large project builds, while also making it more reliable, since you're not potentially getting flaky test failures in your otherwise identical builds.

https://jrecc.net

chhs··on Ask HN: What Are You Working On? (March 2026)
I'm working on JRECC, a Java remotely executing caching compiler.

It's designed to integrate with Maven projects, to bring in the benefits of tools like Gradle and Bazel, where local and remote builds and tests share the same cache, and builds and tests are distributed over many machines. Cache hits greatly speed up large project builds, while also making it more reliable, since you're not potentially getting flaky test failures in your otherwise identical builds.

https://jrecc.net

chhs··on D Programming Language
For those curious what ownership and borrowing looks like in D: https://dlang.org/blog/2019/07/15/ownership-and-borrowing-in...
chhs··on Ask HN: What are you working on? (February 2026)
I'm working on JRECC, a Java remotely executing caching compiler.

It's designed to integrate with Maven projects, to bring in the benefits of tools like Gradle and Bazel, where local and remote builds and tests share the same cache, and builds and tests are distributed over many machines. Cache hits greatly speed up large project builds, while also making it more reliable, since you're not potentially getting flaky test failures in your otherwise identical builds.

https://jrecc.net/

chhs··on Self hosting my media library with Jellyfin and Wireguard on Hetzner
You can use ListenBrainz to discover new music based on your listening activity from your self-hosted library. I've started doing this recently with Navidrome and I'm happy with the results. This is the plugin I've been using: https://github.com/kgarner7/navidrome-listenbrainz-daily-pla....

There is also Troi[1], a tool provided by ListenBrainz to generate playlists and radios from your local music collection.

[1] https://troi.readthedocs.io/en/latest/index.html

chhs··on Self hosting my media library with Jellyfin and Wireguard on Hetzner
If you don't mind self-hosting, I've recently started using ListenBrainz in combination with Navidrome. You can upload your Spotify listen history to seed it, and scrobble your ongoing listening to keep it up to date with what you listen to. You can use a plugin[1] to automatically generate daily, weekly, and discovery playlists based on your listen history, and what you have available in your library. You can generate even more playlists using ListenBrainz data via their tool, Troi[2].

[1] https://github.com/kgarner7/navidrome-listenbrainz-daily-pla...

[2] https://troi.readthedocs.io/en/latest/

chhs··on 1,145 pull requests per day
In my org they count both the number of pull requests, and the number of comments you add to reviews. Easily gamed, but that's the performance metric they use to compare every engineer now.
chhs··on FFT-based ocean-wave rendering, implemented in Godot
Looks incredible!
chhs··on Bitmagnet: A self-hosted BitTorrent indexer, DHT crawler, and torrent search
V2 definitely makes it easier, but it's possible to identify files with V1 by iterating through metadata looking for files with the same length as a local file, then checking each piece against the local file. If they all match, then it's the same file. For boundary pieces where it consists of multiple files, I think it's safe enough to ignore if all of the remaining pieces match the local file, but you could do a more complex search looking for sets of files that all have the same length, and then compare the piece hash with the local files.
chhs··on Bitmagnet: A self-hosted BitTorrent indexer, DHT crawler, and torrent search
I wrote a project to do this using libtorrent a while ago, but unfortunately libtorrent crashes when seeding thousands of torrents at once, which is the current blocker. I haven't been working on it since.

https://github.com/chhs1/content-seeder

chhs··on How to become a pirate archivist
Could you please share a link to your solution? I would be interested to take a look
chhs··on How to become a pirate archivist
The source is available here: https://github.com/chhs1/content-seeder
chhs··on How to become a pirate archivist
This is how I was originally achieving this. As I said, it's very slow. I don't think it would be a good solution on its own because it would require that every client be constantly sampling all DHT nodes, and downloading all metadata and indexing it for a potential future lookup. It's a huge amount of additional load on the DHT.

I think a better solution would be some way for clients to query the DHT for a specific "pieces root", but I don't know if all clients publishing "pieces root" for the torrents they know about would also be a good idea. Some kind of distributed metadata database where clients can query would be ideal.

chhs··on How to become a pirate archivist
I did work on a proof of concept program to accomplish this for my own content library. It would scan a directory to find files and compare them with locally stored metadata. For v2 torrents this is trivial to do via a "pieces root" lookup, for v1 torrents it involves basically checking that each piece matches, and since pieces may not align with the file then it's not possible to guarantee that it's the same file without having all of the other files in the torrent.

I built it with libtorrent and after loading in all of the torrents (multiple TBs of data), it would promptly and routinely crashed. I couldn't find the cause of the error, it doesn't seem it was designed to run with thousands of torrents.

One problem that I've yet to build a solution for is finding the metadata to use for the lookup phase. I haven't been able to find a publicly available database of torrent metadata. If you have an info hash then itorrents.org will give you the metadata, if it exists. I started scraping metadata via DHT announcements, but it's not exactly fast, and each client would have to do this unless they can share the database of metadata between them (I have an idea on how to accomplish this via BEP 46).

chhs··on How to become a pirate archivist
A v2 torrent allows clients to identify duplicate files across torrents via the "pieces root" entry in the metadata, so if they're downloading from torrent A and B, and each share file C, they can utilize peers from either swarm.

But there's no way for other clients to know that there exists another torrent containing the file they are interested in if they only have the metadata for torrent A. In other words, there's no lookup mechanism for a "pieces root" to know that torrent B exists and contains file C.

If you were to make a v2 torrent of your entire drive, other clients won't know to download from your torrent. They'd need to have the contents of the metadata to know it would contain a file they are interested in, and have no way of knowing which metadata contains the desired "pieces root" entries without downloading all of them.

I'm very interested in this problem space, if you are aware of clients/mechanisms that allow for this I would love to hear them.

chhs··on Dutest: Identify test coverage (or lack thereof) for Maven dependencies
Hi, author here.

A recurring problem I've noticed in companies with large, legacy codebases is upgrading dependencies. Typically these projects have been around for a long time, no one currently working on them understands the project deeply, and test coverage is quite low. The result is that developers cannot rely on a successful CI/CD result to know if an upgrade didn't break the project. They instead resort to a lot of manual searching and testing to verify that everything is still working.

I built Dutest to easily identify where dependencies are used within a project, and what the level of test coverage is like, broken down by the test type (unit, integration, or end-to-end). This allows me to quickly triage whether an upgrade can be done quickly and safely (high test coverage + low number of usages), or if it is more risky (low test coverage + high usages). It also provides references to quickly jump to that line of code within an IDE.

I thought I'd build this as my first solo SaaS product, and see if this solves a problem that others are experiencing. I'm happy to hear your feedback and to answer any questions.

chhs··on Static torrent website with peer-to-peer queries over BitTorrent on 2M records
It's possible to publish updates to torrent files via the DHT. See http://www.bittorrent.org/beps/bep_0046.html
chhs··on All Applications for Nuclear Energy at COP26 Rejected
I don't think the applications for nuclear energy were rejected for the reasons being implied by the original article. This article[1] mentions that they weren't accepted because they missed the submission deadline.

> According to Kirsty Gogan, cofounder of TerraPraxis and a senior climate and energy advisor to the U.K. government, “All three Green Zone applications by nuclear groups were rejected.” However, it seems some of that may be due to miscommunication regarding application deadlines for the COP26 Green Zone.

I couldn't find the original source for the miscommunication on application deadlines, hopefully someone can find it.

[1] https://www.ans.org/news/article-3188/controversy-over-nucle...

chhs··on UK MP speech about freedoms censored by YouTube
PeerTube doesn't scale with large number of users, period.

There's currently no way to horizontally scale an instance, so after an instance grows past a certain size it can't transcode uploaded videos fast enough. I love the project but if it can't utilize multiple compute instances to transcode video (or plug into a cloud platforms video transcoding offering), it's never going to grow past this blocker.

chhs··on Could a four-day working week become the norm?
One can only dream. It seems that workers become more and more productive over time, but their wages do not increase with productivity. I wonder, if not an increase in productivity for the same cost, could result in an improvement in conditions for workers?
chhs··on Ask HN: A good Linux laptop below 1000€
I use a Dell Precision 5530 daily with Ubuntu 20.04, works great with no problems. I believe Ubuntu is officially supported by Dell, and it does get the occasional firmware upgrade.
chhs··on Ask HN: Who wants to be hired? (June 2021)

  Location: Australia/New Zealand
  Remote: Yes
  Willing to relocate: No
  Technologies: Java, Spring Boot, Maven, PostgreSQL, Terraform, Docker, AWS, Git, Bash, D
  Résumé/CV: Available upon request
  Email: chhs@mailbox.org
chhs··on A “Better C” Benchmark
I threw together a D Programming language glob-grep based off of the Zig version the author posted, if anyone is curious: https://gist.github.com/aruthane/005c6c48f0deb9c4bfc83bc75e0...
chhs··on The Free Coffee Test, or Lefkowitz’s Law of Corporate Financial Health (2013)
At the company I work for they don't offer free coffee. The reason they give as to why not is so the employees will actually have to go outside to get one.
chhs··on The relationship between age and wisdom-related performance (1999)
Link to full PDF: https://www.researchgate.net/profile/Ursula_Staudinger/publi...
chhs··on Ask HN: Types of questions to ask team members before accepting role?
"How would you describe the code quality of the project you work on?"
chhs··on Why Crystal is the most promising programming language of 2018
I had a quick search, REPLs exist for C, C++, D, Go, and Rust (my shortlist of statically typed, compiled languages).

I would question what is meant by a 'true REPL'. It's certainly seems possible to build a REPL of a statically typed compiled language.

chhs··on Why Crystal is the most promising programming language of 2018
> Nothing else puts all of these ingredients together (compile-time macros, static typing, C-like speed, Ruby-like syntax, gem-like package ecosystem, native binary compilation, fibers, and cross-platform support)

Something I've noticed when reading 'X language is great' posts, the comparison is usually limited to a narrow subset of what's out there.

As an example, I think D meets all of the above criteria. Maybe I'll give on Ruby-like syntax, which D instead has more of a C-like syntax with adjustments to improve compile time.

There are lots of great languages out there and it really irritates me when I see claims of 'X is better than Y or Z' and it seems no effort is made to see what else already exists with the same (or greater) set of features.

Page 1 of 2Next →