skysight-inc/HackerNews huggingface dataset:
> the whole premise for React (the virtual DOM) is based on outdated performance advice. Chrome has used a dirty-bit

This mentality sorta falls into the exact pitfall GP mentioned (i.e. what you really want is for IE/Edge to be significantly faster bringing speed gains for everyone else along the way, not for Chrome to be microscopically faster at the expense of every other browser)

There are real and significant costs in things like random access of .childNodes or bottom-up DOM construction in some browsers. At the height of the whole virtual dom thing, there was a lot of super browser-specific micro-optimizations going on, a lot of it w/ a heavy focus on Chrome, with IRHydra and stuff.

It got a bit ridiculous when I figured out that you could make a significant dent in one of the popular benchmarks at the time not by tweaking JS anymore, but by removing unused CSS rules from bootstrap.css...

But as you said, engines change quickly and I'm not sure it's really worth to be chasing micro-optimizations anymore. We're getting to a stage where the only way to get faster is to simply run less code. Some frameworks are getting the idea (svelte, marko).
Well, we don't hear much about the problems with GPS (though there has been some)

And in this case the problem was more geological in nature.
I suppose it depends on what you would consider being “serious” about memory safety.

I view move semantics as not a memory safety thing at all (in fact, use-after-move can be exactly as ugly as use-after-delete), and smart pointers as a “let’s just make things marginally better than raw raw new/delete” thing. Smart pointers in C++ can still be null, after all.

Calling C++ not serious about seems a reasonable take to me. Of course Rust didn’t invent all of its solutions from scratch.
That looks like an excellent exercise, going to save that :)
Once people start saying Likes/Clicks/Views lead to Outcomes not just for person hitting the numbers, but for the whole of society then they need to point at those Outcomes. Not the Like/Click/View counts.

Obama did the connect thing. He was certified "with it". He was called the first Social Media President for taking advantage of it in ways the "dinosaurs" didn't. He collected record number of Likes. But what was the point of all that? Did the Likes/Clicks/Views translate to outcomes?

Those that didn't think he was "with it" just went and looked for some one else. And propped them up with the same tools. Trump gets record Likes. Trump gets power. But where are the outcomes?

Both sides think they are brilliant for hitting new social media records. And then get trapped into an arms race of Like counting. Not outcome counting.

Both sides have proved Likes do not equal Outcomes for Society. But they sure do reward the Individual and some small coterie around the Individual.

The reward system has to change. Count Outcomes to Society. Not outcomes of the person.
> What is that thing?

Blockchain brilliantly solves one and only problem, double spending. This single problem it solves enables the creation of true digital cash securely.

> So anyone who advocates blockchain for something other than cryptocurrency is a scammer?

if there is any kind of token sale, yes.
In this particular case, they were not optimizing for Chrome. They generated the code that was obvious to generate.

Because of a perf bug in WebKit they added a flag to generate less correct code that is fast in WebKit.

If anything, it's a case of optimizing towards WebKit.

But really, it's a case of performance bug in WebKit and them adding a work-around.
Thanks, I removed that bit.
node const.js 6.58s user 1.25s system 60% cpu 13.007 total

node let.js 7.00s user 1.35s system 51% cpu 16.272 total

node var.js 7.21s user 1.22s system 55% cpu 15.183 total

go run main.go 0.80s user 0.94s system 17% cpu 10.064 total
For what it's worth, there's a first edition available next year.

I can't imagine this is going to sell well, and I'd be amazed if they make a profit.

But it looks like a beast, and I think Arnie driving around in an electric Hummer with a cigar in his mouth will serve the same purpose for a different crowd as the Roadster did way back when.

Plus of course Rivian and the Cybertruck, although I think they'll probably each hit different sweet spots with a lot of overlap.
internal.io is pretty similar to https://www.forestadmin.com/, or even djangoadmin. If you're looking for a quick, non-customizable CRUD interface on top of your database, both of them are pretty good solutions.

Retool is really aimed at engineers who are building custom internal applications. For example, if you're Coinbase and looking to build a complex approval workflow for withdrawals above $100MM (with a custom UI depending on which Okta groups you're in, with custom approvals required depending on the KYC status of the customer, etc.), it's very very hard to do with either internal or forest (since the customizability and flexibility are much lower with both of them).

So: forest and internal are good if you want something quickly but have no intention of customizing it later. Retool takes longer to get started, but allows you to customize substantially more.

In the mid-term (i.e. 1 - 6 months' time) we want to make starting in Retool much easier. We will probably allow users to quickly generate admin panels (similar to internal or forest) with a few clicks on top of common datasources.
Thoughts on Programming Under Consumerism
Ancient, 120-Foot-Wide Drawing of a Cat Found at Nazca Lines Site in Peru
Personal anecdote: I wrote my own email server; it has no spam blocking of any kind other than checking the Spamhaus blacklist. That gets me down to a spam message every few days at most.
Ah yes the good ol' HN pedantry. Please go actually read the hypothesis and understand its central tenets.
I worked for a telecom marketing software service for seven years. My old boss was obsessed with notifications and mobile apps because he was a marketing “guru” and indirectly showed me how broken by design most services are in this respect. One day at work a serious bug was discovered and I suggested we do the responsible thing and notify users affected and my boss said it wasn’t a priority. Where, we as developers, draw the line in the sand seems to be whatever we feel is convenient for us at the moment.

Personally I feel that most users are already drowning in notifications, emails, badges, slack messages, ads, calls, etc that even if you did do an opt-in for notifications that most users would just ignore them since their attention is already too divided.

One thing to consider is not what your software should do but how it will really be used. The software I wrote was designed for sales teams to do marketing and communication but one day I discovered a bug that crippled the service, disabling most calls, while trying to fix an unrelated bug. This bug had been active for months, yet no users had reported it because they weren’t really using the software, in their minds they would rather not work at all and file false reports in the software to make it appear they had done their sales calls to meet their quotas. The bug was fixed but no measures were ever taken to fix the real bug which was the loop hole users were using to commit wage theft. The lesson here is that most users don’t want to use your software, their boss is making them and they hate their jobs. So why not focus on the real problem which is figuring out why your users hate their work and then fix that problem.

Every service is crazy about being “realtime” these days but imagine if git was realtime...cringy...yet more people do “real” collaboration with it than any other technology given the proposition that communication software such as slack isn’t really about collaboration at all. I’ve come to feel that if a software service feels they need notifications in order for it to work then they haven’t truly automated the problem they are solving. It’s like try/catch statements: 80% of the time the catch statements in practice are just //todo comments or log to an error table no one will ever read. So my last piece of advice is to think about notifications like catch clauses, meaning that if you do your job right then notifications shouldn’t be necessary at all.
As a Mid Range Millenial, I fall right into age range who cut their teeth in an era just past this guy: the jquery web dev. It's amazing to read this because I think I was part of the group that began the exponential curve of new technologies. I wasn't exposed to this "hazing" at all. I was believed in. I was valued. I was encouraged to explore.

The religion of the time was to work on things that increased developer productivity time. Performance be damned. It flowed naturally at the time. Computers were (and are) fast enough to create these web apps! We just need to get more features (and better looking ones!) out the door!

And now here I am sitting on the other side, looking at all my peers work and thinking "slow down, everyone. We've made too much stuff. We need to organize and catalogue and refine and optimize"

It's like culture is a Tick/Tock cycle. This guy was a Tock - a refinement of existing technology. I was a Tick - an explosion of new technology.

And now (I believe) we are witnessing another Tock - a refinement, a culling of the weak, a centralization.

I love reading the historical programmers account. As I near 30 I realize, that I will become that, a history lesson for the fresh minds of the era.

I think I have lots to teach you. I need only to refine, cull, centralize, and catalogue my thoughts. Piece them into theories of abstraction, class hierarchies of ideas, if you will.

For I experienced the polar opposite of this. I experienced the explosion.

And yet still, I agree.

Discipline doesn't scale. This encoding of discipline into system. I agree with it.

That defines a large part of my job - to take the "best practise" and encode it into the day-to-day.

This concept: "discipline doesn't scale" is fundamental to our history. It seems trivially true.

This prose is excellent, this history lesson is important and valued, and the fable of this story rings true.
I will reply separately specifically about NPS Surveys as I believe they have essentially become the "Scrum" process of the telecommunications industry.

That is to say, a lot of companies say they are doing it. Middle managers will profess to their upper management overlords that they are doing it, but very few companies are actually doing it.

NPS was built around a key metric which is "how likely someone is going to be to recommend your service to someone else". The P stands for "promoter" and a promoter is exactly that.

If you start stuffing the by asking the wrong questions, priming responses, etc. then your NPS score becomes meaningless, a 9/10 or 10/10 no longer means that person is necessarily going to be a promoter! For now, it's a numbers game so I think the upper management don't care that their 9s and 10s don't translate to actual promoters, because they'll get their bonuses, or they'll get acquired by a bigger firm based on those "fake" numbers.

Soon enough, I think we'll see a revolt from the smarter firms doing due diligence where it's not enough to show a high NPS score, you will also need to prove that these numbers are reliable (better yet, simply show that you're getting new customers through word of mouth by some other, verifiable means).
Maybe using crev?

https://github.com/crev-dev/crev
https://github.com/crev-dev/cargo-crev

Probably just publish it and eventually you will get some review or bug reports.
Trade off in url structures for SaaS apps
Between the common url structures for SaaS apps

- <customer>.example.com
- app.example.com
- app.example.com/<customer>

Which one is better and what are the trade offs?
Thank you for the comment! Do you mind sharing what exactly you were trying to build and how Retool was too constraining? We'd love to learn which use cases we could be doing better in, so we can improve (even if we're able to convince you to try it again!). Thanks!
And now JS also have unlimited integers
Have you looked into how to migrate this to caddy v2?
Thanks for posting this. I've been working on a CMS for a project I've been developing and it was originally based on some common JAMStack principles but a while back I forecasted some of these roadblocks. I've had doubts since then but seeing someone describe the environment like that solidifies some of my thoughts around its limitations.
In cases where order doesn't matter you can avoid you can avoid the array length question all together by decrementing:

let index = arr.length;
do {
index -= 1;
console.log(arr[index]);
} while (index > 0);

As a side note whether it takes longer to access a variable or object property is largely superficial depending upon the size of object because it implies creating a new variable on which to store that object property. There is time involved to invoke a new variable just as there is time involved to access an object's property.

As an added bit of trivia in the 1970s a software developer named Paul Heckel, known for Heckel Diff algorithm, discovered that access to object properties is faster than accessing array indexes half the time. That was in C language, but it holds true in JavaScript.
Or build better APIs into the browser and optimize them in the C++. IMHO that's the best long-term solution. Moves glacially slow, though, since there's a large engineering cost that needs the coordination of each major browser vendor.

I was a big fan of Polymer/WebComponents in 2014, but they kinda dropped the ball. In hindsight I wish they'd just implemented the React API directly in the browser. (Though depending on how Google vs. Oracle goes in the Supreme Court, maybe that'll become illegal, sigh.)
Long ago, I wrote a database program in Turbo Pascal to browse a 300k text database under MS-DOS. My search function took about 30 seconds or so, if you hard a hard drive. I was challenged to make it faster... I got it down to 3 seconds, in the days of 286s.

I believe I could now get it down to 1millisecond on my laptop using the techniques shown.

This hack amazes me.
Do you have any comparisons you can share of the improved results from the median filter?
Free Course – Beginner’s Guide to Kontra.js
While the creation and destruction of a scope every loop iteration is the correct mental model for what this code does, there's no reason that implementations must actually perform any allocations - especially for an example like this where it is trivially determinable that no bindings escape the immediate scope.
> Peter Fairley: So to give you a sense of just what the scale of the transfers is and how small it is, the East and the West interconnects have a total of about 950 gigawatts of power-generating capacity together. And they can share a little over one gigawatt of electricity.

> Steven Cherry So barely one-tenth of one percent.

From TFA.
If he did this on the first day of the Tour de France, yes, they are the same thing.
But if he is pumping fresh blood on the ten or twenty day of the tour, it's like you take a few months in the mountain recouping before you run the next day race.
Do you think it's OK if one cyclist is running stages day after day while the other cyclist has a week to recoup between stages to recoup? Is this even the same race?
handling errors could be done as follows:

(let ((err1 #{default:0})
(err2 #{default:#\z})
(stack #{s:none,
err:none,
push:(fn x (set self.s (pair x self.s))),
pop:(fn ()
(if (null self.s)
then (error self.err)
else (let ((x (left self.s)))
in {
(set self.s (right self.s))
x
})))
})
(s1 #{stack, s:nil, err:err1})
(s2 #{stack, s:nil, err:err2}))
in {
(handle-error
((err1 (e) (print e.default))
(err2 (e) (print e.default)))
in {
(s1.push 5)
(print (s1.pop))
(print (s2.pop))})
})

the last pop from stack s2 will throw the error err2 and the handler will catch it and print the character #\z.
They laid off the servo peeps
> Locking is a performance [...] destroying operation

That is incorrect. Properly designed and implemented mutexes (like in the parking_lot crate [1]) are extremely fast in the uncontented case, and need just one byte of overhead (and no heap-allocated memory) per mutex. In the contented case, a lock-free algorithm still has to deal with arbitration between the different threads, so it's typically not faster than a lock-based approach. Lock-free algorithms do have certain advantages (like deadlock-freedom), but performance is typically not one of them.

> Locking is a [...] scalability destroying operation

Also incorrect. If you have N threads trying to append to a single queue, then you have a scalability problem whether you're using locked or lock-free data structures. The solution in such a case is fine-grained concurrency and a different approach, not lock-free algorithms.

[1] https://github.com/Amanieu/parking_lot
There's roughly 1+ billion devices running Safari _daily_, I'm not sure we should torture a Safari bug into a problem with Chrome
This is one of the few times I've seen anybody mention threading in Ada in this sort of discussion. I've become quite fond of the language, and my first brush over the tasking stuff left me fairly impressed/interested. However actually getting into it is something I've been meaning to do, so I don't really have much experience with it in practice.

So I'm quite curious, what problems with it you were referring to?
While it’s possible for companies to keep secrets, most companies lack the secrecy and paranoia required to really keep big secrets for long periods of time. These companies tend to leak, both because people move around a lot, and because unlike governments they lack the ability to throw leakers in jail.

If google was actually futzing about with the auctions like that, we’d probably find out eventually.
I owned several. I would buy a $40 pre paid phone once a year and I never had any performance issues. I tried switching to a $40 android phone and it was basically unusable. My $500 Android is about as snappy as my prepaid windows phone.
Man, that was a lot of work but at least you'll only have to do it once.
Or is it possible he just lost access to his encrypted hard disk with all his credentials on it?
Intuitively, it seems like voice signatures, body language (like walking habits), and height/weight would play a larger role in helping humans identify a masked person than exposed facial features.

Because the network behind Apple's facial recognition software cannot have access to this kind of data (well, maybe voice, but that doesn't seem secure), I'm not sure this is a fair comparison.

Would love to be refuted, however.
The point of the article isn't to belittle someone for having a good, deep knowledge of machines. The foundation of most code written is built by those people.

The point of the article is to point out that languages, frameworks, or apis that expect a level of discipline to write well are inferior to ones that don't expect discipline out of its coders.

The takeaway shouldn't be - I as a programmer shouldn't learn how the machine works.

The takeaway should be - if I'm designing an API/Language/framework, I should figure out how much I'm relying on an engineer's discipline to make the code great (performant, robust, secure, etc). If I can reduce that reliance, the API/Language/Framework becomes better.
That sounds like a bug that should be reported to the alpine docker image maintainers. If not already that is...
I thought technical analysis (as opposed to fundamental analysis) assumes markets aren't efficient and subject to things like herd behavior and other psychological effects of human decision making. Otherwise things like momentum trading wouldn't work (i.e. price would just gap to the true value if markets were indeed efficient). If tech analysis works at times for me it would show that markets aren't that efficient as a whole.

IMO markets can't be efficient because we as humans aren't - our perception of value itself can be subjective and influenced by many things including FOMO, safety in numbers perceptions, risk aversion (usually), etc etc.
Why wouldn't you use normal auth for that? or client certificates if you don't want to handle passwords/SSO?

How does blocking user-agents, countries, TOR or proxies help with hosting a git forge for a few friends?
The line between capability and invention is ... broad and ill-defined.

I stumbled over that comment as well, though the article doesn't hinge on it.
The argument for more unified grids would have had more leg before the 2003 outage, where a failure was propagated through the grid and resulted in a blackout for a large part of the US. With multiple separate grids, at least you reduce the impact of such event.
Responsive Text Truncation with CSS
Thank you very much for your analysis and explanation. I was a happy customer and would recommend them to almost anyone, up until a few minutes ago.

There was always a nagging voice in the back of my head - "their backup encryption can't possibly be good" - but I wanted to believe it since their deal is so good, in terms of storage per dollar, and it's hard for me to afford otherwise right now. I did a bit of digging not too far back and their help pages go into a small amount of detail but ultimately just say "trust us". I trusted them to throw away my encryption password after a session, which is terrible, of course. After reading all of your work, I cannot even countenance trusting them anymore.

Ironically the first thing that comes to my mind for offsite backup is Backblaze B2... if you do all the encryption before it leaves your machine, then it doesn't matter what they do, and their storage is cheap. Rclone or similar means that their client software need not be trusted. It's up to whether you tolerate their business practices.

You mentioned in another comment that you are still looking for cloud backup software which ticks all the boxes - why did you not go with Rclone? On the surface it looks great but I haven't tried it yet.
Damn you Olin Shivers!
It’s not really the same organization anymore; they got bought by Securitas in 1999.
Actually markets are efficient, they just aren't maximally efficient.
Google Presents: Search in 2020 – AI Enhancements for Search
Wasn’t 2008 crisis due to excessive risk-taking by government-backed banks?

I doubt it is an “instruction” on markets efficiency — yes, if a government puts a lot of tax and newly-printed money in ponzi-schemes, bad things will happen.
Rewrite as: "Imagine that as the sun rises in the western U.S. ...".
Except `const` ruins interactive rapid prototyping using the browser DevTools console. If `width` was declared `const width = 800` you can't interactively experiment by setting `width=1024` because you get `..TypeError: Assignment to constant....`
Learn Automation Testing, Select the Right Test Automation Software
My comment applies also to optimizations.

Because I have seen those kind of discussions too many often, even back on Usenet days, like the example you point out.
It would be interesting to have a dynamic page for the most recent blog post which 'compiles' to a static web page subsequently. So comments are live for a while, but then become static content after the post goes off the front page.

Whole classes of spam prevented...
Do you, or anyone else here, have any experience with using a slide duplicator on a macro lens with a digital camera, DSLR, for 25 mm slide duplication?

Especially I wonder if you've got advice on picking a useful level of resolution when digitizing slides. I seem to recall that a 35 mm slide contains around 10 megapixel data. If correct, is it at all useful to digitize at a higher resolution for general purpose usage, eg display on a computer or showing slideshows with a digital projector.

Otherwise I'm currently leaning towards digitizing at 4K resolution as a default, given that 4K is 8.2 Mpx.

How does dynamic range come into play? I seem to recall that slide film has a high dynamic range in general.