skysight-inc/HackerNews huggingface dataset:
With over 600 reorder buffer registers in the Apple M1 executing deeply out-of-order code, this blogpost rehashes decades old arguments without actually discussing what makes the M1 so good.

The Apple M1 is the widest archtecture, with the thickest dispatch I've seen in a while. 2nd only to the POWER9 SMT8 (which had 12-uop dispatch), the Apple M1 dispatches 8-uops per clock cycle (while x86 only aim at 4-uops / clock tick).

That's where things start. From there, those 8-instructions dispatched enter a very wide set of superscalar pipelines and strongly branch-predicted / out-of-order execution.

Rehashing old arguments about "not enough registers" just doesn't match reality. x86-Skylake and x86-Zen have 200+ ROB registers (reorder-buffers), which the compiler has plenty of access to. The 32 ARM registers on M1 are similarly "faked", just a glorified interface to the 600+ reorder buffers on the Apple M1.

The Apple M1 does NOT show off those 600+ registers in actuality, because it needs to remain compatible with old ARM code. But old ARM code compiled _CORRECTLY_ can still use those registers through a mechanism called dependency cutting. Same thing on x86 code. All modern assembly does this.

------

"Hyperthreading" is not a CISC concept. POWER9 SMT8 can push 8 threads onto one core, there are ARM chips with 4-threads on one core. Heck, GPUs (which are probably the simplest cores on the market) have 10 to 20+ wavefronts per execution unit (!!!).

Pipelining is NOT a RISC concept, not anymore. All chips today are pipelined: you can execute SIMD multiply-add instructions on x86 on both Zen3 and Intel Skylake multiple times per clock tick, despite having ~5 cycles (or was it 3 cycles? I forget...) of latency. All chips have pipelining.

-------

Skylake / Zen have larger caches than M1 actually. I wouldn't say M1 has the cache advantage, outside of L1. Loads/stores in Skylake / Zen to L2 cache can be issued once-per-clock tick, though at a higher latency than L1 cache. With 256kB or 512kB of L2 cache, Skylake/Zen actually have ample cache.

The cache discussion needs to be around the latency characteristics of L1. By making L1 bigger, the M1 L1 cache is almost certainly higher latency than Skylake/Zen (especially in absolute terms, because Skylake/Zen clock at 4GHz+). But there's probably power-consumption benefits to running the L1 cache wider at 2.8GHz instead.

That's the thing about cache: the bigger it is, the harder it is to keep fast. That's why L1 / L2 caches exist on x86: L2 can be huge (but higher latency), while L1 can be small but far lower latency. A compromise in sizes (128kB on M1) is just that: a compromise. It has nothing to do with CISC or RISC.
If It Works, It's Not AI: A Commercial Look at Artificial Intelligence Startups
No, I think you do see clients give up. There are certainly more infrastructure maintenance projects in the US than governments are willing/able to pay for. I’m not sure the market can bear much higher costs for construction.
Also on the site itself, because I did not realize that at all! Good to know!

I know that one of my sites is mentioned on one of the services that is not twitter, and not seeing it in the preview results gave me pause.

Nice site otherwise, best of luck!
The Navy has ordered two at a time, and they definitely didn't get a third one free. They did save about 15%, though.

https://news.usni.org/2019/01/31/navy-awards-2-carrier-contr...
Ironically, about the only vehicle that actually does meet all those criteria is a standard bicycle.
Are Nostalgic Video Game Soundtracks the Secret to Insane Productivity?
It is patented according to the article. Lot if guessing here how it could/should work, but maybe someone can track a link to the patent first?
I agree with this, and appreciate your style.
I did, it's not the same literate programming environment like I said. Are we misunderstanding each other?
More like: "What is hunger?", where your last step is the only proposed solution.

The article does contains interesting information, but then seeing that it is only an ad is a bit disappointing.
Flash: you open the page, it plays. There might be one additional click required depending on your browser settings.

This: you open the page but it needs to be downloaded. You download it. You unzip it. You see that it's a Windows executable but you're on a Mac. You open it hoping that wine will run it. It does. You choose your graphics settings. You click OK. It plays.

Though I'm aware that Unity is capable of running on the web, I haven't seen that capability used much.
> In most languages, "religion" will imply an ordered belief in a supernatural entity and set of accompanying practices.

"Religion" isn't a word in "most languages". "Religion" in English and the closely-related terms in closely-related languages may mean (or at least strongly imply)
something like that (though with a god or God, specifically, not merely "a supernatural entity") simply because of the dominant belief systems to which the terms applied in the West (mostly, varieties of Near Eastern Monotheism), but even so they are frequently applied to systems from outside which don't have an "ordered belief in a supernatural entity", such as Confucianism.

> If it does become a synonym, then we'll simply need a NEW word to distinguish between "belief in supernatural entity" vs "no belief in a supernatural entity"

With, again, the caveat that it is more specific (referring to one or more gods, not merely any supernatural entities), we already have such a word, adopted specifically to focus in on that aspect and not the other elements of belief and practice which "religion" typically includes and may sometimes be used to refer to without an identifiable god anywhere in sight: "theism".
For Covid-19 Vaccine, South Korea Says It Can Wait Until the Price Is Right
Why are you both doing this? Those are terms that have been used by real people to describe themselves. There's room for discussion about what they describe, how they should be used, etc... Identity is a hard problem.

But they aren't jokes. You're using them now because they're new and you can get away with it, but could you imagine your same logic in another decade picking on "spicks, fags and niggers" using the same logic. Is that really what you're trying to say? If not, how?
Because people feed those cats, and those cats are having meat to feed more kittens, and less kittens starve?
I'm the one who made the comment, and it was pejorative. By that, I mean it purposefully had a somewhat negative connotation to it. It's the language used in anti-discrimination laws.
It's an outcome of polarization, imo. One side says government spending is evil so don't do any, so the other says government spending is an inherent good unto itself, so damn the costs.
Because it's complete nonsense.

With this logic, I can make a game about the Belgians colonized the Congo, leave out all that business about slaves on plantations, maiming said slaves on plantations for not meeting their quotas etc., portray the Belgians as magnanimous bringers of culture, and then say "oh, well, we had British people involved in the making of the game so it's OK"
Honestly, excess deaths so far are relatively low, 10-20% increased risk of death this year...

https://raw.githubusercontent.com/lettergram/covid19-analysi...

In terms of what that means, if you're 15 - 45; 1 per 1000 people die in a given year.

This year it'll be 1.2 per 1000, for the 15 - 45 age range.[1]

This goes across the board, for 45-64 you're looking at an increase from 1/500 to 1.2/500... etc, etc.

[1] http://www.bandolier.org.uk/booth/Risk/dyingage.html
What makes Ruby so irreplaceable? Why struggle to make it something it's not when you could pick an existing statically typed language and build your system?
Also how is Ruby a safe language for financial transactions when an engineer can hijack a running process and change memory without leaving a trace
As I said before, it is a complex topic and there are many difficult questions to answer. But, I think it's more helpful to understand religions as entire ways of life rather than simple affirmations of belief. My observation is that people today define much of their identity by what they say and not necessarily by how they act or what they value. Whether that is what they truly are is again, a complex question.

With Christianity, for example, the history there is immensely complicated. There are perhaps an infinite number of interpretations of Jesus' teachings and actions, many of which place far less focus on belief than on works (actions.) Other groups don't care whatsoever what any organized church says and base their beliefs and actions on traditions or on the Bible itself. Paul, the Catholic Church, Martin Luther, and innumerable others have shaped "Christianity" over the last two thousand years, so to say that the contemporary American definition is all that counts is a bit historically ignorant.

Beyond that, it's also unclear precisely what "supernatural" means in this context.

In sum: it's complicated.
Cats are good people.
France delivered 50% of their nuclear cores (the 900MW model) between 1980 and 1985. It isn’t very good because they will all EOL at the same time. I hope Nixon’s plan would have been to streamline and spread their production, which then becomes extremely efficient, a bit like our P’4 in this graph:

https://commons.wikimedia.org/wiki/File:Chrono-parc-nucleair...
Nor do you ever actually even run all the tests... at least that's how it has appeared to me from my experience!
Yes, from that explanation it sounds like they are equivalent to Rust’s impl return types.

Note that interfaces in Rust are not types, they do not name types. A value cannot have interface type. What happens when you return an “impl” type is that you return some unspecified type, but that type must implement the specified interface.

You could translate the D example to:

trait HasGetValue {
fn get_value(&self) -> i32;
}
fn create_voldemort_type(value: i32) -> impl HasGetValue {
...
}

The “create_voldemort_type” function simply returns a value of unspecified type. As far as I can tell, this is equivalent to the D code, except it doesn’t use type inference for the function type.
> At this point Ruby (which is still slow and dynamic compared to most other faster languages) looks like a sunk cost.

Can you expand on why you think this is?
Could you say more about your workflow? Our platform[0] may suit you:

- Collaborative no-setup notebooks: different images with the most popular libraries pre-installed. See each other's cursors, very useful for troubleshooting, pair programming.

- Long-running notebooks: GPU ready. You can schedule notebooks right from the notebook view so you don't context switch. You can close your browser, disconnect from the internet, or shut your laptop and still see the notebook's execution.

- Automatic params/metrics/model tracking: no boilerplate.

- One click deployment: clicking a button deploys a model and gives you a nice "REST" API endpoint you can invoke.

If you're doing anything related to ML and use notebooks, you probably had the above problems. We're building around Jupyter notebooks because in our experience, our machine learning projects were not held back for lack of slick stylesheets.

- [0]: https://iko.ai
Upvoted.

This is my general rule in life: do what the professionals do.

Of course I have family members who are completely mistrusting of, say, medical professionals, and believe crap on the internet instead.
Illegal firearms components.
Why we're building Forth: A new news platform
"So it wasn't just the AI winter that killed Symbolics - it was the fact that both hardware and software were essentially nostalgic knock-offs of product models from 5-10 years earlier that were already outdated."

I really like this quote and perspective. I think it was a byproduct of period communications - not today's ubiquitous connections.

Essentially it was a very small, even inbred community that talked mostly to itself. "Itself" including associated members at the likes of DARPA. And that was enough to get the funding (and closely related hype) ball rolling. There was little if any feedback from outside the crowd. Even the West Coast was another world to a certain extent.

I'm reminded of XKL - a Cisco founder going into business to (initially) produce modern PDP-10s in the early 90s. Because, you know, that's what the world (even that small inbred world) was waiting for.
Yeah, that's the thing…

> I can't imagine taking a vaccine for covid anytime soon, least of all as the first round.

Well good for you, unless you're a doctor or nurse, you can’t. And by the time you ^are^ eligible, there will be millions of others who have the vaccine, and more data.

Granted, not the months or years of data you usually see with a vaccine, but that’s as abnormal as everything else these days…
Why we shouldn’t fear the future of work
Ok yeah that's a clear need - set expectations that results from other platforms take a few to show up. Thanks for the push to correct
The Slack app is essentially a Chromium browser running the usual web-based Slack. It uses the same amount of resources running in a tab in your browser.

I think there are some UI niceties to the 'app' version but it's essentially the same.

Teams refers to Microsoft's competing product. Like Slack, its desktop app is really just the web version.
The headline is misleading. It should rather be Lobbying firm (that happens to do work for Apple) lobbies on the bill.
Is there any runtime performance gain to be had in the interpreter at runtime when adding types. I understand the benefits to your workflow but is there an opportunity to allow the interpreter to do less work when types are used?
Re:ligatures:

Unless you're programming in something like Brainfuck, ligatures are simply not going to fail because the operators that have ligatures are pretty much universal. The situation of mixing up ligatures and their respective unicode chars is also nonsense, as those characters aren't typable and will only ever be used in strings, so there's no way you'd not know which it is and it's pretty easy to check anyways.

Programming ligatures provide a tangible benefit to many of us, so the author's insistence that they are a terrible idea is simply ridiculous (although, reading through some other articles on the site, not too surprising, as the site is 80% good common-sense advice and 20% poorly explained personal opinions being treated as gospel).
They both use https://codemirror.net/
NuScale just lost a bunch of their backers for their project after announcing several years of delays and cost overruns.

https://www.sciencemag.org/news/2020/11/several-us-utilities...

> announced that completion of the project would be delayed by 3 years to 2030. It also estimates the cost would climb from $4.2 billion to $6.1 billion.

Unfortunately this is a very old story with the nuclear industry: they consistently over-promise and under-deliver. The closer projects get to completion, the more costs grow and the further the completion date gets pushed out. This has been true of most of the recent builds in the US and Europe.

The tech is fine, but there seems to be something wrong with the industry.
And they can't find customers.

Their target price, of $55/MWh, would probably be acceptable if delivered today.

But when you look at hybrid solar/battery projects, we are already getting close to $55/MWh for fully dispatchable energy, that doesn't have to be run 24x7 like nuclear but actually matches the load curve of the grid.

Seriously, there are battery projects being deployed now, attached to solar, with a storage cost of $80/MWh, and energy cost of $20/MWh. Since overnight demand is small compared to daytime, only about half of the energy needs to be stored. That averages out to $60/MWh, today. In 5 years it will be something like $40-$50. In 10 years, when NuScale deploys, the cost of solar+storage will be $30-40/MWh. And it might even get cheaper.

NuScale may be useful for polar locations without much wind, but I don't foresee them having a huge addressable market.
> Killing emacs ends the X session of course, as it's the window manager

If killing Emacs ends the session, that must have a different cause. Killing the WM doesn't usually end the session.
We could remove the Jones Act, causing cargo to be carried by ships with lax (affordable) regulation, or we could get a similar cost and regulation result on American ships by adjusting our regulations to worldwide norms.

It's really the same problem as regulating "dirty" and "unsafe" factories out of the USA. We don't get fantasy-world factories in the USA. We just lose jobs and all control, with the products produced in terrible conditions abroad.

So, do we want to suffer the cost of the regulations? If so, simply keep the status quo with the Jones Act. If not, then deal with the problem directly, and eviscerate the regulations that are making Americans uncompetitive.
This is really great, but RISC CPUs can have microcode too. Nothing stops them from doing that.

The big diff is load/store:

- Loads and stores are separate instructions in RISC and never implied by other ops. In CISC, you have orthogonality: most places that can take a register can also take a memory address.

- Because of load/store, you need fewer bits in the instruction encoding for encoding operands.

- Because you save bits in operands, you can have more bits to encode the register.

- Because you have more bits to encode the register, you can have more architectural registers, so compilers have an easier time doing register allocation and emit less spill code.

That might be an oversimplification since it totally skips the history lesson. But if we take RISC and CISC as trade offs you can make today, the trade off is as I say above and has little to do with pipelining or microcode. The trade off is just: you gonna have finite bits to encode shit, so if you move the loads and stores into their own instructions, you can have more registers.
More like CATstantinople, hoooo boy.
But which one? :)
Scientists Partially Reverse a Cellular Aging Process in Humans
It’s very smart! I have a lot of respect for the hustle haha. The movie is gonna be amazing.
magit

/thread
IPC is, I think, the concept that has been neglected and led to the desire for some kind of really intelligent FFI.

If you have code in Ruby and in Julia that you want to mix together it's probably because both pieces of code leverage the distinct capabilities of those two languages, which have nice capabilities because they accepted very tradeoffs.

Would you really want Julia with Ruby's Number class? It would entirely kill performance. You want it to be an integer maybe, or a double, or sometimes something else. It's going to be application specific is the point, because another user want some different subset of Number's behavior. I don't think there's a shortcut here besides making a very limited or opinionated FFI system.
Unless you live in a cave I'm not sure you'll be able to reduce your exposure that much. I mean you go to the shops to buy food right?

Supermarkets are the largest vector btw
The US debt is denominated in a currency that it is the sovereign issuer of.

The US has full ability to pay such debts, at the cost of inflation.

Large deficits would be fine if the spending were for investments with a high ROI, such as infrastructure or nuclear power.

Indeed, going further into debt for an investment with great ROI makes sense. Regardless of the debt level, a good investment is a good investment. And a bad investment is a bad investment.

Alas, most spending of the US federal government isn't an investment of any type.
Thank you swlkr
ZZ and ZQ take even fewer keystrokes.
I like woodworking because to me it's the opposite of coding.

Software is pretty complex and hard to explain to people. Concepts are abstract, changes are incremental and it's never really "done". Even if part of it is beautiful, in some short time it'll be outdated and replaced by something else.

Woodworking, on the contrary, is something concrete I can touch and hold on my hand. It has practical uses, people can appreciate it and judge its form and function. If done even moderately right it'll last many years or decades.

It's really rewarding to be able to point at something you've done yourself, mistakes and all, and see it in daily use. The feeling lasts a whole lot longer than "I've refactored this class into something better".
RISC typically means "load-store architecture": load operands from memory to regs, perform operations in regs only, store results back to memory.

CISC refers to old-school, programmer-friendly, addressing-mode-laden ISAs. Add D0 to the address pointed to by A0 plus an immediate offset and store the result back to memory, that sort of thing.
There was definitely some general suspicion when we first introduced Sorbet. However, there were also some early adopters who didn't mind the syntax but really wanted the benefits. That's why we didn't push for types adoption, we allowed teams to adopt (or not) at their own pace. Once people saw the benefits, they wanted more of it. Syntax also stopped being a huge concern.

Quoting from the blogpost:

> - Developers get used to Sorbet syntax over time

> ...

> Our main observation is that developers enjoy Sorbet more as the typing coverage increases.

On the editor integration, the funny thing is that VSCode is the only editor that needs a special extension to integrate with Sorbet. The way Sorbet supports editors is via the built-in Language Server Protocol (LSP) mode which can be used with any LSP plugin for any editor. I know people who are using it with Vim, Sublime Text, etc. Integration is, in a nutshell, running `srb tc --lsp` as a subcommand and piping data in/out via stdin/out. Our tool Spoom actually uses the same LSP mode to provide extra developer tools and analysis on top of Sorbet.
What makes millions of lines of code and decades of knowledge irreplaceable?

Is there any language or ecosystem that can protect against a rogue employee?
Which has always felt like such an unusual characterization.

I've read a ton of philosophy papers and books.

Only rarely does one come across a reference to Plato in modern-day writing and theorizing. Whereas Aristotle crops up constantly.

Plato was the first well-known philosopher, but honestly, none of his ideas are particularly relevant today. Whereas Aristotle really was so prolific and practical that I'd argue this quote only becomes true if you substitute Plato with Aristotle.
> I think a pervasive theme in US infrastructure (and why it's expensive) is that we've gotten out of practice of building. I think it's the deeper "why" to this issue.

When it comes to nuclear, that's a problem the world over. Out of practice of designing as well. Look no further than the mess that is the EPR. On its face it seems like a boondoggle, but it makes a lot more sense when you look back at the history of nuclear construction: from 1971 to 1993, France was continuously building plants, first the 34 900MW CP-series (1971 to 1988) then the 20 1300MW P-series (1978 to 1993). The CP-series took 5-6 years to build and the P-series a bit more (6-7). From the mid-70s to the mid 80s, there were a dozen plans being built at any time, and they were being completed.

Then came the N4, that thing had serious teething issues, the first model started construction in 1985 but took 12 years to complete. By the time the 4th was completed, it was down to 7 years. But the 4th was the last N4 to be built. It's unclear to me whether the N4 slowdown was intended all along or whether the teething issues made them take a look at construction and pump the brakes, but in the space of 5 years the country went from building 12 plants at a time to building 5, then 4, then 3, then 2, then 1.

N4 at least overlapped some with the tail end of the CP-series and the middle of the P-series, but the first EPR construction was started in 2007, 5 years after the last N4 (Civaux 2) was completed. I can't even imagine the loss in institutional knowledge over that span.