HNHacker News
TopNewBestAskShowJobs

bilkow

480 karma · joined September 26, 2016

submissionscomments
bilkow··on jj – the CLI for Jujutsu
This is how I'd do it:

    jj new branch1 branch2 branch3
This creates an empty commit that merges all 3 branches, you can think of this as your staging area.

When you want to move specific changes to an existing commit, let's say a commit with an ID that starts with `zyx` (all jj commands highlights the starting characters that make the commit / change unambiguous):

    jj squash -i --to zyx
Then select your changes in the TUI. `-i` stands for interactive.

If you want to move changes to a new commit on one of the branches:

    jj split -i -A branch1
Then select the changes you want moved. `-A` is the same as `--insert-after`, it inserts the commit between that commit and any children (including the merge commit you're on).

There's one thing that's a bit annoying, the commit is there but the head of the branch hasn't been moved, you have to move it manually (I used + to get the child to be clearer, but I usually just type the first characters of the new change id):

    jj bookmark move branch1 --to branch1+
bilkow··on Mozilla to launch free built-in VPN in upcoming Firefox 149
I'm curious on the source for these "facts".

- You state that PPA is enabled by default, but it was an experimental feature that was never activated and later removed: https://support.mozilla.org/en-US/kb/privacy-preserving-attr...

- You state that Sponsored “Privacy-Focused Direct Results” were added to address bar, but 1. it's direct results in general, with some being sponsored and 2. it hasn't been released: https://blog.mozilla.org/en/firefox/better-search-suggestion.... The pref defaults to false in current stable.

- Yes, Anonym is an ad metrics firm, but you missed that it's focused on privacy. I am unsure whether they are actually able to achieve privacy or if it's just privacy-washing, but that's their stated goal. https://www.mozilla.org/en-US/anonym/

- Privacy FAQ and TOS changes are true, but they rolled them back after backlash: (updated) https://www.thebridgechronicle.com/tech/mozilla-revises-fire... , (original) https://arstechnica.com/tech-policy/2025/02/firefox-deletes-...

- Privacy Notice update is true: https://www.mozilla.org/en-US/privacy/firefox/update/dec2025...

bilkow··on The purpose of continuous integration is to fail
I don't really understand the point you're trying to make, I don't see anywhere in the post nor the title claiming the purpose changed and the title is directly related to the content. In fact, it seems like you are just agreeing with the post.

I think people can get frustrated at CI when it fails, so they're explaining that that's the whole purpose of it and why it's is a actually good thing.

I would personally actually frame it slightly different than the author. Non-flaky CI errors: your code failed CI. Flaky CI errors: CI failed. Just to be clear, that's more precise but would never catch on because people would simplify "your code failed CI" to "CI failed" over time, but I don't thing that changes it from being an interesting way to frame.

bilkow··on Never buy a .online domain
Even if the false-positive rate is very small (e.g. 0.01%), you probably won't be affected, but more than a hundred thousand of websites would be and that would still be an issue. I have no idea how big is the false-positive rate.

There are many of reports of the same happening to other sites, some of the top ones (you can find many more by searching HN for "google safe browsing"):

- https://news.ycombinator.com/item?id=33526893

- https://news.ycombinator.com/item?id=25802366

- https://news.ycombinator.com/item?id=45675015

bilkow··on Discord will require a face scan or ID for full access next month
Not affiliated with Zulip, but have you checked the "Free and discounted Zulip Cloud Standard" info on their help center? https://zulip.com/help/zulip-cloud-billing#free-and-discount...

Sounds like you could be eligible for free or for a significant discount. Also:

"If there are any circumstances that make regular pricing unaffordable for your organization, contact sales@zulip.com to discuss your situation."

bilkow··on Allow me to introduce, the Citroen C15
Are you saying that the author engaging in online activism and presenting very common criticisms of SUVs in a sarcastic way somehow implies they're bad neighbors?
bilkow··on Gnome and Mozilla Discuss Proposal to Disable Middle Mouse Paste on Linux
I'd argue it's more like "looking at your keys while you're picking them". Selecting text is also known as highlighting and some people highlight text while reading / thinking.
bilkow··on Gnome and Mozilla Discuss Proposal to Disable Middle Mouse Paste on Linux
You don't need primary selection to avoid the keyboard, you can also hold right-click on your selection and release it on "copy" (or right-click on your selection then left-click on copy, more intuitive but slightly more cumbersome)

I agree it's less convenient (there's an extra step: explicitly copying the text), but in my experience it's also more reliable as you don't lose it by just selecting anything.

bilkow··on Days since last GitHub incident
I mostly agree, but a generalized attack at the remaining GitHub workers by calling them "losers" and then "rookies" is unwarranted and leaves a bad taste IMO.

See the edit history here: https://news.ycombinator.com/item?id=46133179

Edit: 1. just to be clear, it's very good that they have accepted the feedback and removed that part, but there's no apology (as far as I know) and it still makes you wonder about the culture. On the other side, people make mistakes under stress. 2. /s/not warranted/unwarranted/

bilkow··on MinIO is now in maintenance-mode
It's probable that licenses that explicitly allows revocation at will would not be approved by OSI or the FSF.

Copyright law is also a complex matter which differs by country and I am not a lawyer so take this with a grain of salt, but there seem to be "edge cases" where the license can be revoked as seen in the stackexchange page below.

See:

https://lists.opensource.org/pipermail/license-discuss_lists...

https://opensource.stackexchange.com/questions/4012/are-lice...

bilkow··on MinIO is now in maintenance-mode
I think you are correct, but you probably misunderstood the parent.

My understanding of what they meant by "retroactively apply a restrictive license" is to apply a restrictive license to previous commits that were already distributed using a FOSS license (the FOSS part being implied by the new license being "restrictive" and because these discussions are usually around license changes for previously FOSS projects such as Terraform).

As allowing redistribution under at least the same license is usually a requirement for a license to be considered FOSS, you can't really change the license of an existing version as anyone who has acquired the version under the previous license can still redistribute it under the same terms.

Edit: s/commit/version/, added "under the same terms" at the end, add that the new license being "restrictive" contributes to the implication that the previous license was FOSS

bilkow··on Imgur geo-blocked the UK, so I geo-unblocked my network
Yeah that's annoying. Maybe you could add a disclaimer on your blog saying you do not use AI to write and then just write however you like the most? I think it would help both yourself and those who want to avoid AI content.
bilkow··on Tags to make HTML work like you expect
> 200 languages that are actually used

Do you have any reference of that or are you implying we shouldn't support the other thousands[0] of languages in use just because they don't have a big enough user base?

> And the fact is that the author of the web page doesn’t know the language of the content, if there’s anything user contributed. Should you have to label every comment on HN as “English”? That’s a huge burden on literally every internet user.

In the case of Hacker News or other pages with user submitted and multi-language content, you can just mark the comments' lang attribute to the empty string, which means unknown and falls back to detection. Alternatively, it's possible to let the user select the language (defaulting to their last used or an auto-detected one), Mastodon and BlueSky do that. For single language forums and sites with no user-generated content, it's fine to leave everything as the site language.

> Other written language has never specified its language. Imposing data-entry requirements on humans to satisfy a computer is never the ideal solution.

There's also no "screen reader" nor "auto translation" in other written language. Setting the content language helps to improve accessibility features that do not exist without computers.

[0] https://www.ethnologue.com/insights/how-many-languages/

bilkow··on Tags to make HTML work like you expect
Your whole comment assumes language identification is both trivial and fail-safe. It is neither and it can get worse if you consider e.g. cases where the page has different elements in different languages, different languages that are similar.

Even if language identification was very simple, you're still putting the burden on the user's tools to identify something the writer already knew.

bilkow··on The scariest "user support" email I've received
There's a variant of these for Windows: https://www.malwarebytes.com/blog/news/2025/03/fake-captcha-...

It involves no CMD though, it's basically just Win+R -> CTRL+V -> Enter

bilkow··on Niri – A scrollable-tiling Wayland compositor
You can run niri from within other DEs, but I'm unsure whether it works well for your use-case. From the docs[0]:

"You can also run niri inside an existing desktop session. Then it will open as a window, where you can give it a try. Note that this windowed mode is mainly meant for development, so it is a bit buggy (in particular, there are issues with hotkeys)."

IIRC in this case the Mod key is by default Alt instead of Super.

[0] https://yalter.github.io/niri/Getting-Started.html

bilkow··on A WebGL game where you deliver messages on a tiny planet
Yeah, I also got motion sickness from the camera! I managed to complete as I really liked everything else but I'm still a bit nauseated.
bilkow··on From Rust to reality: The hidden journey of fetch_max
That info is included later in the article:

> PS: After conducting this journey I learned that C++26 adds fetch_max too!

bilkow··on Protobuffers Are Wrong (2018)
My understanding is that asymmetric fields provide a migration path in case that happens, as stated in the docs:

> Unlike optional fields, an asymmetric field can safely be promoted to required and vice versa.

> [...]

> Suppose we now want to remove a required field. It may be unsafe to delete the field directly, since then clients might stop setting it before servers can handle its absence. But we can demote it to asymmetric, which forces servers to consider it optional and handle its potential absence, even though clients are still required to set it. Once that change has been rolled out (at least to servers), we can confidently delete the field (or demote it to optional), as the servers no longer rely on it.

bilkow··on Why Nim?
(not your parent commenter)

> For me, programming is about corralling motivation more than anything else. Rust saps my motivation is ways that Zig does not.

Yes, agree with you a lot! Maybe our brains are just wired differently, for me, no other language (until now) gives me as much motivation as Rust, as it's type system and docs make me feel really good.

> Zig is simply a much smaller language than Rust. I use Zig because my brain isn't big enough for either C++ or Rust.

Disclaimer: haven't really tried Zig yet. IMO you don't need to keep the whole of Rust in your brain to use it, I usually can just focus on the business logic as if I make a stupid mistake, the compiler will catch it. That (and the type system) is what makes me more efficient with it than other langs. I also stay clear of lifetimes unless I really need them (which is almost never for application code). An extreme example of the opposite is C, where I need to take care about anything I do as it will just accept anything (e.g. auto casting types) so I need to be vigilant about everything.

All of that said, there are patterns that will just be harder to reason about in Rust, mostly with self-referential things, and if you area already used to using them a lot, this can be a hassle. If you're used to smaller data structures and data-oriented programming, it will be a lot easier.

This is not trying to convince you or anyone else, just showing a different perspective. If you feel better with Zig, use it! Everyone has their own experience.

bilkow··on Blurry rendering of games on Mac
> though I don't think you have to launch games through the steam app, but they try to make it convenient to do so.

It depends on the game, they do offer some kind of DRM, which requires Steam to be open when launching the game, but it's optional for the developer to use it or not. See https://www.pcgamingwiki.com/wiki/Digital_rights_management_...

PCGamingWiki also usually has information on whether the game is DRM-free or not, e.g.: https://www.pcgamingwiki.com/wiki/Hades#Availability

bilkow··on Bluesky: Updated Terms and Policies
Not defending the verification stuff, but interestingly Newgrounds has considered that.

> If your account is more than ten years old, we will assume you are currently over 18.

https://www.newgrounds.com/bbs/topic/1548205

bilkow··on Epic Recall, Epic Fail
It is common in geopolitical discussions to refer to the nationality when talking about the interests of the country in general and/or the ruling party e.g. "Obama was aligned with the Germans because of XYZ." Also consider that the author is apparently Taiwanese, so their English may not be native.

> The Republic of China and The People's Republic of China

The party in power is also called the Chinese Communist Party, which literally has Chinese in its name (and is referred by the comment).

I understand you had a different interpretation at first, but I invite you to reconsider. It also goes along with HN's guidelines:

> Please respond to the strongest plausible interpretation of what someone says, not a weaker one that's easier to criticize. Assume good faith.

bilkow··on Samsung embeds IronSource spyware app on phones across WANA
We do, but I don't see it happening anytime soon. Many banking / government apps and even some games use the Play Integrity API, which AFAIK is starting to require remote attestation for newer devices.

As it's usually not viable to opt-out of those, the solution seems to be having a separate device.

bilkow··on Open source can't coordinate?
I got curious and found a ton of red flags in about half hour...

Summary of the drama that resulted in Xlibre:

- https://discuss.pixls.us/t/weekly-recap-8-june-2025/50638

From the README at https://github.com/X11Libre/xserver:

> This is an independent project, not at all affiliated with BigTech or any of their subsidiaries or tax evasion tools, nor any political activists groups, state actors, etc. It's explicitly free of any "DEI" or similar discriminatory policies. Anybody who's treating others nicely is welcomed.

This exchange between him and Torvalds in 2021:

- https://lkml.org/lkml/2021/6/10/903

- https://lkml.org/lkml/2021/6/10/957

bilkow··on GOG's Preservation Program Is the DRM-Free Store Refocusing on the Classics
Altough incomplete, PCGamingWiki has info on whether games work without steam DRM. AFAIK they are usually tested by moving the game folder and running without opening Steam.

https://www.pcgamingwiki.com/wiki/The_big_list_of_DRM-free_g...

e.g. https://www.pcgamingwiki.com/wiki/Hades

bilkow··on Creating an empty iterator of a certain type in Rust (2018)
> It's complexity for its own sake.

Hey, let's talk about the complexity here, I think there's reason for it! They wanted to use static dispatch so that the return type has more information on the logic being returned and is able to optimize better while also avoiding allocations at all. Reduced the original example (that doesn't compile) here: https://play.rust-lang.org/?version=stable&mode=debug&editio...

If you want to do what other languages do, you can just use dyn Trait (trait objects, dynamic dispatch) instead of impl Trait (concrete objects, static dispatch). It's less efficient and requires allocations, which is what other languages usually do, but all you have to do is wrap it in a Box. Example: https://play.rust-lang.org/?version=stable&mode=debug&editio...

If you want to use static dispatch, then you have to look a bit more into it, there's a lot of discussion in the comments already but for this specific case Option's into_iter + flatten works fine, while Either is a more generic solution or you could even implement your own iterator for this use-case if you wanted to.

I'd say the complexity here comes from the explicitness and being forced to make a choice: Don't care about performance? Ok, just wrap it in a Box and call it a day. Wants to take the most out of it? Then you'll have to look deeper into it.

bilkow··on Slackdump
I think there's a lot of personal preference here, but for me "projects that are a natural fit for a scripting language" would be one-off 100-line scripts.

I think for a CLI tool such as this with 38 kloc and used by others, I'd personally be more productive using a strongly typed language (such as Rust) as the compiler will catch many mistakes before I run it.

But as I said, there's a lot of personal preference... I don't know how much that also applies to Go and you definitely could write this in Python if you wanted to (although I'd use mypy for maintainability).

I also agree with your parent, familiarity and just liking to use the language are big factors when choosing a language, even more for side projects.

bilkow··on Firefox Sidebar and Vertical tabs: try them out
Also on Firefox you can hold CTRL+T / CTRL+W to open / close multiple tabs, CTRL+Click or SHIFT+Click to select multiple tabs at once and then e.g. move them to another window or close them, etc.

I always assumed Chrome also had all of these features, including scrolling, etc.

bilkow··on Embedded Swift [video]
Yeah, I generally agree with you, but I don't see how the parent comment implies any of that
← PreviousPage 2 of 6Next →