skysight-inc/HackerNews huggingface dataset:
Google searches are in no way free. Businesses pay for them in ad spend. Governments pay for them in lost tax revenue and opportunity costs lost through decisions influenced by Google's lobbying.

These are indirect costs, but they still have an overall economic effect.

You could argue - perhaps with some justification - that the net value generated by Google search is more than the net economic costs. That would be an interesting thing to try to estimate, and so far as I know no one has attempted it.

But that just highlights the underlying problem, which is that most mainstream economic models are completely unfit for purpose.

We're trying to run a 21st century economy using banking systems that haven't changed in principle since the 15th century, and econometrics that have barely evolved since the 19th century.

And all of that happens with a huge political bias that overestimates the value of some activities - including speculation, and other forms of wealth capture - and underestimates the value of authentic wealth generation.

In fact no one knows how well the economy is doing, because we barely have any idea what an economy is - certainly not in 21st century terms, where "the economy" is clearly a global pattern of resource flows, innovation, and future potential, not just an epiphenomenon of national or corporate accounting.

Not calculating GDP correctly is a tiny symptom of that. A full solution is probably going to need a complete reinvention of the entire field.
Second is the first loser. Third is the best of the rest.
> The psychologists guessed it was because silver medal-winners compare themselves to the athletes who won gold and feel they came up short. By contrast, bronze medal-winners seem to unconsciously compare themselves to people who didn't win a medal at all.

Bronze: the Gold Medal among also-rans.
Drew, you're actually wrong here. Safe systems languages predate Rust by quite a while, most of them being in the Wirth family (Modula, Oberon, etc.). Given that here at HN, we have a large constituency of Lisp Hackers and Unix Haters (as in the handbook), if somebody talks about how C is junk, and how safe systems languages should be used instead (esp. if that person is pjmlp, nickpsecurity, or lispm), they are likely referring to those, not Rust.

So not a reasonable connection to make, if you know a bit more of the context. I certainly don't blame you for making the jump, but I seem to be in the minority.
I think the idea is that if people didn't have to come to the same office, they could live where it's cheap; thus, they wouldn't have to get that bigger apartment in an expensive area.
There is something radically wrong with how they measure productivity. I don't know what it is, but the details matter.

I remember the first verse of this song, back in the '90s when economists were wondering if information technology was a productivity sink. All of this new fun stuff was everywhere, but productivity measurements were going down. At the same time, just-in-time inventory management was acknowledged as the greatest innovation since sliced bread---and you can't do that without information technology. And the changes since then have only made IT more central and that has reduced the friction to do essentially everything else.
It is in retrospect a pretty banal observation. If cipher design is about achieving a certain security level at the lowest cost per byte, it sort of stands to reason that you'd want to design them around those features of a CPU on which the market is going to put the most pressure to improve.

In fairness, some of this design philosophy --- which Bernstein has held for a very long time! --- gets a lot clearer with the advent of modern ARX ciphers, which dispense with a lot of black magic in earlier block cipher designs.

A really good paper to read here is the original Salsa20 paper, which explains operation-by-operation why Bernstein chose each component of the cipher.
DeepLearning.University – An Annotated Deep Learning Bibliography
R is a dying language. The only people that use it are statisticians too afraid to learn modern programming languages.
> Copyright and patents are regulatory property. They're created by government, and what rights that property entails is defined entirely by the government. All "property" is conceptually fictional, but government is effectively restricted from, for example, redefining the meaning of real property in a way that subverts constitutional protections against takings.

This, and your whole post, make a very good and interesting point.

There is definitely a potential distinction (and, AFAIK, no clear case law on it) here, but I think the distinction is less in regulatory property vs. other property classes and more in the fact that copyright and patent are temporary property. I don't think there is anything that clearly stops new, government-issued property grants (whether of real property or otherwise) from being limited in a way which would permit some later conditional reversion to government use -- the limitation would be part of the property granted ab initio and thus there would be no taking -- but existing property rights cannot be curtailed in favor of the government without compensation.

A retroactive change to existing grants even of regulatory property like copyrights and patents that amounts essentially to an early termination (and making something covered by such an exclusive right freely and publicly available would be essentially an early termination) would seem to me to still be a compensable taking, though I will agree that I haven't seen any cases of this being litigated and there is potentially tension between Article I power to grant (and define the scope of) the exclusive rights and the Fifth Amendment takings clause here that makes it somewhat murky.
I don't want this to be either a flamewar or stupid. The Rust community has a strong commitment to be welcoming and inclusive, and this means we try very hard to discourage bashing other languages (who could want to join a community that is constantly talking trash about the language they work in every day?). Despite this, a meme has been spreading, mainly among C programmers, that the Rust community does go around bashing other languages. This meme harms the work our community is doing and is not supported by evidence.

Also, I find the criticism of C you responded to quite valid, not "talking smack." It is a problem with C that it has several basic functions which are deprecated for security issues. This is a problem that C has much more than most other languages.
Thanks, this is encouraging.
That kind of hackery was necessary because K&R C didn't give you any sanctioned way to write your own printf-like functions. ANSI C introduced <stdarg.h>.
I will politely disagree with your conclusion about modern versus historical media, because I think we could reasonably make an argument that the mechanisms are merely different in their manipulation and not in their scope.

Otherwise, though, I agree that for progress to be made a non-violent movement must be present. Being a violent movement doesn't really work unless you've got outside support against your state.

That said, and to speak to the implications you mention, it is my firm belief that while a violent movement is doomed to fail it still must exist for the non-violent movement to make progress.

If the choice is between listening to the vocal but peaceful minorities and ignoring them, the choice historically is to ignore them. Once the minority's voice is seen as a less-costly alternative to dealing with violence, the state tends to listen.

MLK had Malcolm X. The LGBTQ folks had the Stonewall Riots.

It's a bloody and inefficient way of making policy, but it seems to be the course of things.
Came here to post Rusty's API Design Manifesto too :)

This page is a more concise overview of the levels: http://sweng.the-davies.net/Home/rustys-api-design-manifesto
Don't disregard the amount of computation Minecraft does. It is not in the same league as the other games you mention. Even more so if you place blocks that require frequent updates (such as redstone logic).
This always comes up, so I'll just leave this here:

http://strikemag.org/bullshit-jobs/
Actually, this brings up a good question. Why not build a system where a patient can keep their record with them and only share as necessary. I'm thinking along the lines of a password manager.

This also removes the need for a giant centralized database which would be a nice ripe target.
Uh oh, this is pretty convincing=)
They absolutely were related (as were databases and FPUs). Had these mainstream business applications not driven them, it would have likely been years later before they became standard equipment. The FPU was likely originally added with 'serious' scientific and engineering computing tasks (including CAD) in mind, but it was the more mundane and common spreadsheet and database applications that drove demand.

Here's what I remember from back then: early PCs (8-bit era: Apple // etc) had no socket for a FPU (i.e. not even an expansion option), every IBM-compatible PC had a co-processor socket starting with the 8086 (fun fact: the 8087 wasn't even shipping when the PC was designed, and boy were they expensive for what they did when they shipped) but almost no one bought one until the late-286/early-386 era for general-purpose computing, by the 386 era the FPU was pretty much standard equipment on any 'real' business PC. So the software evolution was: no FPU support, optional FPU support, FPU required. (i.e. by the last generation of DOS applications, several major apps had dropped their floating point emulation libraries and would crap out with an error along the lines of 'coprocessor not detected/installed')

The evolution of the FPU was very similar to how the GPU has played out in terms of becoming a standard, expected component. As with the FPU, CAD and all sorts of other scientific/business applications were the initial drivers of the, but gaming is what caused unit volumes to explode and the reason it is now standard equipment.
It was a really big deal for a long time that a better 2d graphics card meant your spreadsheet software ran faster.

People would justify getting a better machine for playing games by saying that it would make their work more productive too.

In more recent times, look at all of the video games that made sure they could run well enough for casual players on a reasonably recent vintage laptop. I know I bought a new laptop at least once specifically so that a video game would be playable. My code compiled a lot faster on it (SSD) but I accept that I really bought it for playing games.
I'm assuming the "rare star with a strong brand" is someone famous outside of the PSO cottage industry (i.e. in films or something).

The whole thing reads like someone trying to sell you on a shady MLM.
Writing proper XML tools is very difficult. XMLs are usually parsed without considering the dtd. It seems the dtds are just for humans to read. As you mention, XML becomes more interesting with extensibility. IMHO XSLT is the key technology for that but unfortunately there is no reasonable support for XSLT 2 because the standard is just too complex. And XSLT 1 is barely interesting to use.

By the way, there's SLAX, it's isomorphic to XSLT but with nicer syntax. Nice approach but anyways, the standards are horribly complex and stiff.
Productivity increases are going to the top earners, as wages stagnate for most of the population.
http://inequality.org/income-inequality/

This has many reasons behind it, including political factors such as the decline of unions and increase of free trade.
The point, I think, is that GDP isn't capturing everything that matters in understanding this paradox, regardless of whether that is accidental or by design.
Ask HN: How do small startups and non-technical founders do data analysis?
Is it pretty much still the same as four years ago?

https://news.ycombinator.com/item?id=4707903
Not all of us.
Because then the patient can alter those records or see data the shouldn't (doctor writes a note about patients hypochondria).

Junkies can go from doctor to doctor getting the same script and then deleting the record.
Yes exactly. Like the answer to pretty much every question about data, a treatment, a test, etc - the answer is, "Well, it depends on the problem".
Hearts Snakes and DJ Khaled: 6 ways emoji data science explains pop culture
And if you don't turn it into a business, it doesn't, even though a lot of people may find your hobby project interesting/useful.

What's the commercial value of a free live streaming app that captures evidence of a (say, for the sake of argument) a police assault, which eventually leads to a riot?

GDP is like a summary of all relevant execution paths through code. But it's really a list of paths that are considered relevant for traditional reasons.

It's not a complete picture, and in many ways it isn't even a useful one - because there's a huge implicit social morality tied up in econometrics that makes assumptions about social value.

Those assumptions are becoming less and less relevant for all kinds of technological, political, and even economic reasons.
I didn't mean to imply that you needed to increase function pointer size or otherwise change pointer representations to add such counter-measures. I mentioned tagged pointers in the ancestor post as a classic justification for restricting conversions between object and function pointers.

Restricting void conversions for function pointers is just a pragmatic example where part of the burden of implementing and enforcing new language features can be paid by reference to the C standard and the license it affords. It's loosely related to tagged pointers in that both depend on software not abusing the type system too thoroughly. And as problematic as C's type system is, it's not without rhyme or reason.

We don't _need_ to rely on the the C standard in any way, shape, or form to implement counter measures. But the function of a language standard is to be a locus for these things, and to help ease the burden of coordinating and implementing changes, and pushing adoption among a wide and diverse community.

As for simply just switching to some other language, I don't think that's even remotely realistic. C isn't going away anytime soon, and neither are people going to stop writing new C code anytime soon.

People rave about a language like Rust, but there is no language called "Rust". It's constantly being updated, claimed guarantees regarding compatibility notwithstanding. You simply cannot rely on Rust to create a large and complex ecosystem of software yet, and probably won't for awhile. Conversely, when authors of a language like Go adamantly refuse to evolve the language out of legitimate concern for compatibility, people flip out. Language maintainers are damned if they do, damned if they don't. There's no simple answer or approach.

C has survived for as long as it has partly _because_ undefined and unspecified behavior provide space for it to slowly evolve through controlled experimentation. And it will continue doing so (and should do so) on its descent just as it did on its ascent.
In the first case they're held accountable because business interests are compromised. In the second, no business interest is compromised by screwing up Joe Public's computer (except Joe's, but he has no material social leverage, so...). Thus no accountability for ad networks, even if there logically and legally should be.
> the requirement that all code be unwindable.

i would not call that an improvement in all cases... the extra code produced by enabling exceptions, even for the latest compilers, produces enough bloat and slow down for basically everyone seriously concerned with real-time performance to turn them off.

small simple functions are forced to have prologue/epilogue, use a frame pointer and to preserve the return address on the stack. doesn't sound like much, but if your function does anything simple (float f() { return 1; } bool g(float a, float b) { return a < b; } etc...) you spend all the time paying for exceptions instead of the intended functionality.
I usually encourage friends to never stop looking for opportunities to expand. Comfort and "stability" is worth something, but it's important to not stagnate (if you want a career). I would do a side project, consult, do something new at work, or find a new job. :) Do anything but let the status quo guide.

If you work for a reasonable company (and I feel most are), your quality of life is something you make happen or let happen. It is very easy to let the company guilt you into working 12 hours. Set appropriate boundaries and be in control.
Its not crazy when you consider typical video game economics (hundreds of developers/long dev time/high budgets/high price per unit) vs. typical website economics (handful of developers at best/short dev time/low budget/microscopic price per "unit").
Video games are often intimately tied to the underlying hardware/software stack allowing further optimization whereas the same webpage can often operate unaltered on a multitude of devices.
And video games are often judged by how many "objects and vertices" they can show and how fast they can show them, whereas websites have other criteria.
don't get ahead of yourself... that ABI isn't there yet. :P
When you do a projection of user growth, you'd be able to anticipate the curve and prep ahead. Those caught off guard are either such a runaway success that it doesn't matter, or don't do the growth projection and deserved the fail.
Yep, video/audio aside, most of the textual content and data we deal with is manageable on 56k or less.
It's really something the stdlib should do, which, when I've seen it implemented, is usually what happens.

The compiler should just provide good inlining support, so that if eg. you include the short-string optimization in your stdlib, the compiler can optimize it down to a couple bit operations, a test, and a word copy. If the test fails and your string is more than 7 bytes, it's perfectly fine to call a function - the function call overhead is usually dwarfed by the copy loop for large strings. And then if new hardware comes out and you vectorize it differently, you can get away with replacing that one function in the stdlib instead of recompiling every single program in existence.
> When people talk about fruit at cocktail parties, my only quibble is something semantic: how people use the word “the"—as in, when the strawberry arrived in North America, or how the avocado is paralyzing Central American farmers.

Dude goes to some pretty stuffy parties.

For real though this is interesting. Seems logical that as a food we grow consolidates it becomes easier for one biological agent to wipe it out.
Yes, on balance I think you win this debate. You are perhaps a little too strongly influenced by the Cold War origins of this term, when for a couple of decades now the term has been almost exclusively used to describe places with poorly developed infrastructure and institutions. Phrases like "third world conditions" are common and as we agree, a feature of modern developing nations is high spatial variance in such things. So, since the Cold War is history, and since semantics evolve, I think a reasonable case can be made for taking the modern definition of "the Third World" to be the union of spatial areas which the speaker deems to exhibit third world characteristics. In any case, I'm shortly going to go out in the northern section of West Oakland, and there I will encounter scenes that I literally will not be able to distinguish from bad areas in Addis Ababa.
You're right, I think we generally agree.

I was just picking at a nuance of what you said about wasted CPU cycles. Yes, some languages and toolchains these days are less efficient to trade for ease of development, but from my experience it seems like I/O to RAM/disk/network is still 80% of the problem and "less work per CPU instruction" is 20% of the problem.
Eh. Remember that a lot of these guys think about hardware implementations, so they're fixated on ASICs, not GPUs.

At some point the inequality gets too far out of whack and it's time to reconsider your values. Same reason we keep switching back and forth between dominant network architectures every 8 years. Local storage gets too fast or too slow relative to network overhead and everyone wants to move the data. Then we catch up and they move it back.
I remember way back in the DOS days there were a lot of clever things you could do with setting up DMA transfers which would then run in the background... With CPU/memory latency and bandwidth being so much more of an issue these days I can't see why this isn't still the case. Maybe it's all done automatically in the background now?
While I get your point, the XML document includes so much more information than the JSON example. Encoding, version, data types, 'scale', response length, etc.

Please try not to make any false equivalences :)
As someone who's worked in drug discovery and development, I wish finding bio-markers and drugging targets were this easy so we could improve the lives of millions of patients. Patient phenotypic information is locked up in the clinic notes often as free text or is no longer entered very well at all because doctors are rushed seeing more patients. Tools like The human Phenotype ontology format help solve this problem and are being used in translational biomedical informatics. http://human-phenotype-ontology.github.io/downloads.html
That is not the correct question. The correct question is:
How much of a percentage do gaming rigs actually constitute of high-end CPU sales.

Gamers are willing to pay three times the price for hardware just to get a few percent more performance. I would claim that drives innovation.
Yeah, but the Zimbabwean GDP is basically worth the sum of a metric ton of mustaches. You might as well be saying dirt is more useful.
It certainly is. Personally, I've grown beyond purely breaking rules for the sake of it, without concern for the repercussions. I still break the rules, all the time, but only when I think the rules are wrong and no true harm will come from my breaking them. It's gotten much less fun in my old age, just seems rather boring and rational.
are you sure?

i think in your cosmic ray example, you get well defined behaviour producing unexpected results - its a subtle distinction, but that's part of why UB is horrible, its results can be even less reasonable than those of random bit twiddling.

e.g. your standard conforming addition function will still always perform addition - now if by definition that function merely looked like an addition but was actually describing UB, the result could be anything at all, including multiplication (unlikely, but possible) and doing nothing at all (very likely).