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

I find it hard to believe the people who built Go, coming from designing Plan 9 and Inferno, would build a language where it is difficult to swap out a component.

I have this feeling that in their quest to make Go simple, they added complexity in other areas. Then again, this was built at Google, not Bell Labs so the culture of building absurdly complex things likely influenced this.


The same people refused to support generics for several years, and the current design still has some issues to iron out.

Go also lacks some of Limbo features, e.g. plugin package is kind of abandoned. Thus even though dynamic loading is supported, it is hardly usable.


> . There was a project regarding dropping telephone pole sized pieces of metal from space as an offensive weapon

I remember it was nicknamed "Rods From God". Kinetic energy weapon using 9 ton tungsten rods dropped from an orbiting platform. https://en.wikipedia.org/wiki/Kinetic_bombardment


> before we can terrorize Earth.

Before?! We're already doing a great job at it!


In preschool our teacher brought in a jar of cream that was passed around and everyone took turns shaking it. Then we had buttered bread. I believe this was done for thanksgiving.

Ok we did this in elementary school. They gave us crackers and let us spread the butter we made on it and we ate them. I still have no idea as to the purpose of this exercise.

It was memorable and you learned something at least. :)

We did a similar exercise to make ice cream during summer camp in the South.

So where does this leave open source operating systems?

I also want to know how they think this assinine system will guarantee no one can lie to the computer about how old they are.


Debian, Fedora et al. will just comply. It's really no problem to do so - it just requires an age input on the user creation page, and for that to be saved somewhere. Porn apps mustn't work if the user is under 18, but I don't think they distribute porn apps.

If you build your own operating system out of open-source parts, then of course you don't need to comply with consumer product law, since you're not making a consumer product.

If you import an operating system from outside of the US and sell it, responsibility for compliance is on you, like any other imported consumer product.


Debian has not signaled compliance and current discussion on the mailing list seems to be against it.

NixOS does not plan to comply.

OpenBSD will not comply.

Gentoo devs don’t seem to believe it applies to them since they technically just provide a blueprint for you to build a system from source.

FreeBSD seems to be leaning against compliance.

System76 PopOS seems to be willing to comply with California but no states that require attestation like the NY bill.

Omarchy is aggressively noncompliant.

There will be many options.


I wish the widespread fervent hatred against the "user is over 18" checkbox was applied to, like, Cloudflare captchas, or something that actually matters.

Cloudflare does not force FOSS devs to implement changes and accept potential legal liability, while opening the door to future legislative spec-by-fiat. There is a world of difference.

yes... it did? If you're a FOSS browser developer, Cloudflare forced you to pass Cloudflare browser fingerprinting and implement enough JavaScript to pass the CAPTCHA. Which is much harder than an over-18 checkbox.

Legally? Like through the law? If I don’t pass CAPTCHA I get fined and/or go to jail? Wow that sucks!

No you just can't pay your rent online and you get evicted

I would not want any open OS to comply. Time to stand up.

They don't matter. They'll be outlawed soon enough. Their ultimate objective is to make it illegal for a computer to run unauthorized software. One day they will make it so it's illegal for a computer to boot into a non-government approved operating system.

If there's any good intentions in the bill, I guess the end-state must be having a way to mark an account as a kid's account and have that user's access limited. This is what old parental controls look like on phones that can be handed off to kids.

That's literally what the bill says

Yeah, and the constitution literally says that many things shouldn't be happening.

Pens are a weapon for more civilised times than the current one.


Then why argue anything at all?

I've been hearing the term in IRC and discords for about a year or more already.

I get that it can seem childish but when you compare that to the indolent people who are demanding AI, it cancels out.


You just described the current American administration.

> Why Americans are not rioting in the streets is beyond me.

I'm really am tired of reading this nonsensical hyperbolic line. No one is hurting enough to care to take to the streets. You know this, I know this, we all know this. Please stop repeating it.


Compared to other developed countries many tens of millions of Americans have a much worse quality of life.

Part of the problem is they just don’t know it.

How much paid maternity leave do you get? Paid time off to move house? How’s your healthcare when you take a few years off work to raise your kids, or learn to paint?

These are basic human rights for many around the world.


I would wager that someone as selfish as narcissistic as he is would have been oblivious and unconcerned with the day to day affairs of the plebeians unless it effected his income.

From my understanding, memory training is/was a closely held secret of memory makers and EDA IP houses who sold memory controller IP to all the chip vendors. This in turn makes fully open motherboard firmware almost impossible as no one can write code for memory training to bring up the chip. That piece of code has to be loaded as a blob - if you can get the blob.

I think you're mixing different concepts. JEDEC doesn't define DDR4 training procedures so there isn't a secret that's being withheld. Everyone who implements a DDR4 controller has to develop and implement a training procedure to meet the specifications.

On a DDR4 motherboard the training would occur between the memory controller and the DDR4 RAM. The proprietary blob you need would include the communication with the memory controller and instructions to handle the training for that specific memory controller.

There are several open source DDR4 controllers in different states of usability. They have each had to develop their own implementations.


What you're saying is true, but the OP has a point too.

What's basically happening is that as things get faster the lifetime of training data decreases because the system becomes more sensitive to environmental conditions, so training procedures which were previously performed earlier in the manufacturing cycle are now delegated to the runtime, so the system migrates from data to code.

Previously, you or the vendor would provide tools and a calibration system which would infer some values and burn a calibration, and then load it during early boot. More recently, the runtime is usually a combination of a microcontroller and fixed-function blocks on the DDR PHY, and that microcontroller's firmware is usually supplied as a generic blob by the vendor. The role of this part of the system keeps growing. The system has gotten a bit more closed; it's increasingly moved from "use this magic tool to generate these magic values, or read the datasheets and make your own magic tool" to "load this thing and don't ask questions."


The parent commenter was mixing two concepts together.

DDR4 training is not defined. It’s vendor-implemented.

If you want to work with a vendor’s memory controller chip, you need the documentation for that chip.

So the secret isn’t memory training (the topic of this article) it’s just proprietary chips on motherboards. Memory training is only one of many things that have to be reverse engineered or known for an open firmware.


> environmental conditions

Shouldn't it be: no more negligible manufacturing / assembly tolerances instead? I mean, when I turn PC on, the temperature of all components is 20 C, the training is done at almost this temperature. But then the PC can work for months with much more higher memory controller and DRAM chips temperatures.


I remember listening to Oxide & Friends (or it was On the Metal?) podcast few years ago and had an impression they wrote their own training code.

It's a more available option on AMD chips, intel AFAIK kept it a secret blob.

Ultimately oxide got to run customised firmware deal and AFAIK even got custom PSP firmware


It is usually the IP licensing, as spinning a board isn't always complex.

Note, it is actually easier to profile a known dram chip set bonded to the PCB. A lot of products already do this like phones, tablets, and thin laptops.

Where as SSD drives being a wear item, should be removable by end users. =3


> as no one can write code for memory training to bring up the chip

Surely someone can do it, but it's probably too niche to do. The licensing fee is probably cheaper than corporation spinning the board and reverse engineer it and for hobbyists lower tier memory likely was fine.

That said given that such technology has become so much more accessible (you can certainly create FPGA board and wire it up to DDR4 using free tools and then get board made in China), it's probably a matter of time someone will figure this out.


Why do we need training?

Because DDR3/4/5 dies are made to a price with half to three quarters of their IO pins shared between the dies in parallel on a rank of a channel, and for capacity often up to around 6 ranks per channel. E.g. high capacity server DDR4 memory, say on AMD SP3, may have 108 dies on each of 8 channels of a socket.

So if you can move complexity over to the controller you can spend 100:1 ratio in unit cost. So you get to make the memory dies very dumb by e.g. feeding a source synchronous sampling clock that's centered on writes and edge aligned on reads leaving the controller to have a DLL master/slave setup to center the clock at each data group of a channel and only retain a minimal integer PLL in the dies themselves.


You need to train whether you're on one die or 100. It's about your per bit skew and PVT

Yes, I was just pointing out why we choose to make the memory chips so fragile/dependant on the controller doing all the magic training for them.

Well no, your comment answered that we need training because the dies are made cheaply. But no amount of money would prevent the need to train out static and dynamic delays. If it wasn't in the controller it'd be in the memory and the question of why it's needed would still be relevant.

Because when you change a PCB trace from 0 to 1 or 1 to 0, the slope of the signal as it changes from gnd to v+ (the signal voltage) or v+ to ground isn't perfect, and that slope is highly affected by the various pieces of metal and silicon and fiberglass that make up the board and the chips. The shape and topology of the PCB trace matters, as do slight imperfections in the solder, PCB material, the bond wires inside the chips, etc. These effectively create resistors/capacitors/inductors that the designer didn't intend, which effect the slope of the 0->1 1->0 changes. So for these high-speed signals, chip designers started adding parameters to tweak the signal in real-time, to compensate for these ill effects. Some parameters include a slight delay between the clock and data signals, to account for skew. Voltage adjustement to avoid ringing (changing v+). Adjusting the transistor bias to catch level transitions more accurately. Termination resistance adjustment, to dampen reflections. And on top of all that, some bits will still be lost but because these protocols are error-correcting, this is acceptable loss.

This is how people were able to send ethernet packets over barbed wire. Many bits are lost, but some get through, and it keeps trying until the checksums all pass.


A large section of the article is dedicated to the answer for this question.

Imprecision in manufacturing (adjust resistor values), different trace lengths (speed of light differences for parallel signals), etc... it's in the article.


Because loading XMP profile won't suffice and they have to tune the parameters further to be able to actually run the sticks

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

Search: