I've seen fake Apple chargers in local shops recently, with complete Apple packaging, "made by Apple in California" etc. and only detectable by close inspection of the details, specs not matching any Apple product, device info reported electronically that doesn't match any Apple specs, and the tiny inset writing not making sense when looked at under magnification. So that sounds plausible to me.
Fwiw, in all my Ghostel updates recently, the Zig module failed to compile, with an error message from Zig about a line in the module source. I have a fairly up to date Zig installed via Homebrew.
I didn't have time to fix it so downloading the binary module has been the only option.
I had the same problem with vterm when I first tried it. The C module failed to compile, with a compiler error about a line in the source. As there was no downloadable binary module I fixed that one.
In some business, political and legal roles, we deem certain structural relations to be a conflict of interest regardless of what people on those roles actually do..
The mere potential for excessive improper influence arising from the structure of their relationships and roles is what creates the deemed conflict.
As the owners of a company making substantial profit like Mullvad, you always had the potential capability to financially influence political outcomes on a scale which most your customers cannot, in ways that may seriously harm some of your customers and to be potentially against the stated mission of your company.
I think the relationship between running a company with an openly advertised public mission, or even an implied mission in the minds of customers, while in another role (wealthy private citizen) being able to make a substantial material action against the same mission, should be recognised as inherently a conflict of interest. But obviously it's one we can't avoid, as long as we allow people to get rich from a mission-driven company.
What we can do, is recognise that if someone actually takes a large material action against the company's mission, then they have gone a step further and demonstrated the conflict of interest.
We generally favour free speech, including political donations. But when the money for very large political financing comes mostly from customers who, by virtue of the advertising and marketing of the company's mission, are led to believe they are supporting the company's mission?
In my view, at that point the customers are being tricked into paying for something while their money is paying for something else which opposes the thing they thought they were funding.
At the least, it should be dealt with in a similar way that conflicts of interest are dealt with when, for example, directing multiple companies: By making sure everyone knows, so other people are able to consent or not on the major conflict issues those other people might have a view on. The analogy for customers is their consent shown by their informed decision to become or remain customers.
In Mullvad's situation, that would mean Mullvad should explain to customers, embedded clearly within it's public marketing of the company missions and values, that one of its current major owners receiving customer funds by way of profit, is the main financier of a political party which sponsors remigration in Sweden. Because that is clearly a thing some customers care about when evaluating whether to pay for Mullvad's services from now on. You know that, I know that, so there's no legitimate excuse for not letting customers who would care know.
Then, as you said, customers will be free to choose.
> What we can do, is recognise that if someone actually takes a large material action against the company's mission, then they have gone a step further and demonstrated the conflict of interest.
As far as I understand Daniel doesn't believe his donation materially harms Mullvad's mission. I am undecided and need more information. I highly doubt he would donate if he believed it would be antithetical to Mullvad's mission, given that the company is founded on our shared values around privacy. I'll ask him.
I take my choice of VPN very seriously, and have used Mullvad for a long time. But now I cannot help but wonder whether the principles the two of you founded Mullvad on, to quote you from above: "because of our political convictions about free speech, free press, privacy, mass surveillance and censorship" are more important to Daniel than the views of his party.
He clearly is willing to spend large sums on the party's views, and if he can use his influence and access in Mullvad to achieve his party's stated goals, will he?
It is asking a lot to trust someone who espouses what he does to maintain Mullvad's founding values, and not to exploit Mullvad in pursuit of ideas he values at a very high monetary level.
I have zero confidence someone supporting what he does and thinks the way he does will protect my traffic, and I sadly cannot use or recommend Mullvad any longer.
> if he can use his influence and access in Mullvad to achieve his party's stated goals, will he?
Not a chance. He is probably the most principled individual I know. Consider our consistent refusal to use Mullvad's platform to promote anything but messaging around free speech, free press, mass surveillance, censorship and privacy. Or our consistent refusal to sell to the horde of venture capitalists, private equity and competitors who have approached us through the years. We're doing this for a small set of political issues, on which we share values.
> It is asking a lot to trust someone who espouses what he does to maintain Mullvad's founding values, and not to exploit Mullvad in pursuit of ideas he values at a very high monetary level.
I'm biased, and have more information than you, but I disagree. We have a 17 year track record.
> I have zero confidence someone supporting what he does and thinks the way he does will protect my traffic, and I sadly cannot use or recommend Mullvad any longer.
Unfortunately SLAAC doesn't force upstream to provide a /64 universally.
Some ISPs are reportedly giving out a /128, and SLAAC works adequately with a router performing IPv6 NAT, so those ISPs don't see a problem.
Mobile phone as WiFi access point is another common way people access the net nowadays. I've occasionally seen permanent installations, with a phone taped to a window. I've never seen a mobile phone AP offer IPv6 to clients, but if they do they have to use SLAAC-compatible IPv6 NAT in that situation.
> Some ISPs are reportedly giving out a /128, and SLAAC works adequately with a router performing IPv6 NAT, so those ISPs don't see a problem.
Wow, that’s diabolical. Presumably these routers are some custom CPEs then? I don’t even know whether regular home routers support NAT66.
> I've never seen a mobile phone AP offer IPv6 to clients
I’ve only even seen it work without NAT when there was any v6! Usually the phone gets a /64, and there is a bit of trickery involved to make that shareable to other devices (NDP rewriting), but it works pretty well.
> I've never seen a mobile phone AP offer IPv6 to clients, but if they do they have to use SLAAC-compatible IPv6 NAT in that situation.
iPhone does that, and I’m pretty sure I’ve seen Android doing the same. The phone keeps a single /128 from the /64 assigned by the mobile network on its mobile interface and the re-assigns the /64 on the WiFi interface. No NAT is involved.
Any ideas why Nim seems missing from job and contract boards? Although it's niche, it doesn't seem that obscure compared with countless other niche things I see advertised.
I really enjoyed programming in Nim professionally, and got to know it well. But I've literally never seen a job ad which mentions Nim since then, except at the company I already left (Status), so that's not really an option.
After realising there's no work in it, I struggled to justify using Nim in new projects including personal projects, even though I like the language.
If anyone's reading this and looking to hire someone who knows (or rather, knew) Nim well enough to do quite advanced work in it and doesn't need training, please do drop me a line :-)
It's a very scalable and almost fun task once you get into it.
Alternatives to VMware can run VMware VMs almost immediately, by translating the configuration and with only a few (or sometimes no) changes to the guest. Usually those changes are scriptable. I've done it a few times, moving between VMware and KVM of Windows guests pretty much just worked; the rest was optimisation, i.e. guest driver changes, etc.
Live migration is not realistic between different hypervisors, but a very short downtime per VM is realistic if the new hypervisor can adopt the old disk images directly, which some can. If you want, you can convert formats in the background while the VM is running on the new hypervisor. E.g. KVM and things built on KVM can do all these things.
So to each guest, it looks like a quick reboot with a quick hardware upgrade.
If that's coordinated properly, with a generic HA or Kubernetes setup, there's absolutely zero service downtime (if there are no serious mistakes), as it's just nodes within a cluster taken down one at a time while the others keep the services running, and state migrates among the nodes which are live.
Most of the things you'll change when migrating are the same for large numbers of VMs that are configured the same way except for their disk images, and easily minor things like MAC/IP. So after you've verified a small number, you can go right ahead and script the migrations for another thousand VMs, even doing them in parallel.
You don't need to migrate all VMs at the same time, and you shouldn't do that anyway. So the temporary hardware / cloud cost can be in the low single-digit percentage (for a few weeks to months at 40k VM scale, a few hours to days at 10 VM scale). You probably have some slack in there already, though, so might not need any additional hardware.
char FAR *p;
char FAR *mem = farmalloc(65536);
for (p = &mem[65535]; p >= &mem[0]; p--) {
dostuff(p);
}
Nice one.
To be fair to Windows, good C courses should still teach this, but I'm not sure if they do :-)
It's UB to set a pointer to before the first element of an array, or after the last element plus one. So, if it knows the call to farmalloc/malloc returns the start of an object, a modern C compiler on a modern architecture may, in principle, optimise the above to an infinite loop.
I've seen something similar on architectures (long ago) where a zero-bit-pattern pointer was a valid memory address you might actually access. Of course p-1 is not less than p when p is zero.
None of my college CS courses used programming languages that featured FAR pointers.
The above example would cause an infinite loop on Win16's seg:off far memory model, but compiling on Win32 would not cause an infinite loop.
Problem is that far pointers only affect the offset, not the segment. So decrementing a 0 value offset would just wrap around to 0xFFFF and the segment would stay the same, so you're going from mem[0] to mem[65535] not mem[-1].
My point is the example code has a generic C bug, not depending on FAR, which is why it should be taught in good C courses.
Although the code worked on Win32, and works on most modern C compilers, it's not guaranteed to work on modern C compilers, especially with aggressive optimisation turned on.
I'm explaining why the infinite loop actually occurs for those who haven't encountered the problem.
The problem would happen for an array whose beginning element starts at offset 0 for a particular segment and an iteration stop condition that uses ">= 0th element" that scans down the array. I used a 64K allocated array to ensure that the array base would match offset 0.
Problem would also occur if the end of the array aligns with the segment limit and the iteration end condition was "<= end element" and the scan moves up the array.
For either situation, the array could be < 64KB. One byte would be sufficient.
Thanks to the Linux kernel's extremely high backward compatibility, and virtually all the libraries being open source, you can ship old or frozen versions of libraries with your application if you have to. You can defensively set shipped binaries as fallbacks in the event the application is running on a newer system that dropped critical functionality, while using the distro version if that's more up to date and still has the functionality. You can do the same for auxiliary programs your application uses.
I agree that sticking to libc is most reliable, if you can. But the experience is poor if you do that for desktop applications.
There's no singular source of truth, but there's a de facto frontier of only a few mainstream distros, as well as upstream heads for your dependencies.
It's extra work, but there are systematic workarounds to the feature drift over time and the tendancy of some open source projects to aggressively deprecate older functionality and older system compatilbilty.
You can, to an extent, automate testing on newer versions of distros to be alerted when something no longer works, and often you can do this before the official distro release date.
Unfortunately even libc is not reliable. Unless it's a static build, Glibc is often broken (with symbol version errors) when trying to run a binary compiled on one distro on another distro, or an older version of the same distro. Static binaries have other problems, though work very well if the application is self contained and isn't a GUI.
One thing that I find works very compatibly, though, is OpenGL / Vulkan binary-compatibility across distros and versions. There was a lot of work done on making libGL something you can link to or dynamically load reliably and take it from there. The OpenGL extension spaghetti is an interesting problem from then on, but that's more to do with the individual user's GPU and GPU drivers, independent of the Linux distro or even which OS it's running on.
> You can defensively set shipped binaries as fallbacks in the event the application is running on a newer system that dropped critical functionality
Not if they're GPL licensed you can't. And that's a headache most commercial people do not want at all when trying to write software that's often for a marginal part of their audience anyway.
Wrong, misleading and possibly FUD. Yes you can ship GPL licensed software with your application, even a proprietary, closed source application.
You have to comply with the GPL terms, but that's easy to do for every library or auxiliary program that you'd link to or call in a Linux distro.
The GPL is designed to support this use case, with it's "mere aggregation" clause making it clear that it's allowed.
The one thing you can't do if you're shipping a closed source application is link to GPL-licensed code (unless there's an special exception clause, or it's LGPL, or it's dual-licensed to allow this). But for this type of GPL library, you can't use the Linux distro's shipped version either. So the GPL constraint makes no difference to the question of whether you can ship a frozen or fallback version with your application in lieu of the distro version.
If there's a corner case the above doesn't cover, I'm not aware of it and I've studied GPL compliance more thoroughly than most people. So I'd like to know about it :-)
You cannot ship features that depend on cgroups v1. You may not ship features that depend on netlink attributes that exist on some distros, not others.
Yes, there are a few exceptions to the Linux kernel's backward compatibility. I've encountered others, but I don't remember which any more. They are quite rare, though.
cgroups v1 might be the most irritating, because it was useful and something a shipped application or service might realistically use.
But a full time hire? The GP's post implies that wouldn't make business sense for them, as even half a day occasionally on it is too much...
>> So your engineers spend a half day installing that in a VM and debugging it, but the problem is in upstream somewhere. The number of tickets with Linux issues keeps growing and each one is taking more time to debug, all for a number of customers that is so small you can’t justify doing it.
Of course an experienced Linux release engineer can do it faster and more reliably. That's probably the cheaper option. But the business still has to decide their Linux customer or user base is large enough, or strategically worth supporting, to justify the cost however they do it.
For many businesses even fractional Linux support is not justifiable for the small number of Linux users and support requests they're unable to handle. Though I can't imagine that being the case for Anthropic!
(Hint: This is one of the things I consult on, if anyone is looking to pay for quality Linux release engineering and platform testing. I have hundreds of historical and current Linux VMs, multiple architectures old and new (esp. x86, ARM and RISC-V), some of them embedded, fairly deep knowledge of how the kernel and libraries work together, and test harnesses. Also I test some compiled applications for portability across other OSes and architectures, including Windows, MS-DOS, MacOS, BSDs, SunOS, HP-UX, etc. going all the way back to the early Unix lineage.)
Demand for DDR3 is up because people who want DDR5 or DDR4 but can't afford either any more are choosing DDR3 and old DDR3-compatible systems to put it in, instead of what they really want.
> My guess is that's a fake one.
I've seen fake Apple chargers in local shops recently, with complete Apple packaging, "made by Apple in California" etc. and only detectable by close inspection of the details, specs not matching any Apple product, device info reported electronically that doesn't match any Apple specs, and the tiny inset writing not making sense when looked at under magnification. So that sounds plausible to me.
reply