Hacker Newsnew | past | comments | ask | show | jobs | submit | geocar's commentslogin

> But you can't take .so files and make one "static" binary out of them.

Yes you can!

This is more-or-less what unexec does

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

For some reason nobody seems to like this sorcery, probably because it combines the worst of all worlds.

But there's almost[1] nothing special about what the dynamic linker is doing to get those .so files into memory that it can't arrange them in one big file ahead of time!

[1]: ASLR would be one of those things...


What if the library you use calls dlopen later? That’ll fail.

There is no universal, working way to do it. Only some hacks which work in some special cases.


> What if the library you use calls dlopen later? That’ll fail.

Nonsense. xemacs could absolutely call dlopen.

> There is no universal, working way to do it. Only some hacks which work in some special cases.

So you say, but I remember not too long ago you weren't even aware it was possible, and you clearly didn't check one of the most prominent users of this technique, so maybe you should also explain why I or anyone else should give a fuck about what you think is a "hack"?


> How would a modern OS implement this?

fwrite only buffers because write is slow.

make it so write isn't slow and you don't need userspace buffering!


Hah no.

Nobody is running TCP on that link, let alone SSH.


Once upon a time I worked on a project where we SSH'd into a satellite for debugging and updates via your standard electronics hobbiest-tier 915mhz radio. Performance was not great but it worked and was cheap.

This is still done today in the Arducopter community over similar radio links.

I haven't heard much about the ArduCopter (and ArduPilot) projects for a decade, are those projects still at it? I used to run a quadroter I made myself a while back until I crashed it in a tree and decided to find cheaper hobbies...

Well at least crashing drones into trees has never been cheaper hahaha. So it's super easy to get into nowadays, especially if it's just to play around with flight systems instead of going for pure performance.

They're alive and well and producing some pretty impressive software.

Crashing your drone is a learning experience ;)

Remote NSH over Mavlink is interesting, your drone is flying and you are talking to the controller in real time. Just don't type 'reboot'!


ELRS?

Nope this predated ELRS by a bit. I wasn't super involved with the RF stuff so not sure if we rolled our own or used an existing framework

You can run ELRS on 900 MHz but the bitrate is atrocious.

https://github.com/markqvist/Reticulum

and RNode would be a better match.


In aerial robotics, 900MHz telemetry links (like Microhard) are standard. And running SSH over them is common practice I guess.

Why do you guess? I wouldn't expect SSH to be used on a telemetry link. Nor TCP, and probably not IP either.

what's wrong with tcp, on a crappy link, when guaranteed delivery is required? wasn't it invented when slow crappy links were the norm?

Because TCP interprets packet loss as congestion and slows down. If you're already on a slow, lossy wireless link, bandwidth can rapidly fall below the usability threshold. After decades of DARPA attending IETF meetings to find solutions for this exact problem [turns out there were a lot of V4 connections over microwave links in Iraq] there are somewhat standard ways of setting options on sockets to tell the OS to consider packet loss as packet loss and to avoid slowing down as quickly. But you have to know what these options are, and I'm pretty sure the OP's requirement of having `ssh foo.com` just work be complicated by TCP implementations defaulting to the "packet loss means congestion" behavior. Hmm... now that I think about it, I'm not even sure if the control plane options were integrated into the Linux kernel (or Mac or Wintel)

Life is difficult sometimes.


It will time out before your packet gets through, or it will retransmit faster than the link can send packets.

> But it is also ebay's right to decide whether or not its computer will allow requests from your computer.

That is dangerous thinking right there: Ebay does not have rights.

Of course ebay may do it anyway, and it may take time for justice to correct things, but it is not Right, nor their right, to violate law even to protect themselves.


> Ebay does not have rights

No, that is the actual dangerous thinking. Ebay enjoys the same freedom of association that you do. Their right to not do business with you is exactly the same as your right to not do business with them. It's the very same right you exercise every time you use an add blocker.


> Their right to not do business with you is exactly the same as your right to not do business with them.

You are incorrect about that. They are subject to the ADA. I am not.

As a publicly listed company they have a tremendous number of other laws that apply to them and not to me.

> It's the very same right you exercise every time you use an add blocker.

Exactly: As an accessibility tool, it is illegal for a company to deny service in the US (and Ebay is a US corporation, despite their Canadian roots) for the use of the tool.


Is ebay denying you service because you have a disability? If not, the ADA is completely irrelevant.

> it is illegal for a company to deny service in the US

No it isn't. If you want to claim this, cite statute.


> No it isn't. If you want to claim this, cite statute.

Robles v. Domino’s Pizza


Yes they do, as they should. Ebay is in an extremely competitive market and you have lots of other options, if you're abusing their service they need to be allowed to ban you. Imagine if Amazon wasn't allowed to ban scammers, or if they couldn't refuse a login portal to a user, allowing infinite attempts. It's important they get to decide whether to deliver a page to you, let alone keep you as a user.

If we were talking about some government-run water utility then sure, it would different, but a private online store can ban users without ruining their life, and if you're opposed to this new rule you should stop using them in protest.


> > Ebay does not have the right ... to violate law even to protect themselves.

> Yes they do, as they should.

No they should not, and I cannot believe you could say any such thing in good faith.

> if you're abusing their service they need to be allowed to ban you

Who said anything about "abusing their service"?

> Imagine if Amazon wasn't allowed to ban scammers

Nobody is talking about banning scammers.

Don't do this: Don't argue in bad faith. You can still disagree and think companies have the right to commit crimes, but you don't have to act like I'm saying something that I'm clearly not!

> but a private online store can ban users

Actually they can't, because we're now talking about users instead of scammers and abusers: There's something called the Americans for Disability Act, and it protects access to storefronts and no a private online store CANNOT ban users who need an accessibility tool.


The "monograph game" as you put it, is not for mere funsies: We say x+y instead of plus(x,y) because the former is obviously better.

Anything can be credited better for some metric and evaluation scale, and what is obvious to one can be surprising to someone else.

x+y is several step away from plus(x,y), one possible path to render this would be:

  x+y
  x + y
  + x y
  + x , y
  + ( x , y )
  + ( x , y )
  +(x,y)
  plus(x,y)
And there are plenty of other options. For example considering method call noted through middot notation:

  x·+(y)
  x·plus(y)
  x·plus y
  augend·plus(addend)
  augend·plus addend
And of course the tersest would be to allow user to define which operation is done on letter agglutination, so `xy` can be x×y or x+y depending on context. The closest things I aware being used in an actual programming language is terms like `2x` in Julia interpreted as "two times x". But I don’t think it allows to configure the tacit operation through agglutination, while it’s allowing to switch first index to be 0 or 1 which is really in the same spirit of configurability over convention.

> and what is obvious to one can be surprising to someone else.

That is how obvious things work. If you were not surprised that a[i:j] and :[a;i;j] are the same (: a i j) then it is because it was obvious to you, and now that you have had it pointed it out to you, you were able to show all of the different other variants of this thing without even being prompted to, so I think you understand the answer to your question now.


I say (+ x y). :P

I was distracted by this too; I programmed largely in CL and emacs from 1999-2014.

I highly recommend reading: https://dl.acm.org/doi/10.1145/358896.358899

One thing that helped me tremendously with k (and then APL) was when I noticed the morphism xfy<=>f[x;y]<=>(f x y).

This wasn't a new idea; it's right there in:

https://web.archive.org/web/20060211020233/http://community....

starting almost the first page (section 1.2). I simply had not considered the fullness of this because a lot of lispers prefer S-expressions to M-expressions (i.e. that there's more study of it), largely (I conjecture) because S-expressions preserve the morphism between code and data better, and that turns out to be really useful as well.

But the APL community has explored other morphisms beyond this one, and Whitney's projections and views solve a tremendous amount of the problems that macros solve, so I promise I'm not bothered having macros slightly more awkward to write. I write less macros because they're just less useful when you have a better language.


> The thing is, these may very well be good for environmental reasons, but it doesn't work if we just start importing from countries that do the opposite.

Everything I have read suggests the EU has controls to "temporarily suspend tariff preferences on agricultural imports from Mercosur if these imports harm EU producers"

https://www.consilium.europa.eu/en/policies/eu-mercosur-agre...

and they intend to "uphold EU animal welfare rules" specifically so consumers aren't harmed either.

https://www.foodnavigator.com/Article/2025/09/04/eu-mercosur...

> The main issue as I see it...

Who are you? If you're an expert, can you share a couple links with some analysis of which part of this agreement will harm the environment, so I know exactly what you're talking about? And not in a vague hand-wavey way with all these weasel-words about "may very well", but an actual thing, because I live here and can vote, but I think this is a good deal, and am genuinely confused why anyone would think it isn't, so if I can get educated here, I don't want to pass up the chance!


Well, who are you? As a voter, I’m already disappointed in Belgium’s lack of a gold standard for the welfare of chicken-laying eggs and male chick grinding. So we’re stuck buying the more expensive organic eggs. Okay, so the partners promise to uphold animal welfare standards. How are we checking? How often?

Are their emissions lower than ours? Do they pollute their waterways? What do they feed their livestock? Was it grown using pesticides we’ve banned, but feed was conveniently laundered through a 3rd-party importer?

I think it’s good to strike deals with new partners, but Mercosur was consistently criticised for not addressing corruption, not helping the already suicidal EU farmers, etc. It went full steam ahead, without any regard for the voters and their opinions.

Source? Dunno, I went to the protests and maybe I’m very biased.


The problem is the subjunctive mood of the word "art".

"Art thou" should be translated into modern English as "are you to be", and so works better with things (what are you going to be), or people who are alive, and have a future (who are you going to be?).

Those are probably the contexts you are thinking of.


Wherefore are you going to be Romeo?


Wherefore is "For what reason or why". Juliet is not asking where Romeo is physically, but wondering why does he need to be a Montague.

So yes you can interpret it as "for what reason or why are you going to be" (this thing she will now explain).


Wherefore is closer to why, or (as taught in literature classes) for what reason. Wherefore is a question, therefore is an answer.


Yes, I am confused about the meaning of "art" in this context.


If you meet someone who understand business, it's going to color your opinion of other people who meet who seem to understand business, until you either learn business or die.

That's how all prejudices work: We're wired up to be afraid and anxious and to share (and communicate) our anxieties to our friends and neighbours. We're trying to help.

The thing is, knowledge; business, economics, and so on, probably can be used to help people, but in a lot of peoples' recent memories, it's being used to harm.

I lost a lot of my teen friends when I "went corporate", but thirty years later I'm reconnecting with some of them, because people change, and we can learn to recognise someone will participate in capitalism for lots of reasons that are not so simple as being "greedy" or "evil".

But to me, I think it is simple: Capitalism is almost certainly unavoidable, so the world could be better if more kind people participate well in it than don't!


So if you get your target to record (say) 1 hour of audio, that's a one-shot.

If you didn't do that (because you have 100 hours of other people talking), that's zero-shots, no?


> So if you get your target to record (say) 1 hour of audio, that's a one-shot.

No, that would still be zero shot. Providing inference-time context (in this case, audio) is no different than giving a prompt to an LLM. Think of it as analogous to an AGENTS.md included in a prompt. You're not retraining the model, you're simply putting the rest of the prompt into context.

If you actually stopped and fine-tuned the model weights on that single clip, that would be one-shot learning.


> Providing inference-time context (in this case, audio) is no different than giving a prompt to an LLM.

Right... And you have 0-shot prompts ("give me a list of animals"), 1-shot prompts ("give me a list of animals, for example: a cat"), 2-shot prompts ("give me a list of animals, for example: a cat; a dog"), etc.

The "shot" refers to how many examples are provided to the LLM in the prompt, and have nothing to do with training or tuning, in every context I've ever seen.


> Right... And you have 0-shot prompts ("give me a list of animals"), 1-shot prompts ("give me a list of animals, for example: a cat"), 2-shot prompts ("give me a list of animals, for example: a cat; a dog"), etc.

> The "shot" refers to how many examples are provided to the LLM in the prompt, and have nothing to do with training or tuning, in every context I've ever seen.

In formal ML, "shot" refers to the number of samples available for a specific class during the training phase. You're describing a colloquial usage of the term found only in prompt engineering.

You can't apply an LLMism to a voice cloning model where standard ML definitions apply.


> If a state actor were trying to intercept traffic (MITM), the last thing they would do is pad the AS path

That's presumptuous: A state actor would (and could trivially) pad the wrong directions to flow traffic down to pops that are not making new announcements (and thus not-implicated by cloudflare and other "journalistic" efforts).

There's also a lot between fat-fingers and deep-state: I know of some non-state actors who do this sort of thing just to fuck with ad impressions. I also doubt much usable intelligence can be gained from mere route-manipulation thing, but I do know that if it is a fat-finger, every techdude in the area was busy at that time trying to figure it out, and wasn't doing their best work twelve hours later...

> most likely a route map intended to manipulate traffic engineering for their own upstream links

...that being said, this does seem plausible: Most smaller multihomed sites I've seen (and a few big ones!) have some kind of adhoc health monitoring/rebalance function that snmp or something and does autoexpect/curl or something-else to the router to run some (probably broken) script, because even if your uplinks are symmetrical, the rest of the Internet isn't, so route-stuffing remains the best way to manipulate ingress traffic.

> Never attribute to malice that which is adequately explained by a missing export filter.

As soon as I peer with two big sites that don't peer directly with each-other, they both gotta let me forward announcements unfiltered across them. Once I have a third, I have a legitimate need to manipulate my own ingress.

The problems with the BGP are legion, and not just one thing that prevents BGP and security from sharing time in a sentence.


> A state actor would (and could trivially) pad the wrong directions

This isn't how BGP works. An AS-PATH isn't the path the traffic will follow; it's the path that this overall announcement has allegedly tranversed and is (one of many attributes) used to judge the quality of route. The next hop tells our peer where they should send the data if they like this route.

Putting more things in the AS path makes the route less attractive. Leaking a new route isn't going to magically make some other route become more preferred.


You're spot on regarding the mechanics. It's important to reinforce that in BGP, AS-PATH length is a cost metric and not a steering wheel.


Actually many networks will prefer routing over a cheap AS path no matter how long it is.


> > and is (one of many attributes) used to judge the quality of route


Lower cost usually means lower quality and is an example of how a long path being leaked can result in traffic flowing away from high quality path to the leaked path.

Not saying that this is the case with Venezuela, just explaining the reality of BGP where path prepends are often ignored.


His claim-- as best as I can read it-- is that B leaking a long-length route changes where traffic is routed, but not to B.

It's possible he's saying something else, but I can't figure out, and he hasn't clarified.


> This isn't how BGP works

This is exactly how BGP works.

https://bgplabs.net/policy/7-prepend/

> Leaking a new route isn't going to magically make some other route become more preferred.

Not magic, but technology can look like magic when you don't understand it.


> > > That's presumptuous: A state actor would (and could trivially) pad the wrong directions to flow traffic down to pops that are not making new announcements

> > Leaking a new route isn't going to magically make some other route become more preferred.

> Not magic, but technology can look like magic when you don't understand it.

Please let me know of the scenario where route A is preferred, undesirable, long-path route B is advertised/leaked, and as a result traffic flows over route C.

I've used BGP for over 25 years, so I'm really curious what you're thinking. Or if you're describing something else, you're being really unclear.

Or if you're just describing withdrawing a route and replacing it with a really undesirable route -- sure, we do that all the time. But that doesn't match this scenario and isn't going to get flagged as a routing anomaly.

> https://bgplabs.net/policy/7-prepend/

You know what's really toxic? Not explaining what you mean and just sending some introductory lab documentation about what the other person has already clearly shown they understand.

I don't even know what you mean by a lot of these things.. e.g.

> > > As soon as I peer with two big sites that don't peer directly with each-other, they both gotta let me forward announcements unfiltered across them.

A straightforward reading of "forward" doesn't work for this sentence. I should not take a route from peer A and send it to peer B. Peering isn't transitive. If I try, it should be filtered.

Peering means to give your own routes (and your transit customers' routes) to someone else. Not your other peers routes.


> Please let me know of the scenario where route A is preferred, undesirable, long-path route B is advertised/leaked, and as a result traffic flows over route C.

> ... I'm really curious what you're thinking

That the actor actually wanted the traffic to flow over route C.

> You know what's really toxic? Not explaining what you mean and just sending some introductory lab documentation about what the other person has already clearly shown they understand.

I think perhaps you and I have different ideas of what is "clear", for example when you said something that is totally covered in introductory lab documentation, I thought it was clear that you did not understand.

> I don't even know what you mean by a lot of these things

That is clear! But confusing! How can you clearly understand but not know what I mean?

> Peering means to give your own routes (and your transit customers' routes) to someone else.

That's exactly what's happening here: Not every transit customer peers with every other transit customer.


> > Please let me know of the scenario where route A is preferred, undesirable, long-path route B is advertised/leaked, and as a result traffic flows over route C.

Yes, but how does advertising undesirable route B make traffic go over route C? This is why I think you're confused.

> That's exactly what's happening here: Not every transit customer peers with every other transit customer.

I am not understanding what you're saying at all. You said:

> > > > As soon as I peer with two big sites that don't peer directly with each-other, they both gotta let me forward announcements unfiltered across them.

This is the thing you are supposed to never do as a peer, and the thing that I have a whole bunch of filtering to prevent my peers from inadvertently doing.

Are you misusing the word "peer"? It's hard to talk about BGP and routing policy without using these words correctly.

I think I'm going to give up here.


> This is why I think you're confused.

I think you're confused.

> I am not understanding what you're saying at all.

And that is why; You seem to have a very strong opinion about something that you don't understand "at all" and frankly I cannot understand how that can work.

> This is the thing you are supposed to never do as a peer

So you say, but that's what I did when back in the early 2000s, and that's what the parties in the news were doing, and if you're not totally lying to me, you know this because it's the default in BGP, that's why you would say you need to:

> I have a whole bunch of filtering to prevent my peers from inadvertently doing.

because that's how BGP works. Duh.

> It's hard to talk about BGP without using these words correctly.

and I am flabbergasted you continue to persist at it, when I have even offered you "introductory lab documentation" to help.


Peering means "give our downstream customers' routes plus our own routes; receive the same from them".

Transit means "give our entire table, receive their routes plus their downstream customers routes".

You don't give one peer's routes to another. You filter to make sure you are not doing this. They hopefully filter (using data from RIRs) to make sure you're not doing it. If both parties screw up the filtering, you "leak routes" like we're discussing here.

This has been standard practice for peering since at least 1997. It is codified, among other places, in RFC7454.

> And that is why; You seem to have a very strong opinion about something that you don't understand "at all" and frankly I cannot understand how that can work.

Do you operate an AS? Are you a peering contact? I mean, I only do it mostly for funsies now but for quite awhile that was part of my job. :P

Also, still seeking an answer to this question:

> > > Yes, but how does advertising undesirable route B make traffic go over route C [that previously went over route A]? This is why I think you're confused.


> Do you operate an AS? Are you a peering contact?

> I mean, I only do it mostly for funsies now but for quite awhile that was part of my job. :P

I'm retired now. I wrote some about my experiences on HN a long time ago:

https://news.ycombinator.com/item?id=18535518

https://news.ycombinator.com/item?id=2727993

I set up multihoming in the US (going through ARIN assignment for ASN and PI) in the early 2000s and for another larger company in the UK (doing the same same but different) in the early 2010s.

> Also, still seeking an answer to this question:

Not sure what to tell you. I've answered this within the context of the news article, if you're asking specifically what kinds of configurations do that they're the kinds that are in that "introductory lab documentation" and if you're not overstating your credentials you should be able to understand.


OK, so you've never actually been involved in peering between providers. That explains things.

If you are buying transit for multihomed site, you just mostly need to worry about advertising your few local routes and receiving a table.

These words mean specific things in a provider environment. Peering between providers is not transitive. You should not give a peer's routes to another peer-- else you are offering to provide transit to that peer.

None of the three parties involved (the peer the route came from, the peer the route would go to, or you), generally, want this.

> As soon as I peer with two big sites that don't peer directly with each-other, they both gotta let me forward announcements unfiltered across them.

So -- this is true for neither scenario. If you buy transit from two people, you don't want to "forward" routes between them. Likewise for two peers. You only want to pass on your own routes, plus routes for your downstream customers or to your downstream customers.

The other topic that caused confusion: leaking a route to somewhere won't change where traffic goes unless that new leaked route wins. If it wins, the traffic will come to you (regardless of AS path). If it doesn't win, the existing route will still be used.

I'm retired-ish now, too (now I'm mostly a high school teacher for the funsies). But if you find yourself with BGP infrastructure in HE.NET Fremont, or somewhere that can peer with FREMIX, or somewhere that can access KCIX, feel free to send me a peering request. I currently have 2 direct upstream transit providers and 55 peers across 3 sites and export 6 prefixes plus 2 downstream prefixes :P


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: