skysight-inc/HackerNews huggingface dataset:
> I guess we aren’t solving the same problems: memory allocation is trivial is my domain, mapping complex nested control flow in SIMD is the hard part.

Those statements are just confusing to me. In most GPU-code, you have crazy amounts of parallelism and therefore don't really care what order those statements execute in.

As such, if you can allocate memory, and map those if/else statements into a collection of queues and/or stacks (depending on if you want a breadth-first search, or depth-first search pattern).

In effect: you use memory allocation to solve the complex control flow issue. Maybe its more obvious with code:

Instead of doing:

if(baz()){
foo();
} else {
bar(); // Thread divergence!!
}

Do:

if(baz()){
pushIntoFooQueue();
} else {
pushIntoBarQueue();
// Thread divergence, but not much of a penalty
}

while(fooIsNotEmpty()){ // No thread divergence at all
task = SIMDPopFoo();
task.execute();
}

while(barIsNotEmpty()){
task = SIMDPopBar();
task.execute();
}

This is heavier on the memory units, because you now have to manage the data-structures. But this style practically negates the thread-divergence penalty completely. If you're lucky, your fooQueue and barQueue fit in __shared__ memory.

Bonus points: Not only is thread-divergence negated, but you also achieve effective load-balancing across your workgroup. If Thread#0 spawns 20 items for FooQueue, after pushing/popping from the queue, those 20 Foo-tasks will be assigned to 20 different threads.

-----

From there on out, you're just pushing / popping different parts of your code to various queues and/or stacks. But this is only really a valid solution if you have a decent memory allocator that knows where and how to clean up these queues / stacks (especially if you have nodes starting to point to each other for dependency management)

I haven't really solved this problem "in general", but is clear that the queues should be sorted into topological order, and that any tasks that depend onto each other need to be run in different iterations. It really depends on how much you're willing to spend on organizing this execution information.

In any case: the memory allocation issue is one-and-the-same with the thread-divergence / complex instruction flow issue to me. You need to create a data-structure that organizes the instruction flow, and any complex data-structure will need memory management as soon as you start linking things together. The above uses a queue or stack, but things can get more complicated.

--------

Not that Julia, Python, ISPC or anything really... solves this problem. But memory management is very useful for this "style" (I'm mostly doing ref-counted C++ with a custom allocator myself. But such trees or graphs of links can grow into the CPU-side and end up using the default memory allocator)
That opinion will make anyone with experience in hiring think that you don't have it (experience in hiring). Sturgeon's law holds true for job applicants.
> security and correctness, most of which Andrew has said he doesn't care about as much

You will find me to be quite open minded about criticism but you're not going to get very far by misquoting me.

I have an entire kanban board[1] dedicated to improving safety, and "security and correctness" are both properties of the word "robust" which is the very first adjective ziglang.org uses to describe the language.

I could spend 20 more minutes on HN debunking the claims in this thread, but instead of rewarding your behavior I'm going to give that time instead to the people who have opened pull requests on Zig and help them get their code merged.

[1]: https://github.com/ziglang/zig/projects/3
There are two parents! Is it still 1960?
let me rephrase that for you: some things actually worked when it was initially released :(
Wasn't there a post hear some time ago, arguing that MS won't wind down Windows and going full in on Linux?

My guess is, OS money is over and MS wants to safe budget in the long run running its money makers on Linux etc.
Presumably there will come a point where the cost of purchasing enough ipv4 addresses outweighs the cost of making a project work with ipv6. It'll be an interesting piece of economics to see where that boundary is.
Perhaps you mean: "With four parameters I can fit an elephant, and with five I can make him wiggle his trunk."?

https://en.wikiquote.org/wiki/John_von_Neumann
Huh? If it causes the video giving bad reviews of their product to be taken down, the C&D letter does a lot of good for Palo Alto. Even if the review is accurate, if Palo Alto can force the review to go away it is a good day's work for that lawyer.
You bring back memories for me. That’s what I had on my first PC, a Pentium 60 Packard Bell with 8 mb of RAM.
That's much closer to a substantial and fair similarity between Rust and C++! Indeed, if I understand you correctly, it's a major cause of both languages' slow compile times, and a source of a lot of difficulties for humans learning and writing both languages.

But this makes me suspect we may be using very different definitions of "accidental complexity" here: Your usage seems to apply to programs, which wind up over-specifying low-level details in both languages. My usage of the term applies instead to the languages themselves, and the level of extra pain they inflict on programmers who have already accepted the C++/Rust/etc aesthetic.
Sorry, I was not clear. When I said company disk fleets, I was thinking of places like corporate head offices which have thousands of workstations, not datacentres.
So they introduce a major usability breaker (consider opening up your macbook on a plane with no internet access) to prevent a really obscure security issue that requires an attacker to replace the entire system's top case without you noticing. Nice.

At least give the user the ability to turn that off.
I have seen developers make this exact error quite a few times over the years.
I Can Twist My Eye Around Its Pupil (and So Can You)
That might be true in some areas but... in almost every company I've been, it's been ridiculously hard to find enough qualified applicants for a given role. There wouldn't even have been 100 people to reject. I think programming is still mostly an employee's market.
> then that should generalize to unseen data.

It's not guaranteed at all. Overcomplicated models will "overfit" the training data and generalize very poorly.

> some curves cannot be expressed as a polynominal

You can approximate any (continuous and blah blah) curve arbitrarily well with Taylor expansions.

In fact, polynomials are one of the the most common examples to demonstrate overfitting. See figure 2 on wikipedia (https://en.wikipedia.org/wiki/Overfitting)
Have found success with pressing hard on stuck keys to unstick them.
>You conveniently left out the Model 3.

No, I did not? See the links I attached again.
I'll admit that I had to look up what the proper term was for before-penultimate, since I've never had reason to use it before.
IMO it's good for the internet if few entities were to hoard most IPv4 addresses. Only while IPv4's are sufficiently available will we keep using IPv4-only networks and keep prolonging our miseries.

My ISP only gives CGNAT or is happy to rent IPv4 for a premium, one address at a time. Keeping IPv6 out helps the IPv4 margins and staves off competition.
Nope. I think sneezing into your elbow is pretty gross. You telling me it's better than your hand doesn't suddenly make it nice.
I wouldn't be. I love julia, but it doesn't have a spectacular error-handling story. So if you have to start running a web server, and also have to worry about people issuing a DDOS or finding sneaky ways to cause your system to consume a ton of resources on a handful of threads, and lower availability, it's not going to get pretty.

Unless you mean compling julia or something like it to WASM and running it in the browser. That could get interesting, but julia is still "a bit too chonky" for that.
According to the article AWS usage is at 47% of their IP pool.
> My theory is that hiring is just really hard

Not that hard. Talk to people like human beings and examine their previous work and employment history.
We waste so much money on initiatives and social programs that can be administered much more sensibly and cheaply by local communities. Community leaders can custom-tailor their approach to what their community needs, instead of a blanket, one-size-fits-all nationwide programs that waste money.

Many of them could be run as community charities or even profitable businesses, if national government would just get out of the way and let innovation work its magic!

And I mean well-intentioned, but wasteful programs like:

- libraries (partner with publishers instead!)

- grand-making arts programs

- mandatory Common Core preschools (instilling a dislike of education from a young age!)

- programs for reduced-cost and free lunches (just use surplus food that already exists!)

- community colleges (can be run for profit)

- job retraining programs (we already have technical schools!)

- public health and drug rehab (pharma companies can step-up instead)

- national parks and wildlife preservation (why not let the market decide which ones are worth it?)

Suddenly, we'll have taken a big bite out of our unsustainable debt!
I would imagine that would be the subway in any city as densely populated as NYC
Rust restricts compile time code to what t can prove.

Exactly! That's a feature. Rust is a step forward to a future where code is based on sound theory (type Theory) not on some ad-hoc "seems to be working" basis.
I got to love the city many decades ago, as a young software consultant. Oh, the smell of urine and the sight of graffiti on the trains and garbage in the streets! I still love it, but you're right, it is quite a different place. In some ways better; in others, worse.
my ears pricked up at the mention of gtk apps for the pinephone; i was planning on exploring rust and D to do precisely that. will definitely add zig to the mix now.
Thanks for the example, I am interested in trying these packages in the future, but here's a current snippet of ISPC,

varying float aff[nc], xh[nn], wij[nn], x[nc];
varying int ih[nn];
uniform int t_ = t & (nl - 1);
uniform float k;
for (int j=0; j<nc; j++)
aff[j] = 0.0f;
for (int j=0; j<nn; j++)
for (int i=0; i<nc; i++)
aff[i] += wij[j] * shuffle(xh[j], ih[j]);
for (int i=0; i<nc; i++)
x[i] = 0.1f*(x[i] + x[i]*x[i]*x[i]/3.0f + k*aff[i]);
for (uniform int i=0; i<nn; i++)
xh[i] = insert(rotate(xh[i], 1), 0, extract(x[i/nl], i&(nl-1)));

Just being able to absorb SIMD lanes into the notion of varying vs uniform makes this easy to write, not to mention SIMD operations like shuffle or rotate. In Julia or Numba or CUDA I have to index into arrays, ensure compatible data layout etc. I imagine this could be done with more macrology in Julia, but again why not use something which already works.
Barr is going to have his pick of Board seats in 2021.
I have quite the opposite experience. Numpy is terrible in terms of allocation overhead (even when you use the available, but limited, inplace operators and memory views). In Julia it is 𝚝̶𝚛̶𝚒̶𝚟̶𝚒̶𝚊̶𝚕̶ much easier to write allocation free code. And only so many operations are trivially broadcastable, after which numpy becomes very cumbersome and slow.

Numpy is a great piece of engineering, but its limitations are very noticeable when compared to Julia.

edit: not trivial, but much easier
Yes, but that doesn't mean the case will gain the approval of judges. Of course, this is why the current administration has worked very hard to place as many judges as possible on the federal courts, but since federal judges hold lifetime appointments they sometimes develop an unexpected degree of independent thought once they land on a suitably comfortable bench and fail to please their erstwhile patrons, instead pursuing the respect of their judicial peers or their legacy.

There's an interview where Barr is asked about his legacy that's worth looking up, it's a great example of the conflict between short-term expediency and long-term sustainability.
Yes, that's what happened. Yes, the US was incredibly stupid and had a big hand (the biggest) in its own downfall. No, that doesn't mean China's hands are clean in the matter. Ultimately, politics are amoral and it doesn't matter, but to the extent that we're interested in making purely academic moral distinctions there's no need to whitewash China's actions. They did us dirty, and if we have the option to do them dirty back, we should take it without the slightest sliver of shame or guilt. Politics is amoral.

In any case, we absolutely should not let our natural inclinations towards an underdog story cloud our judgement. China isn't an underdog anymore.
>there's a huge responsibility on the folks writing moderation tools like this

I'm fatalistic in my opinion that all moderation tools would eventually end up in situations like this.

The Rise of The Power-User just feels too inevitable to me. Once you have power-users you start to have clashing of egos. Once you have egos, you start to have censorship (as opposed to moderation).
Not all monopolies are unlawful, and not all laws regarding anti trust require a monopoly.
I miss the days when RSS was just about everywhere. You’d add a feed to your blog reader and have a convenient format just fetched for you when you wanted.
Now you have to hope that the social media algorithms show you your favorite blogs are updated and see it in the noise.
Why is language interop not this simple for everything?

It seems insane to me that it's this easy in Julia, yet most other languages are completely incompatible without transpiling one into the other.
ADTs are only concerned with the "shape" of the data and what interactions you can have. It is related to classical OOP in the sense that the "interactions" you can have are equivalent to the message passing from the original conception of OOP[1].

The distinction is similar to database design in SQL: the Schema is how the data is laid out and what the relationship between tables is (ADTs) while the queries is the operations performed on them (traits). On the other hand, in OOP there's a higher reliance on encapsulation, making behavior an integral part of what the class is and using inheritance for expansion. When all you have is ADTs, you _can't_ have inheritance, so you end up using composition (which is generally considered better design) and you are more likely to rely on the creation of "new-type" container types for everything. You think of them as a way to describe what the data is, not how you interact with it.

Apologies if this is a bit hand-wavy, I'll try to write a more thoughtful answer at a later time.

[1]: https://medium.com/javascript-scene/the-forgotten-history-of...
Why Does Money Exist?
My home internet (Verizon FiOS) is still IPv4-only.
NSS labs was one of the few labs which actually did rigorous testing in regards to firewall performance. It helped me and my company enourmously with both recommending solutions to customers aswell as troubleshooting. Mainly by providing a truthfull baseline compared to the datasheet of the vendor. all firewall vendors seem to basically lie on their datasheet in regards to real life performance. This becomes a real pain in the arse when you start seeing performance issues or weird behaviour because you actually run a firewall "to spec".

a good example of this was a cisco asa with firepower (which in itself ia a terrible solution, but alas).
even at "just" 50% of the specced load, we started seeing weird issues in regards to IPsec tunnels. (SA's randomly dropping, getting abysmal performance at certain times etc).
This is only true of supervised offline learning
> It’s not a jab at Julia

I didn't take it as such; there are legitimate shortcomings to any tool, I just wanted to provide pointers to other readers that the devs are aware of it, and that there is ongoing development to address it. :)

> Come on, jeez.. Julia’s compiler is a Lisp-based LLVM driver: of course it can do these things.

As someone who, before Julia, was firmly entrenched in C/C++/Python land, I suppose I am discovering many of these "obvious" things for the first time. :)
> When you argue a case in court, you have to be a "zealous advocate" meaning you have to believe what you're arguing.

This is most certainly not true.
I bet it wouldn't be hard to write something in zig that enforces this. I think the compiler is going to start getting pluggable and when a package manager comes out I'm sure something like an opt-in check against this will become a thing.
It’s not religious fiction. It’s more a collection of essays (or lectures, organized in the back of the book) with a sort of thriller storyline in the novel to make the reading more fun and explain better how the narrator is reacting to the lectures. But you could get a lot out of it by simply reading the appendix, which contains the arguments.
Carrier grade NAT and cell phones being IPv6 only helped stem the tide a lot.
There are only 9 real (crawler) search engines: Google, Bing, Yandex, Mojeek, Gigablast in English Language plus Baidu, Sogou, Naver (South Korea), Seznam(.cz)
https://twitter.com/i/lists/1316046723928805376/members

All other are search services (sometimes called metasearch) and most of those are syndication partners for Bing https://www.searchenginemap.com/
Graffiti? Was this the 90's?
Since the 2000's I really don't see this.
The smell...ah NYC in the summer!
On Writing in an Engineering Context
I'd be really interested to know what difference (if any) the S-VHS deck made compared to the regular one you were using.

I've got a decent capture setup (semi-Professional gear that captures at up to 10-bit uncompressed 4:2:2 - over 100GB an hour!) that I obtained basically for free since it is fairly old (early 2000s). Since good VHS decks are getting harder (and more expensive) to find, I haven't got a good[1] one yet. I'd be interested to know if the difference between the two decks was noticeable!

[1] I consider the recommendations on this thread: http://www.digitalfaq.com/forum/video-restore/1567-vcr-buyin... to be fairly good at separating good VHS decks from the rest of the pack.
The Democratic establishment is more pro-corporate than the Republican establishment? In what reality is this. Like I don't get where this idea comes from that you have to be pro-business or anti-business. I can be both pro-worker and pro-business, it's not black and white, it's shades of gray.
I think that phrase is a thought terminating cliche. How can one argue with the claim that every construct has a valuable hidden purpose despite evidence to the contrary?
We probably disagree about how bad that is, but I think it's a valid argument within the voice/exit framework.
> Don't want to call it sackball or something like that? Or maybe shuttlebasket?

What?
Last federal case probably. The Democratic states Attorneys Generals mostly have not signed onto the lawsuit because they don't want to be bound by unfavorable settlement terms (sorry I can't remember where I read that in the last couple days)
I’d agree with this. Following an existing system gives you a good starting point, but every organization is different. Follow and come up with your own. It’s ok to try new things or experiment.
Another reason why I'm going to stick with Linux for the foreseeable future.

I just wish the font rendering situation on Linux was better though. Text (in browsers) just looks so bad on Linux compared to both Windows and mac.
The US Constitution grants states the right to enact laws that protect the general welfare

The writers of the constitution have explicitly said in the Federalist papers that the "general welfare" phrase is not meant to imply anything beyond the enumerated powers listed afterwards. That the courts interpret it the way you say they do is just an example how the Constitution became just a parchment which is taken to mean whatever is convenient at any particular moment.
My wife went to law school. I know lots of lawyers. The spread between Justin (first in his class by a fat margin), and the bottom, oh, say, quarter of the class, is brutal.
I don't remember where I heard/read this, but someone said that to do achieve something extraordinary you have to make sacrifices and push yourself. Otherwise everyone else would be able to achieve the same things working a single job, normal hours, spending time with friends and family and other leisure activities and those achievements would be ordinary by definition.

I thought that was an interesting take.
If there's anyone that I'd listen to talk about this, it's Aline. She's a shining example of something I think patio11 once wrote: dogged learning about one topic is bound to produce value sooner or later. You just need to spend enough time learning where the pain points are, and build something that solves them.

She's been turning this crank for years, and I believe her when she cites interviewing.io having a 40% successful place rate.
Comcast/xfinity uses ipv6 and ipv4 for my connection.
The sad thing is that's probably why IPv6 is never going to be a thing. Why would all major tech companies be willing to write off such expensive assets?
That's why I said:

> > this is either unnecessary or insufficient.

There are certainly plenty of circumstances where you don't want to allow non-canonical representations; my point was that there are more non-canonical representations than just the ones that UTF-8-level canonicality checks catch.
> As wages rise, doesn't inflation rise as well

No. Inflation is primarily caused by the government printing money, not by rising wages.

If wages rise but productivity does not increase, yes, that will cause inflation, but if productivity is not increasing wages cannot rise because there is nowhere for the increased wages to come from.

If wages rise because productivity is increasing, there are more goods and services available, so supply keeps up with demand and prices don't rise. (In fact they will generally fall in the areas where productivity is increasing, if the money supply is not being messed with.)

> Wouldn't it also be true that as certain goods deflate in price, labor force participation should go up as well since the same wage allows you to buy more stuff?

There will probably be more people willing to work, yes. Whether that translates into more actual jobs will depend a lot on how easy it is to start new businesses, since that's where the new jobs will have to come from. Our current regulatory regime makes it much more difficult than it should be to start new businesses.

> wealth isn't the money you have, it's what you can buy. Today most people, even those at the bottom, have access to many things today than even John D. Rockefeller didn't have access to when he was alive.

This is a very good point, which I wish more people would recognize.
Won't Launchd simply start them all up again? It'll be simpler to disable the launchDaemons :P

And really, put a sleep in there of at least a second or so or this'll be a huge resource hog.
Numba is great (as well as Jax, which is even better), but its limitations are drastic compared to Julia. So much of what is great about python (e.g., compossibility, introspection, simplicity) is lost with these libraries, while Julia still retains them.
For the video+voice, it's WebRTC using Daily (YC W16)

https://www.daily.co/
New Jersey calls for gas-car sales ban by 2035
Plenty of networking gear has trouble with it. IPv4 is just so easy to keep using and IPv6 support is often treated as an after thought. I had troubles with my Ubiquiti gateway using IPv6 and the forums often recommend just disabling it. Some features don't work correctly with IPv6 even now.

Google/Nest wifi did a good job of just making IPv6 enabled by default for all consumers.
If you've heard news of archive.org radicalizing my non-tech relatives, let me know.