skysight-inc/HackerNews huggingface dataset:
> No, that's no true. Tracing GC is mainly O(f(live stuff)), not O(f(dead stuff)), so there is basically no problem making lot's of garbage if you don't have any exotic latency requirements.

That's true for copying generational garbage collectors. You only need to copy the live stuff and forget everything else. But in e.g. a mark-sweep collector, sweeping dead stuff takes time. In particular, e.g. Chromium's Oilpan can take a long time in the sweeping phase, when there are lot of dead objects.

But when there are a lot of microallocations, you also have a lot of live objects, which could otherwise be just a single object in the case of e.g. big arrays.

>> Another reason is eliminating unnecessary pointer indirection, which helps make sure that instead of loading data with two MOVs from memory polluting the cache, you need only one.

> Uh, that is locality, what I started with, no?

Hmm, seems I highlighted the wrong aspect. It's not just locality, but also size of the data you're dealing with. Those pointers take space. Another aspect of it is that arrays of unboxed elements have more predictable access patterns. Iterating over an array of unboxed elements is friendly to cache prefetching. CPUs recognize this (linear) pattern. With boxed elements and a compacting garbage collector locality may be fine, i.e. elements of the array may be close in memory, but the order in which you fetch elements is pretty random. When the cumulative size of the elements of the array is significantly larger than 64 bytes (the usual size of a cache line), then you're going to be prefetching the wrong regions of the array. There are situations where the order is going to be right, because e.g. the elements were created in the same order in which they are in the array, but that will be destroyed after some sorting, filtering or whatever.
> The world is pretty brutal and liberal democracy is a value shared by a minority of humanity. If liberal democracy wants to survive it sometimes has to defend itself. The minimum it needs is an army to protect its people.

Yes, I agree to a large extent. Most of the world's strong extant states were forged in war (or is a quasi vassal state to one which was). We didn't get here by being nice to each other. A strong defensive military is something I think every state would be wise to have, so long as human nature remains what it is... we're not wizened philosopher-kings, more just horny, hungry apes.

The distinction I draw is in foreign interference in matters that do not directly threaten us. I would rather see us resign from our role as world police/bully and focus more on domestic affairs, severely scaling back our force projection abilities (namely, carrier groups whose homeland defense uses are limited). I don't believe in this idea that "the only way to protect ourselves is to shape the world in our image, and forcibly subjugate those who will not willingly convert". Yes, there are shitty dictators out there, there is real evil in the world, but we're no angels and we've done a really shitty job of trying to make other countries better (with limited exceptions, like post-WW2 Japan and Germany).

The thing is, sustainable peace through militant nationalism is also a pipe dream. It's never stable for long and it creates vast power differentials that breeds discontent and violence; eventually it bleeds back over to us. I'd bet, measured across a few decades, our forays in Afghanistan and Iraq will create more terrorists than we've actually stopped... our administrations think in 4-8 year terms, not 20+, incurring foreign policy debts that later generations will have to try to pay off in an increasingly unstable world compounded by not just virally-amplified ideologies but also skyrocketing inequality and climate change. There is no military force that can keep an unstable, discontent world of ~8 billion apes in check for long.

Absent either a world dictatorship or peaceful multilateral democracies, I'd settle for regional hegemonies and old-school spheres of influence instead... we stay out of China's way, they stay out of ours, we trade peacefully. That means some nations will fall, whether it's Israel (possible, but unlikely?) or Taiwan (probably), Ukraine, etc. Sucks for those countries, but by % of world population, I believe that will result in greater overall peace and prosperity.

Shrug. It's all pipe dreams. Always has been. Some of us just have bigger pipes, I guess.
Just a heads up, they'll issue a proper SSL certificate if you ask them. I have had it working on my domain for a couple years.

EDIT: OK, well maybe not proper. They'll add your domain to the Letsencrypt cert being served there I guess (since mine is listed in the list of valid domains on the invalid cert for your site).
The blank shallow face of corporate corruption.
All of these are doable with LSP. I'm a big fan of the "LSP rename" action which will rename a particular semantic item (e.g. a method) across files, or the refactoring actions (e.g. change an "if let" into a "match" in Rust).
I'm trying to look at one specific component here, the language itself. My claim is that as a language Clash is way better than SystemVerilog.

True, Verilog has more mature tooling and is better supported by vendors at the moment. But most of it is because Verilog is old, and because hardware people have little knowledge of (and demand for) good programming languages; not because it's a good language (maybe it's better than the other even worse languages, but it's not good by the software programming standards). It's not that Verilog is somehow inherently good for implementing tooling for it, absolutely not better than Clash.

> far more types than just wire

You mean integers and C-style structs? “Far more” is a big stretch here. And these “types” are not very useful: they are only used to decide how operators should behave on values. As far as I remember, even Verilog's assignment doesn't care about types, as long as left- and right-hand side have the same number of bits, the assignment is allowed.

> generate allows me to avoid almost all copying

At the cost of: extra work (you're essentially implementing polymorphism by hand), inferior readability, increased risk of making mistakes, no support from the compiler. Generate can be almost perfectly replaced by code generation in Python.

Seriously, look at the way Clash allows parametrizing things, you will be impressed.
They likely did it as a group, so together to some extent. When someone got stuck I suppose the others would give hints and tips. Still a difficult task, but slightly easier than going at it alone.
Of course. The problem description [1] specifically calls for the following:

When possible, use default GC; otherwise use per node allocation or use a library memory pool. As a practical matter, the myriad ways to tune GC will not be accepted. As a practical matter, the myriad ways to custom allocate memory will not be accepted. Please don't implement your own custom "arena" or "memory pool" or "free list" - they will not be accepted.

In the other words, this problem measures the memory allocation performance with the "natural" strategy, which is either a default GC, a memory pool or a per-node allocation in the order of availability. If the target implementation doesn't support GC by default the code would be necessarily more complex, which makes up the performance benefit. So you can't really compare submissions with different strategies, because they are just doing different things and there is no reasonable way to make them do the same thing [2].

[1] https://benchmarksgame-team.pages.debian.net/benchmarksgame/...

[2] You may still argue that every submission should use a per-node allocation for the fair comparison, but a per-node allocation with GC and without GC is pretty different.
The Developer of Pokémon Go Raises $300M
I don't think I have. A little checking will reveal that I said I'm pretty sure I haven't read more than 20K books ...
And if Elgin had not 'looted' them it is also possible they would be scattered around Athens as landfill and building material.

As a simple example, the Rosetta Stone that is the focus of this article was yoinked by locals for building material and used as fill in the wall of a fort some distance away from its original location. It was only saved because when some French soldiers were rebuilding the foundations of the fort wall someone recognized the significance of the inscription on the stone.

It is a sad fact that were it not for this 'looting' we would have far fewer artifacts to examine and use to inform our understanding of the past because the locals would have continued to treat these sites and objects as open-air quarries.
And why would the manufacturer build that? Is it really the razorblade business model?
Thank you for clarifying. And nice article! I had missed Tilt-5 and its predecessors completely so this was a very nice introduction
Can I get one too ?
Same. It is very slow, and I can't figure out how to do anyhting useful.
Discussed 12 days ago, 218 comments:

https://news.ycombinator.com/item?id=29198589
Yeah. But most BTC miners are energy buyers of last resort. Sucking up the dregs at the cheapest possible price. They aren't "using up" renewables. In fact, often it's this consumption that makes the renewable enterprises viable.
As an addendum to my previous reply on the DBS's abysmal UX, I will echo the point made here that once you get to talk to someone, it's generally fine. I've had some great service when I could get through to a human, but they're making it increasingly difficult to do so as they're going all digital. Many branches have closed, and even the higher-end Treasures locations are now down to just two I think (a major mistake IMO especially as you target the wealthier). Navigating their phone support. takes. a. lot. of. patience.

I also agree that other banks can be a lot worse, and HSBC in particularly has been abysmal.

(edited for grammar)
A travel agent had ridiculous and not explained rules for password composition so after many many tries I ended up very angry and with a password on the lines of "how about f* you idiots" (I use a password manager too). Later I wasn't able to login and the phone support told me it was because I used profanity in the password.
They had to get the acronym to work, and presumably "LinkedIn's-owner" sounded a bit forced.
From one truly awful city to another. Who cares
No, that doesn't matter. If both users in the thread above still haven't realized that they're debating tabs vs spaces, they won't no matter what you tell them. Of course, tabs vs spaces debates always, 100% of the time, devolve into angrily shouting at each other, it's unavoidable.
Sense Hat for Pico – Monitor Your World with Pico
> ... as a primer

It's worked very well for me. Not seeing your disconnect here. Blog for concepts, man pages for specifics
A few months from now the headline will be that MAS (Monetary Authority of Singapore) slaps DBS with a hefty fine.
This concept has been pretty thoroughly rubbished by Thunderf00t (video):

Part 1: https://yewtu.be/watch?v=9ziGI0i9VbE

Part 2: https://yewtu.be/watch?v=ibSJ_yy96iE

TL;DW:

- Vacuums are hard.

- Rotation is hard.

- Mach 7 is hard.

- Lower-atmospheric thermal ablation is hard.

- Promotional videos long on drama, simulation, confetti, and inspriring soundrack, short on actual data and performance shots.

- Leadership expertise and experience is profoundly lacking.
Question. The idea here is to introduce a type declaring what the requirements are of the input arguments, right? The article's example:

class MeasurementLike(Protocol):
timestamp: datetime

declares that the object needs a field called timestamp. This is a contract that ensures the following line of code can work:

window_upper_bound = measurements[0].timestamp + window_size

The benefit being promoted by the article here, which I agree with, is that you only need to declare what the actual code requires and not name the full type of the expected input.

So, for me this raises the following: why can't this be done automatically? I can look at the code directly and see that measurements is a list with items that require a field called timestamp. Why is it necessary to write a bunch more code to tell this to a linter, when it's directly inferable from the code itself?

I can see directly that measurements must contain objects with timestamp, and that timestamp must be some object that can be added to whatever window_size is.

If it's entirely possible to get this information from the code, I don't really understand why it's necessary to burden the programmer with type hinting at all. It seems like the job for a type inference engine.

If I have to repeat a bunch of information that the compiler/(interpreter/linter..) should be able to figure out, as far as I can tell all it adds is (1) more work to do and (2) more opportunities to make mistakes. The idea of writing it all out explicitly is often celebrated as some kind of assurance of correctness; but you often figure out the types after, or in tandem, with writing the code. So it effectively is just like a "check", like those systems that make you type your password twice to make sure you didn't mistype it. Sure, it serves a purpose in the moment, but is it necessary to add maintenance burden, forever, to your code base for something that is totally redundant?
US is exporting it's recent culture trough Hollywood, music, news stories, Internet, while Europe does not.

I believe there are more Europeans who know how life in Pittsburgh is compared to Americans who know how life in Torino is.

Europeans are willing to try new tech originated in US while Americans would be more reticent to use new tech originated in Europe.
This can simply be summed up as: we're human. Humans aren't perfect and neither is the code we write. At best we can try to enforce checks and balances with CI and git hooks but since things always change, you'll come across some point where you need to make something in limited time and you'll have to compromise
I'm not talking about growth though, I'm talking about marginal cost per service rendered. To serve twice as many people in a restaurant you need roughly twice the servers. You don't need twice the amount of programmers (and other workers) to serve Netflix to twice as many people.
Barcode Hat for Pico
> But how in earth does one run out of 10.0.0.0/8 IPs, outside of a company merger?!

Twenty company acquisitions.
Ransomware?
It's open source, you get what you pay for. Actually, you get much more, but you need to fill any gaps with your own efforts. Accessing the spread out documentation is one of them.

While they are not comparable entities I'd say systemd documentation is in better shape than Linux kernel documentation. (Not to negate the efforts of those who do work with kernel documentation, but to stress the huge areas of no or pretty obsolete documentation).

Of course you can buy Linux (incl. user space) from the commercial players. I have only worked in one small project in my career that did, but I did not notice that better documentation was worth paying for.
See also https://ourworldindata.org/grapher/covid-vaccinations-vs-cov... .
As far as I can see the only practical widespread carbon capture process we have is plant growth (and pyrolisis). That might be possible for some fraction of global emissions (maybe 5-10%), but once you get above that you have to be cutting down quite significant amounts of forest.

It all seems like a lot more work than just not extracting the carbon from the ground in the first place.
The hard problem of consciousness would like a word.
> Along with that Brexit has cost the UK a ton of money.. this net contributer stuff was literal propaganda.

The fact that the UK was a net contributor to the EU is uncontroversial [1]. Please cite sources if you're making a drastic claim otherwise.

[1] https://www.bbc.co.uk/news/uk-politics-48256318
I don't know what you mean by "mainstream", but what I understand by it ipv6 is mainstream since quite a while. It has an adoption rate of around 50% in the western world and signifiant places outside of it (SA,India, Thailand, Vietnam, Japan, Brazil)
Not necessarily - I think the target audience is different.

If you are administering an internal datacenter in a company, then you can utilize this to offer a serverless env. to application developers in your company, and then those developers would benefits similar to that of AWS lambda/CF workers etc.

Someone will obviously have to manage servers, but in addition to it, it is also quite a bit of work to support orchestration of ephemeral functions, and a nice open source framework is definitely a huge help there.
Learn to lie.

All good story tellers lie.
> [12] Be conservative on APIs and liberal with implementations.

Curious how people interpret this? Is it:

* Attempt to keep our API small while also...
* thinking widely about the way it's used?

Or how does this work in practice?
Well, the line between a risky investment and a stupid investment isn't always obvious.

If my business plan is to make wifi-enabled juicing machines that cost $400 and only work on proprietary, DRMed packets I sell at a huge margin - great investment? Or stupid investment?

If my business plan is to make a $2,000 stationary bicycle, when most competing products cost <$400 - and it'll come with a subscription, but only people who've paid $$$$ upfront will be able to subscribe - great investment? Or stupid investment?

If I'm going to take out long cheap leases on office space, spruce them up a bit and sell short expensive leases? And some of the long leases will actually be from the CEO who personally owns some office buildings - great investment? Or stupid investment?

What if I run a website that lets strangers talk to each other, and I have a lot of users, barely any revenue, decades of losses, and I have no plan to make a profit. The users hate ads. Great investment? Or stupid investment?

It turns out some investments that seem dumb have worked out much better than I would have expected. Others not so much...
Try a jetbrains ide? They handle pretty much any language you can think of, including fun things like lua with ERB substitutions.
That would be true if we wanted to convert the carbon dioxide back into carbon, which inherently costs 394 kJ/mol, plus whatever losses you have. But actually we just need to convert it into something that isn't in the atmosphere. My suggestion at https://news.ycombinator.com/item?id=29327736 only requires 178 kJ/mol, much of which can probably be recaptured, and the currently popular scrubber processes using things like triethanolamine require still less energy than that.

It's true that there's an inherent "refrigeration cost" associated with decreasing the entropy in the system. Do you know how to calculate it? How much entropy do you need to shed to concentrate 440 ppm CO2 up to 1,000,000 ppm CO2, and how much energy does that inherently cost? I'm pretty ignorant about thermodynamics.
I agree with the sibling comments, I've never actually seen anyone go to the app store before Google/Amazon for simple purchases.

When it comes to these companies selling apps though, it doesn't matter what the market thinks... What matters is what the suppliers think the market thinks.
Imagine how disappointing it'd be to accidentally speedrun a game on your first play.
What a perfect example, have you even tried Java?

I'm guessing you are coding for the client?

C++ arrogance is the problem here.

About the pipe dream of WASM there are 3 problems:

1) Compile times (both WASM and the browser)

2) If you thought Applets where insecure (btw they wheren't) wait until the .js (also a VM with GC...) bindings that you are forced to go through to reach anything from WASM securely gets attention!

3) If you build for the browser you have Intel, Nvidia, Microsoft and Google (do you work there, might explain things) to deal with on Windows. You DON'T want that... use C to build for linux on ARM/RISC-V has to be one of your options and then all that work you spent on getting WASM to work is wasted. (because you won't have the performace/electricity/money for the cycles you need in the long term)

Edit: Please don't replace Python (that you should probably never have touched) with Go...
Once people use your APIs you cannot trivially modify the bits being used or take things away.

A large API likely has complexity, security implications, messy transaction boundaries, etc... keep it small and simple, think of UX of an API, make it intuitive and capable.

That's the conservative bit... now the liberal bit.

Make clients, make one in Python and look at date parsing, make one in Go and consider struct re-use and how to deal with sets/arrays of things, make one in JavaScript and consider how easy it it to re-use parts of the code. If you have an endpoint that returns a list of things... is it supposed to be paginated over? How easy is that? Is it an infinite list? How easy is that? What would a client want to achieve? Is it possible?

When you produce prototype applications in a variety of languages the majority of the small inconsistencies and issues are super obvious.

And remember, once the API is out there it's hard to change it and you can't remove things easily... so discovering all of this early helps you get it more right than wrong the first time round.
There are other bi-/trilingual texts, like the decree of Canopus:

https://en.wikipedia.org/wiki/Decree_of_Canopus
> if it you would have made it 43 items, a nice prime number,

Something tells me the author deliberately stopped at 42nd item.

https://hitchhikers.fandom.com/wiki/42
You are correct, in any case there is a second post about Wander (still from 2015) here: https://ahopeful.wordpress.com/2015/05/20/wander-follow-up/ and the game seems to be still online.
I like the infamous Von Neumann "Fly and the trains" math/physics problem - mainly because it's very easy to solve the easy way, or you can go about it the harder way. And apparently Von Neumann did it on the spot, the harder way, almost instantaneous.

It goes like this (stolen from a website - there are many variations on this):

Problem: Two trains are on the same line, 60 miles apart, heading towards each other, each traveling at 30 mph. A fly that can travel at 60 mph leaves one engine flying towards the other. Upon reaching the other engine, it instantaneously turns around, and heads back to the other engine. This is repeated until the two trains crash and the fly is annihilated at the same time.

Question: How far does the fly travel before it is "splatted"?
Sunlight.

Also, though, the cost estimates I ended up with are lower at current energy prices than the ones being offered by companies like Climeworks. Thanks to your feedback, I've restructured the comment to be less intimidating.
Sure, if you ask an economist. But here in the real world, switching ISPs is hard (fees, lack of competition, replacing gear...) and the benefit of IPv6 isn't apparent yet to most people. By the time it becomes, it'll be too late and nobody will have it yet, so there won't be anywhere to switch anyways.

There's a reason we have consumer protection regulation and much of it came as a result of situations where evryone thought, as you do, that the market/competition would solve the problem, but of course it didn't. That only happens in ideal markets where switching providers is trivial, the consumer is equally informed about all of them and the providers (and perhaps customers too) have equal economic power.