Luddites have been getting a bad rap for 200 years but turns out they were right - <AUTHOR> https://qz.com/968692/luddites-have-been-getting-a-bad-rap-for-200-years-but-turns-out-they-were-right/ <comment><USER4> >"The lesson you get from the end of the Luddites is: Do the people that are profiting off automation today want to participate in distributing their profits more widely around the population, or are they going to fight just as hard as they did back then?"... [Luddites] just thought if you're going to make more money because you're more productive, you need to kick some of that money back down to the workers.

In actuality, what happens is as expenses decrease through automation, either capital is bid up or prices are reduced so that the profit margin (net income over revenue) is in line with the amount of risk, along with other things. So, true, a market economy does not "kick some of that money down to the workers", but rather spreads the benefits and lower costs to everyone through lower prices or higher quality.

Were all the benefits of automation going to the bottom line of the business owners, you would see a steady increase in corporate profit margin [0]. Right now they're near historic highs but that is only very recent and the trend is not in line with the trend of automation in the US. Furthermore, if you look at the top 1%, much of their income came from wages and self-employment business income:

> The richest 1% earn roughly half their income from wages and salaries, a > quarter from self-employment and business income, and the remainder from > interest, dividends, capital gains and rent. According to an analysis of tax > returns by Jon Bakija of Williams College and two others, 16% of the top 1% > were in medical professions and 8% were lawyers: shares that have changed > little between 1979 and 2005, the latest year the authors examined (see > chart). The most striking shift has been the growth of financial > occupations, from just under 8% of the wealthy in 1979 to 13.9% in 2005. > Their representation within the top 0.1% is even more pronounced: 18%, up > from 11% in 1979. [1]

[0] [https://si.wsj.net/public/resources/images/ON- BL063_StWise_G...](https://si.wsj.net/public/resources/images/ON- BL063_StWise_G_20150612191313.jpg)

[1] [http://www.economist.com/node/21543178](http://www.economist.com/node/21543178)

<comment><USER5> > Were all the benefits of automation going to the bottom line of the business > owners, you would see a steady increase in corporate profit margin.

It's no coincidence that "corporation" was something that only became viable on that time.

Really, you got a very selective symptom, got a positive result, and are just dismissing it. Why?

> The richest 1% earn roughly half their income from wages and salaries

That's only because 1% is too big a number. Square it and look again.

<comment><USER4> > That's only because 1% is too big a number. Square it and look again.

Sure. Not exactly 0.01% but you can look at Forbes 400 and where they got their wealth and any trends.

> This year, we gave each member of The Forbes 400 a score on a scale from 1 > to 10 -- a 1 indicating the fortune was completely inherited, while a 10 was > for a Horatio Alger-esque journey. We also did the analysis for every 10 > years going back to 1984. Looking at the numbers over time, the data lead us > to an interesting insight: in 1984, less than half of people on The Forbes > 400 were self-made; today, 69% of the 400 created their own fortunes.[0]

[0] [https://www.forbes.com/sites/afontevecchia/2014/10/02/the- ne...](https://www.forbes.com/sites/afontevecchia/2014/10/02/the-new- forbes-400-self-made-score-from-silver-spooners-to-boostrappers/#3e573e5b2aff)

<comment><USER6> > _Looking at the numbers over time, the data lead us to an interesting > insight: in 1984, less than half of people on The Forbes 400 were self-made; > today, 69% of the 400 created their own fortunes._

They make it sound like some triumph of the American dream, when it's at best a humble change. After 3 decades of what has been a huge change in economy, moving to the "information economy" and the "digital age", and with all the celebrated tech moguls being added to the world's richest people, there's only ~20-25% more self-made rather than inherited fortunes. As if the digital age just impacted/disrupted 1/4 of the established wealth.

Meanwhile, the part they've missed, is that the American dream is not about getting to the "Forbes Top 400", but in general to moving up from poor/working class/lower middle class, and this has been problematic for decades, with increasingly less people making more than their parents.

<comment><USER4> The point that I was trying to make is that most of the inequality and wealth concentration we're seeing is due to entrepreneurship rather than passive growth of wealth. I'm hopeful that the trend continues and leads to a more equitable distribution of opportunity

</comment></comment></comment></comment></comment><comment><USER7> Supply side economics - against which the Luddites railed - is predicated upon the notion that it is better for the individual to adapt to hardship in an age of plenty than to create scarcity by imposing hardship on production.

<comment><USER8> Does this philosophy also assume the wealthiest won't try to manipulate scarcity in order to gain more wealth?

<comment><USER9> All sides manipulate everything they can to gain more wealth. But as the parent comment says, not every possible manipulation is rational.

<comment><USER8> Is the only rational manipulation that which makes me more wealthy?

<comment><USER10> Yes, if that manipulation is driven by you, and if "wealth" satisfies your subjective preferences. So it could be money and assets, or accomplishments, or relationships, and so on.

</comment></comment></comment></comment></comment><comment><USER11> For an illuminating perspective about different paths automation may take, which also uses history as a guide, see this: [http://www.economist.com/news/leaders/21701119-what- history-...](http://www.economist.com/news/leaders/21701119-what-history- tells-us-about-future-artificial-intelligenceand-how-society-should)

My key takeaway is that, often automation can drive prices down, which increases demand, which in turn increases employment. This counterbalancing effect can eventually increase total employment, although the new jobs may go to different people.

AI replacing services is a bit different than robots replacing workers in manufacturing, in my view, because often the entire job is not replaced. It can have the effect of allowing the human to focus on (currently) non- automated portions of the job. Accounting is ripe for automation, for example, but I predict it will be a good thing for most accountants. Well, predictions are dangerous, but, there, I've said it.

As far as manual labor is concerned, it seems to me that ship has sailed.

</comment><comment><USER12> People who disregard other people's property and cause vast destruction because of their ideology are never right. I have no respect for them. There are non-destructive ways to bring your message across in this situation.

A society with automation will always be richer than one without it. The fight against automation is really baffling me. People are actively fighting against progress. Automation eliminates boring stupid jobs and replaces them with great, interesting ones. I am extremely happy to live in a country that embraces science & technology.

<comment><USER13> Why should anyone care about their society if they reap no benefit from it?

<comment><USER12> Can you also justify murder with that or only destruction of property?

<comment><USER14> You absolutely can - the basic argument for jobs is essentially "you can't reap the gains of society, if you aren't willing to contribute to it [in the form of doing your job]" \- the underpinning argument being that there _are_ jobs you can do. If there aren't any (paid) jobs, then you're stuck in a situation where people are taking away your rights to the gains of society, for their own benefit.

At which point, you need to fix the system - either make it so that jobs aren't necessary to get the gains (i.e. the money), or create "jobs" that aren't strictly necessary, or, if you _cannot_ fix the system, rip it down with violent revolution and make sure the replacement system isn't broken in the same way as the predecessor.

Basically, it's outrage against a double-abstraction suckerpunch - <USER2> there's too much work or there's not enough work, you can't have both.

</comment></comment></comment></comment><comment><USER15> I think it might be worth pointing out that catastrophic "technological unemployment" is far from a sure thing at this point. We're still speculating that this is a thing which may happen in the future.

So far, labour force participation rates in developed economies is still in the same 60%-70% band that it's ranged in since women joined the workforce en masse in the 60s.

I'm not saying it's impossible, just that we're not in any better a position to judge than 19th century people were. These things are pretty hard to predict. Ultimately "AI" is not unique economically (short of Kurzweil-esque machine consciousness). The industrial revolution massively reduced labour needed to produce spoons or cars but actually increased employment rates in manufacturing. It was trade that reduced manufacturing employment rates. The communications revolution replaced the need for secretaries, typists, errand boys and many other clerical roles. There might be more people employed in "administration" today than at any point in history^. The relationship between labour saving technology and the demand for labour is complex, difficult to speculate about.

^The administration boom (pointed out by David Graeber) is baffling to me. I'd love to hear some theories on it.

<comment><USER16> Of course, as they say, making prediction is always difficult, specially about the future. But we can make educated guesses.

We know from the past that new jobs are created in activities for what there are not machines able to do it. We are running out of things inside that category. It's not so bad an idea to stop and think about what could happen when we arrive there.

"short of Kurzweil-esque machine consciousness"

I have never received a dime for being conscious, but I have been paid for making inferences that machines can't do. That they can't do yet.

</comment></comment><comment><USER17> My profile[0] has a quote about Marx and Smith hitting on the same idea, and this piece is a good illustration of that.

We have two competing sentiments - that workers are exploited by capitalists for the value they provide via their labor, and that the overall efficiency of an economy is dependent on people working in their own self interest.

I think the problem we face is not how best to redistribute wealth, but how to align these two sentiments instead of creating an adversarial relationship between labor and entrepreneur.

And I think Marx was right - workers _should_ own the means of production. However, the historical methods to achieve this have been overwhelmingly inefficient and usually enforced at the point of a gun. That's a mistake.

Meanwhile, in capitalist economies, joint ownership enterprises rose up and the cost of automation came down. Anyone can now buy a share of Apple stock for a day's wage[1], and carry around one of their super computers for a week's wage[2].

The real problem is one of culture. The Luddites had enough organization to mount frontal assaults on the textile mills that threatened them, so why couldn't they pool their resources and start their own mills?

Today, we encourage young people to take on loads of debt to go to college, ensuring they leave college subject to the whims of capitalists. The sentiment is right: it makes sense to encourage young people to carve out a living for themselves early in life. But the cultural method of achieving this makes no sense. It would make more sense to encourage young people to take minimum wage jobs when they turn 15 and investing every spare dime that they have - <USER3> giving themselves a basic income early in life.

The article suggests minimum wages, public pension funds, and higher taxes on business is the answer. I think it's absurd to penalize the most efficient, most product parts of an economy for being more efficient and more productive.

If coercive redistribution is something we deem necessary as a society, then we should be redistributing ownership of our most profitable corporations to those who are least able to fend for themselves. An equity tax that takes shares of APPL from Tim Cook and gives them to people on food stamps.

That way, marginal increases in productivity are not disincentivized by tax policy, and laborers who now own the means of production are no longer exploited, but rather rewarded in tandem with the entrepreneur.

[0][https://news.ycombinator.com/user?id=padobson](https://news.ycombinator.com/user?id=padobson)

[1][https://finance.yahoo.com/quote/AAPL?ltr=1](https://finance.yahoo.com/quote/AAPL?ltr=1)

[2][https://www.apple.com/shop/buy- iphone/iphone-7](https://www.apple.com/shop/buy-iphone/iphone-7)

<comment><USER18> I came across this theory the other day [https://en.m.wikipedia.org/wiki/Baumol%27s_cost_disease](https://en.m.wikipedia.org/wiki/Baumol%27s_cost_disease)

It seems to me to nicely explain the rise in incomes for, ironically, the least "productive" professions such as Health care, professorship, etc relative to anything that can be automated for high productivity.

<comment><USER19> Why should increased worker productivity increase wages?

Over a significant length of time, it does the opposite. If one worker can do the job of 100, then demand for human workers will go down in that industry. For any "Amazon warehouse slave" who demands $15 an hour there will be plenty willing to take the job.

</comment></comment></comment><comment> awinter-py it sounds like this article is asking 'when you replace many good jobs with fewer worse jobs + more automation, do you then redistribute the proceeds of that automation?' (i.e. make it illegal to make a profit selling textiles).

Even if they did redistribute the new income to the whole country, it wouldn't bring back the weaving jobs. Those jobs are gone forever.

Separately, legislating low margins in an industry sounds like trouble.

<comment><USER20> It is going to be easy to simply argue the details, but the broader question is more important -- For any specific use of technology, is it making our society a better place? Or a worse one?

<comment><USER21> In Luddites' case the tech was clearly making our society a better place, it's (apparently) the transition that was not handled gracefully.

<comment><USER13> That's a strong claim to make without an argument. How has automation and technology made society a better place?

<comment><USER22> Look at the machine you're writing your comments on. That thing wouldn't be possible without automation and technology.

Fewer people than ever are working mind-numbing, dangerous factory or agriculture jobs. That is a good thing.

<comment><USER13> Neither would the millions of deaths from new advances in military technology be possible without automation and technology.

Neither would the perpetuation of fake information and news on a global scale be possible.

For every bit of good the internet has done, it has also allowed bad things to occur too.

I'm not saying there is no good, but to say that it is only beneficial is a strong claim, I would argue it is more neutral.

<comment><USER23> I read the comment you replied to several times and couldn't find where it said that technology was _only_ beneficial.

Now your claim that is neutral is the strong one, but also one very easy to test: Don't use or consume anything made possible by technology, if your life isn't impacted in any way then you're correct... In this isolated, anecdotal case.

<comment><USER13> > In Luddites' case the tech was clearly making our society a better place,

Is what OP said-that is subjective. How is our world, better? Is it truly better? Sure-I have benefited from use of computers, but many people have been killed from use of computers (drones, for example).

It is very possible that all of this technology eventually wipes out humanity, which would not be beneficial, would it? The claim that technology has made society better is a very strong one, which no argument was made as for why.

Your test isn't a proper test. Technology is neutral in the sense that all of the good it has brought, has also brought upon lots of bad. For every piece of technology used for good(missiles for space travel) there is an equivalent use that has done harm. (Cruise missiles, which have killed scores of people.)

I'm not debating that technology had impact-but to say it is all beneficial, is a huge stretch.

<comment><USER22> Nobody forces the development and adoption of new technology. So any successful technology is "better" for the people buying it.

How far back would you go to claim that technology is not beneficial? Pre- industrial? Pre-agriculture? Pre-tool use? Technology made humans the most successful multicellular species we know.

<comment><USER13> Actually new technology IS forced on others-see the countless peoples killed by weapons of war. They didn't choose to get bombed out by a GPS guided missile, did they?

What about the people killed after the atomic bomb killings? Technology is forced on everyone. Things we thought were convenient (cars, ships, the ICE, fossil fuels) may now plunge the planet into chaos and cause immense damage to our environment. Many people who have never had the choice of owning a car are now suffering from droughts and famine because of fossil fuel burning. It's naive to say technology isn't forced. It is, and always will be.

Again, easy for us to say in the west, especially the US. We've seen a lot of the good, but we too have seen the bad. It's typically neutral.

Technology is not universally beneficial. You can go back maybe to the first group of humans who used a fire to survive a cold spell but since then, there has been destructive and constructive technology.

<comment><USER23> > Again, easy for us to say in the west, especially the US. We've seen a lot > of the good, but we too have seen the bad.

I, for one, am not in the US, pal; I'm in a third world country riddled with conflict and crime. Stop the sad regionalism.

Your morality babble still doesn't change the fact that automation and technology _have_ made us the most successful species. Even your ludicrous "for every good some bad has come" is false on its face. If it were true, the population would forever stay the same.

> Technology is not universally beneficial.

Again, nobody claimed it was, what was claimed was the net effect, and that _has_ been positive.

I don't even know why I'm wasting my time having a discussion with someone who thinks technology isn't "good" (and you do think that, you think it's "neutral", not "good")... _over the internet_.

In other words: If it weren't for technology, you couldn't be whining about how awful it is from your iPhone, buddy.</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


BBC One – Panorama, the VW Emissions Scandal - <AUTHOR> http://www.bbc.co.uk/programmes/b06q6nh2 <comment><AUTHOR> Just catching this now - fascinating dig into the scandal, with in the lab tests showing how the tests are run and how the cars seemingly decide when they are in a laboratory (when do you wait six hours then drive four miles in a straight line without turning or braking at all?)

Fascinatingly, GM car from 2015 does exactly the same thing. Interesting news for all you shorters out there</comment>


China's Tencent is giving away 10TB worth of free cloud storage - <AUTHOR> http://thenextweb.com/asia/2013/08/30/forget-1tb-chinas-tencent-is-giving-away-10tb-worth-of-free-cloud-storage/

<comment><USER2> Am I the only one that see that as an obvious trap ?

We just realized that any data going through the wire should be considered as directly provided to state agencies, and now we're excited to be able to put our private data on chinese servers ? I genuinely first thought it was a joke.

If you regularly watch your server logs, you know your ssh servers are continuously tried for bruteforce. And if you often run "whois" against attacking IP, you know that since last year, most of those attackers are chinese.

Of course, nothing allows to say those attacks are made by government rather than individuals (China is the biggest country in term of population, after all), but that's enough for me to decide not to elect this country as the place where I put my data (and yes, I try as much as I can to not store anything in US too).

<comment><USER3> As a non Chinese living outside of China and with no plans to ever travel there I'd rather let Chines government read my data than my own government.

<comment><USER4> To put it another way: both China and the US might read all my mail and then consider me a dissident against their respective regimes. But, if the US wanted to do something with that information, they could just have me arrested; whereas if China wanted to do something with that information, they'd have to start a war.

An analogy: a teenager who sneaks out of the house at night, worries much more about their own parents finding out, than some other random adult. Other adults might be strictly more powerful than their own parents in any sense you'd like to measure, but the teenager isn't living under _their_ rooves.

</comment></comment></comment><comment><USER5> I can't understand how the math adds up! 10TB harddrive on ebay costs $900[2]. To download 10TB once with standard AT&T 30GB-$300 plan, it costs 3000GB*300/30GB 30k USD! Or may be with some bulk-plans it can go down, but not orders of magnitude. Hard-drive is instantaneous, always available and safer. May be I am having a bad time to figure out the obvious answer, but what is it?

[1]-[http://www.att.com/shop/wireless/plans- new.html#fbid=pKhYW7o...](http://www.att.com/shop/wireless/plans- new.html#fbid=pKhYW7oAof0)

[2]-[http://www.ebay.com/bhp/10tb-hard-drive](http://www.ebay.com/bhp/10tb- hard-drive)

<comment><USER6> Slightly OT, but I had a similar reaction to China's "Thunder".

It's a Chinese download manager that has a cache of a large percentage of all bittorrent content available on the net.

It works kind of like a communal seedbox, whenever a person opens a torrent using Thunder, it gets sent to the server which also downloads the same files, unless the server already has it (which it usually does). You'll then be downloading from the normal P2P network in addition to downloading from Thunder's servers. It always manages to max out my bandwidth (2 megabytes/s) so I'm not sure what the max speed you can get is. This also works for old torrents with no seeds and no peers, as long as someone once used Thunder to download the torrent, you can grab it from their servers.

The service costs ¥150 per year ($24.5, €18.56), which seems incredibly cheap for all the storage and bandwidth costs they'd incur

<comment> UVB-76 Assuming you are referring to Xunlei [1] it is effectively a P2P network. The files you download are then shared with other users.

[1] [https://en.wikipedia.org/wiki/Xunlei](https://en.wikipedia.org/wiki/Xunlei)

<comment><USER6> Yes, that's the one. The paid version gives access to their file servers, where it becomes more like usenet than P2P.

They also allow you to stream the content on their servers instead of downloading to your local disk. You can then use torrents as a kind of 'bookmark' and use Thunder as a practically unlimited cloud storage + video streaming service. They also transcode all HD content to 'fast', 'HD', and 'ultra HD' versions for you to choose between when streaming.

It's really incredible the things you can do in a country unencumbered by copyright restrictions

</comment></comment></comment></comment><comment><USER7> Unfortunately everything is written in Chinese.

But heck, 10TB is 10TB. I'm signing up, I hope I press the right buttons.

<comment><USER8> Yeah, but isn't the IOS app localized to english? I know the android version isn't :/

<comment><USER7> I'm using Android. That is so unfair, considering Android is dominating the rest of the world, esp. Asia (and not all Asians read Chinese).

<comment><USER6> It's not really targeted towards non-Chinese. I wouldn't be surprised if they region-lock it to only Chinese IPs either

</comment></comment></comment></comment><comment><USER9> Tencent is one of the biggest Internet companies in China, with loads of cash. Espionage will not be my primary concern because common sense dictates you should not put sensitive information in the cloud, and if you have to put it out, use encryption.

My concern is this type of services can be taken away from us anytime, even in US, google and yahoo already shut down a number of services that they don't think useful/profitable

<comment><USER10> I would probably store something private there... After some GPG of course.

<comment><USER11> Assuming they didn't break PGP yet.

<comment><USER10> I'd safely assume it hasn't yet been broken. There are hundreds of smart mathematicians all over the world and in case such thing happens, we'll get to know about it really fast because it will bring instant fame to anyone revealing the weakness.

</comment></comment></comment></comment><comment><USER12> But who outside of China would put anything of importance on Chinese servers? I guess if you just want to back up your cat gifs...

<comment><USER13> But who outside of China would put anything of importance on USA servers?

It is the same question, given that USA spying is the biggest in the world, specially industrial spying, and that thanks to the patriot acts they could spy on you even legally.

You could put something important in the cloud, but this could not be secret.

<comment><USER14> I guess it's not so much a question of spying, but whether they will manage not to lose your data. Hell even US providers stuff it up sometimes.

<comment><USER15> I think it is not a big problem. Tencent is a public listed company with $ 100 billion market value。 Same level with facebook and amazon

</comment></comment></comment></comment><comment><USER16> Blimey! Any idea if there is a way to mount that on a Linux server?

</comment><comment><USER17> For anyone looking to do this you must download an app for your Android or iPhone, without doing so you just get 2GB.

</comment><comment> li-ch Actually, the internet speed in China will limit the usage of such services. It took me 3 hours to upload a 1G file (and I'm in Shenzhen, where Tencent headquarter is located). I doubt Tencent is just claiming an outrageous number and assuming no user will ever reach it.

</comment><comment><USER18> As a native chinese,I have no comment for Internet censorship .I don't wanna talk about whether I'm under surveillance for what i'm doing on the web.I just wanna say fu/ck off CCP.

</comment><comment><USER19> most everything's a duplicate: mp3's, movie files, etc. the only things are files and photos, files probably average less than a mb, photos can start to get tricky.

</comment><comment> o0-0o I just signed up, and am now uploading ten tb of win swap files. ;p

</comment><comment><USER18> I'm a native chinese,i just made a comment,but unfortunately it's deleted.I just told the truth,but i didn't expect that in America, a country of allegedly freedom,did deleted sth they don't wanna see...it's pathetic...

</comment><comment><USER20> They should totally come up with a snapchat clone as well

<comment><USER21> Here you go: [https://itunes.apple.com/us/app/id597761546?mt=8](https://itunes.apple.com/us/app/id597761546?mt=8)

<comment><USER20> $800m of blackmail material

</comment></comment></comment><comment><USER22> look at what you can find on these 10TB cloud storage with [http://search.torapp.info](http://search.torapp.info)</comment>


The Importance of a Consistent Message on Your Landing Page - <AUTHOR> https://lightermail.com/blog/2013/02/13/the-importance-of-a-consistent-message/

<comment><USER2> This is a very good point! Thanks for sharing this info, I guess when you're working for as long as you have on this project you tend to overlook "the initial" understanding of a new user and how they might perceive your product. I've signed up by the way, very cool tool!</comment>


Jury finds CBS infringes podcasting patent, awards $1.3M - <AUTHOR> http://arstechnica.com/tech-policy/2014/09/jury-finds-cbs-infringes-podcasting-patent-awards-1-3-million/ <comment><USER2> A lot of complaints about East Texas in here. I've had a few myself since I grew up there. That being said, this isn't the only example of gaming the patent/courts system. Blaming the jurors for being prototypical dumb hicks that some of them are is fun but misses the point. The real problem is that a tech patent case wound up there to begin with. There is definitely no interesting podcasting or other telecomm technology being invented there (Longview); and that isn't the fault of the jurors. These companies set up sham offices in the area to pretend that they belong in the Ninth Circuit court. Fix the courts and you'll improve the situation a bit. Of course, the company was predicated on a sham to begin with, so I'm not sure how you fix _that_.

<comment><USER3> I don't think most people see it as the jurors being "dumb hicks" but rather the jurors (a fair number of whom are likely local business owners) having a vested interest in having legal teams from all over the country continue to bring cases to this district to prop up local businesses (which is far more likely to happen if they find for infringement because it the plaintiffs who move the cases there).

Wouldn't matter if this sort of thing were happening in NYC or SF (though, practically speaking it would be less likely since the business brought in through the lawsuit treadmill would be far less of the overall local economic pie), it would still be a huge problem. When local jurors find in favor of the plaintiff so often and with a significant amount of those cases being so egregious that circuit courts are later forced to find that "that no reasonable jury could have held the patent valid", then it seems likely there are some fundamental perverse incentives that have to be addressed.

[1] see the EFF link that paulgb provided in another post: [https://www.eff.org/deeplinks/2014/09/after-setback-texas- fi...](https://www.eff.org/deeplinks/2014/09/after-setback-texas-fight- against-podcasting-patent-troll-will-continue)

<comment><USER4> That is a conspiracy theory.

I think it far more likely juries are trying their best to apply bad laws to badly issue patents.

<comment><USER3> "That is a conspiracy theory."

You could call it that, but to be clear I don't think these people got together and planned this out in advance, I think a confluence of events occurred that resulted in a situation which was beneficial to them and now they act (perhaps even in a mostly non-coordinated way) to maintain and strengthen it... rather predictably.

</comment></comment></comment></comment><comment><USER5> So we don't do jury trials in criminal cases where the jury can get the crime (96% pleas), but when it is about complex and bullshit IP laws, where even very savvy person will be confused - fire away.

Something is very wrong with that system.

<comment><USER6> Most criminal cases plea out because sentences have increased dramatically over the last few decades. You can plea down to a small sentence or take your chances with 15-20 years in prison, if you're convicted. Prosecutors know this and pump up a case with as many charges as possible so you won't be tempted to take it to trial.

You can argue that juries aren't savvy enough to judge a complicated IP case and I'd agree with you but that's what the appeals court is there for. If the jury got it wrong, you can appeal to judges who, presumably, have a better understanding.

<comment><USER7> Most criminal cases plead out because the accused are guilty.

<comment><USER8> How do you know that?

<comment><USER9> Let's not kid ourselves - _most_ people [arrested by the police, charged with a crime, sent to prison] _are_ guilty. This is what makes preserving justice for the exceptions such a hard problem.

<comment><USER7> I totally agree with that last sentence.

</comment></comment></comment></comment></comment></comment><comment><USER10> This will be appealed until the end of time - all this did was cost CBS more in legal fees. In the intervening years, Personal Audio will use this one win as a stick with which to extort settlements, but that will only be effective against people that can't afford to litigate it.

These ultimate winner in appellate court after an extremely questionable verdict is usually the last man standing. Since CBS has vastly more resources than Personal Audio, my guess is that CBS will ultimately emerge the "winner," if you can call spending millions in legal fees "winning".

</comment><comment><USER11> God damn it, eastern district of Texas. Please stop ruining America.

<comment><USER12> Holy crap: correct me if I'm wrong, but 6000 nationwide patent cases in one year, and one judge had 900 cases in his court, meaning that one judge was responsible for 15 percent of this entire country's patent cases.

I hope I screwed that up somehow because that is insane.

[http://arstechnica.com/tech-policy/2014/05/the-year-in- paten...](http://arstechnica.com/tech-policy/2014/05/the-year-in-patent- litigation-more-trolling-more-texas/)

<comment><USER13> You hear a lot of complaints about the glacial pace of the courts, but is this guy really deciding 2.5 cases a day? Maybe he could stand to go slower.

<comment><USER14> Closer to 3.5, unless the courts work weekends in the USA.

</comment></comment></comment></comment><comment><USER15> EFF's statement [https://www.eff.org/deeplinks/2014/09/after-setback-texas- fi...](https://www.eff.org/deeplinks/2014/09/after-setback-texas-fight- against-podcasting-patent-troll-will-continue)

</comment><comment><USER16> The scariest part about these cases is with Trans-Pacific Partnership[1] they set a precedent for not only the United States, but a whole slew of other countries[2].

1 - [http://en.wikipedia.org/wiki/Trans- Pacific_Partnership#Intel...](http://en.wikipedia.org/wiki/Trans- Pacific_Partnership#Intellectual_property_provisions)

2 - [http://en.wikipedia.org/wiki/Trans- Pacific_Partnership#Membe...](http://en.wikipedia.org/wiki/Trans- Pacific_Partnership#Members_and_Potential_Members)

<comment><USER17> Dammit, I hope this crap will not spread to EU as well trough the Transatlantic Parternship.

</comment></comment><comment><USER18> If the jurors in that area of the country have a special incentive to keep these trials going, then that should be grounds to move them elsewhere. Local businesses may be benefitting by having the increase in outside revenue due to the influx of legal teams and such.

</comment><comment><USER19> What a kangaroo court case.

> The company made the argument that the "podcasting" patent actually covered > "episodic content" transmitted over the Internet, including video content. > The patent refers to a "compilation file," which Personal Audio lawyers say > correlates to the HTML webpage that CBS hosts its content at.

</comment><comment><USER20> I think 1.3 million ends up being an interesting number. The number is small enough that CBS might consider just paying it.

However, they are a huge company with alot of lawyers at their disposal. They could chose to fight this without the financial burden that alot of smaller players like Adam Corolla would have had.

> Now that its patent has been validated against CBS, Personal Audio will be > allowed to move forward with trials against NBC and Fox.

This is also interesting. The enemy of my enemy is my friend may come into play here as I'm sure FOX and NBC don't want to go to court.

I can see them helping CBS in an appeal with what I think is called an amicus breif/curiae on CBS behalf.

</comment><comment><USER21> Wonder if this trial is partially why the Adam Carolla trial settlement had a quiet period until Sep. 30?

<comment><USER22> More than likely. Can't wait to hear why Carolla settled - wasn't his rallying based on defeating the patent troll rather than just getting the troll to go away?

Using money donated by listeners to _defeat_ the troll.. :(

<comment><USER23> From this CBS case, you can see that even a large company with bottomless legal pockets can lose a ridiculous patent case. Who's to say that Carolla would have won?

</comment></comment></comment><comment><USER24> What the hell is wrong with East Texas?

Is it the bed and breakfast industry? Do they profit from contingents having to stay local?

<comment><USER25> There's two main current factors (and one older factor) that seem to be cited for ED Texas place in patent litigation:

1\. It used to be "rocket docket" where patent cases came to trial quickly, which is generally seen as favoring plaintiffs (since they have likely done more prep before the case is filed); this is no apparently no longer the case, however.

2\. It apparently has a jury pool more inclined to large damage awards, and possibly somewhat more plaintiff friendly in terms of finding liability at all (often attributed to age and local culture regarding property rights.)

3\. It has judges that are reputed to be less inclined to summary judgement motions from the defense and more inclined to let patent cases go to juries on evidence where other courts would award summary judgement for the defense.</comment></comment>


Dr. Dobb's | Lean Programming - <AUTHOR> http://www.ddj.com/architect/184414734 <comment><USER2> Check it out!

[http://web.archive.org/web/19970602013356/http://www.scrawls...](http://web.archive.org/web/19970602013356/http://www.scrawlsoft.com/)

Wayback from 1997! I was lean before lean was in.

I'll rat myself out: I taught a class with the guy who ran the Lean Aircraft Initiative.</comment>


What we can learn from 50 films set in a single location - <AUTHOR> https://medium.com/mediatag/what-we-can-learn-from-50-films-set-in-a-single-location-1a8f2930d33c <comment><USER2> If you're even slightly intrigued by longevity, you should really watch The Man from Earth.

Takes place entirely on a couch by a fireplace. Thought provoking, suspenseful and emotional.

<comment><USER3> The film clearly opens up in the end and includes the front porch and the back of a pickup truck.

But yeah it's a pretty great film and the acting remains solid despite not having a really high end cast.

I think this is one of the few sci-fi works that somewhat got immortality right (and no it's not really a spoiler).

<comment><AUTHOR> I tried to find a film that absolutely does not cheat and remains in a single location only. I probably missed some, but they all seem to use secondary places, even for just a minute or two.

But it's not necessarily a bad thing, as this can add breathing room for the audience.

<comment><USER4> Linklater's Tape (2001) takes place entirely inside a hotel room, no cheating. [https://en.wikipedia.org/wiki/Tape_(film)](https://en.wikipedia.org/wiki/Tape_\(film\))

<comment><AUTHOR> Ah, excellent, I haven't seen that one, but it's gone up my list now.</comment></comment></comment></comment></comment>


Forward Motion (follow-up to "Mozilla is giving up on their IRC server") - <AUTHOR> http://exple.tive.org/blarg/2019/09/06/forward-motion/ <comment><AUTHOR> Followup to "Mozilla is giving up on their IRC server"

[http://exple.tive.org/blarg/2019/04/26/synchronous- text/](http://exple.tive.org/blarg/2019/04/26/synchronous-text/)

[https://news.ycombinator.com/item?id=19763276](https://news.ycombinator.com/item?id=19763276)</comment>


Ask HN: Got any tips for profiling and tuning C? - <AUTHOR> I'm a casual C developer. Up until recently it's been kind of a love/hate relationship. I mostly attribute that to being ignorant of the breadth of debugging, tuning, and profiling toolsets that are out there.
We use an open source tile rendering engine that's entirely written in C. My goal is to identify it's data access patterns. This will help me determine which functions need to be optimized, or how to reorder the data on disk to to optimize for those data access patterns.
I'm going to eventually end up reading the whole codebase, but I'm certain that there are best practices for determining this kind of information that I am just unaware of. I'm vaguely familiar with gdb and valgrind, but I feel like I'm only scratching the surface of their capabilities.
What kind of tooling is everyone else using these days? My specific use case is on linux, but I'd appreciate tips across the board.
I'm also interested to see if recompiling with llvm and clang would give me any performance increase. I see there are malloc replacements like tcmalloc and hoard. Does anyone have experience with these? <comment><USER2> For profiling: usually as a first pass I turn to PG. :) Seriously though, add '-pg' to your CFLAGS and LDFLAGS, recompile, run, and look at the output in gprof. It's a pretty good way to easily identify bottlenecks. You can pipe the output to dot and graph the call graphs, etc. -- but I've found that less useful than running the code that I'm trying to make more performant and studying the first 20-30 lines of the gprof output.

[http://sourceware.org/binutils/docs/gprof/Compiling.html#Com...](http://sourceware.org/binutils/docs/gprof/Compiling.html#Compiling)

There are better alternatives as well. But adding -pg first is just so easy, and usually (I've found for my stuff) is enough...

For code discovery: I've experimented with strace as others mention (and ltrace). And there are awesome things like Fenris in theory:

<http://lcamtuf.coredump.cx/fenris/devel.shtml>

But I could never really get them to work personally in practice. Though I learned a lot about what good integration at the terminal level could look like by browsing them. At some point, I hacked together vim and gdb integration pretty well for my purposes (or I should say, improved on the clewn project. I'm pretty happy with it). I wonder if others have done similar things. Anyway, I'm curious what others say as well.

</comment><comment><USER3> AMD CodeAnalyst is free and pretty good if you have an AMD CPU. If you have an Intel processor it still works it just does less.

The two main data access performance tips are:

1) make sure your loops work right to left if you have [10][9][8] iterate over the 8 array first, the 9 array second, the 10 array third(that is the cache optimal ordering).

2) Prefer SoA(structure of Arrays) to AoS(array of structures) Say you have an array of a structure and you need to loop over the array to update one field in the structure you increase cache hits if you make the structure hold arrays of elements instead of an array of structures.

</comment><comment><USER4> Start with Drepper's "What every programmer should know about memory":

<http://people.redhat.com/drepper/cpumemory.pdf>

</comment><comment><USER5> strace might help you, perhaps with the -e trace=file option. Depends on how mapserver is implemented.

It's not clear to me that this is a C-specific problem.

<comment><AUTHOR> It's not really, all things need to be profiled in high load situations. I'm moreso looking for an overview of the tooling to see if I'm just unaware of a vital tool. Thanks for the strace info, I'll check it out.</comment></comment>


Ask HN: How did you come up with your startup idea? - <AUTHOR>

I am interested in the (non-)processes behind innovation and building a startup.
There is some overlap between the two (some startups are based on innovative ideas, others aren't), but also a large disconnect -- execution, luck, connections, partners, geography, funding, and so on.
Ignoring the complexity behind the latter elements for now, I'd love to hear from HN readers how you came up with your startup or side-project idea.
Was it luck, conversations with peers and entrepreneurs, predicting a technology trend (how?), simply better technology... <comment><AUTHOR> I'll start. Basic process: Applying solution from one domain to another + luck.

When I was working as a corporate lawyer, I noticed that both our clients and we could be a lot better at capturing institutional memory. The problem wasn't that we didn't have systems in place (we had email search, a wiki, an up-to- date website, top-notch on-staff researchers, etc.), but that there were no incentives for those with knowledge to take half an hour out of their day to contribute this knowledge to the systems. With size, the non-processes that work for smaller firms (coffee break, knowing what everyone's working on, etc.) were failing.

From /. to StackOverflow via HN, Foursquare, etc. there are many examples and templates of how to use karma and game-elements (e.g. badges) to incentivize contributions. Moreover, many of these elements should be compatible with the work environment as they would permit management to identify contributors (high-karma and badges) and domain experts (subject-area of contribution versus job-title). The incentive-element should be very strong: if management is on board, employees are on board (e.g., if karma matters as part of one's work-review).

The second part in my process was to speak to future clients (management at mid-sized companies), users (lower-level employees who would use the system) and other entrepreneurs to gauge whether the problem was actually a need (i.e., would anyone be willing to pay for it).

<comment><USER2> That's an interesting idea. How's it working out?

<comment><AUTHOR> Pretty well, but too early to tell. Closed-beta w/ 4 clients is very positive. Hoping to open up to public in ~4-6 weeks.

Some issues: \- 40+ employee companies which would really benefit from information retention / formalizing institutional memory require a real sales effort and can be resistent to switch to our SaaS approach for information which may be sensitive/private \- not as useful for companies < 12 employees or for companies where everyone is colocated (obviously) \- search is tough; it's easy to do ok, but we need it to be very very good; definitely stretching brain \- unsurprisingly, for companies that user yammer / 37signals / web services (2 of 4 clients), it's natural for employees to switch general questions from email to our platform, but for other two clients much tougher; unclear whether this is because of something cultural at the businesses or what \- am not good at sales (yet...) \- current implementation alone may not be enough to warrant use (i.e., might do well to be integrated with existing project management or CRM or other web services already in use)

I tried to stay with a MVP approach, but it's tough for a tinkerer like myself. I always want to add this or that and constantly have to force myself to stay simple. Big learning experience w/ that and with integrating user feedback from the get-go (balancing act between what's in my head, what client 1 wants and what client 2 wants -- opening up to larger audience earlier is probably better for MVP).

</comment></comment></comment><comment><USER2> Reading widely (i.e. not just technology blogs/forums), being genuinely interested in what other people do and the problems they experience in doing such things, dissecting a problem to see whether it can be avoided or ameliorated, exploring existing attempts to do so, analysing their benefits and failings, developing an alternative approach to the problem, discussing this with people I trust who have different knowledge-bases (particularly if they have knowledge of this area), reflecting on whether it still seems like a good idea, doing some rough calculations about market size, pricing (or other monetization route), and feasibility given my own skills and network, concluding whether it is a good and implementable idea and, if so, getting to work and continuing to work long after the initial excitement wears off.

tl;dr: Assuming until proven otherwise that everyone has something to teach me about the world.

<comment><AUTHOR> I doubly agree with reading widely (+outside of tech) and speaking with people with expertize in other domains.

The less-sexy the domain, the more opportunities for innovation. Too many (very smart) people out there looking at consumer internet and tech.

</comment></comment><comment><USER3> Three ways: 1) I see something I like and want it done better. 2) Randomly, enters my head. Like connecting stuff. This happens alot when I walk. 3) Observing a need 4) Testing out a new theory :D(I should stop doing these they are unprofitable) \</comment><comment> You should try to observe yourself when you are creative and what you do. That's how I found out, that creativity is anchored for me when walking[<http://en.wikipedia.org/wiki/Classical_conditioning>].

</comment><comment><USER4> One project I am working on is the reimplementation of some old software I wrote 8 years ago. It worked very well but had some conceptual problems and got very bloated. New version offers more or less the same, but in a more modern way using modern standards and fixing some old problems. I had the idea to do this out of frustration about the old code and that we had no nice way to build custom systems. So I wrote a prototype that covers most features of the old system. Prayed to the flying spaghetti monster that my old client would love the idea and give me some cash for development and to provide me with his sales infrastructure in exchange for shares. Everything went well. :)

The other project I am working on is a mix of existing technologies with very domain specific features for a very targeted niche. The idea came up because I wanted my girlfriend to quit her job and work together with me. (solid relationship since 10 years; we already worked together) So we started brainstorming about how to combine my IT skills with her knowledge about the specific niche to make something that could help people do their job better. The initial idea has nearly nothing to do with our current product, but lead to discussions with our target group and more ideas about how to make something nice.

</comment><comment><USER5> In one case I know, the founders wanted the company they were working with, solve/improve their product using a new way of solving a problem. The company management didn't think the idea would work. The founders had enough courage to prove they were right, pitched in many, many hours to build a prototype and demo, convinced a few seed investors and VCs for small amount of money, and they were right. They then picked up enough market share for the competitors of the original company to take notice, and acquire them. You may find this path very common.

</comment><comment><USER6> It's really like sowing seeds and waiting for it grow mature. You will get some weeds, but that's part of the process.

For example, I would consider some ideas and just when it's getting so good, I stop thinking about it to leave on a high note. This usually happens when you least expect it at places such as the shower or during freeway hypnosis.

</comment><comment><USER7> People at a company complaining about how existing software didn't do what they want.</comment>


STM, CouchDB, and writing 5500 documents/second - <AUTHOR> http://dosync.posterous.com/stm-couchdb-and-pushing-5500-documentssecond

<comment><USER2> ...except it's not durable. If your server (clojure) crashes, you lose the data in memory.

<comment><USER3> It's quite durable. CouchDB has pure tail append storage and will fsync every update and batch concurrent updates into a single commit. It can get fairly close to a drives max sustained write speed.

<comment><USER4> The point of this article is queuing requestd at the webtier until you have enough to swamp the HTTP transport overhead to CouchDB. If the website crashes you are going to lose that data.

<comment><USER3> I'm not sure I understand. CouchDB won't lose any committed (fsynced) data when it crashes. And when configured, it won't return a success until it's committed. It's completely durable.

edit: Oh I see, the stuff written in the clojure side won't be committed. If he wanted to write each one synchronously to CouchDB, that would work and CouchDB would still batch up the concurrent updates while writing.

<comment><USER5> "As requests come in, instead of connecting immediately to the database, why not queue them up until we have an optimal number and then do a bulk insert?"

Judging by the code, it looks like he stores about 50 documents before sending them to CouchDB. I believe the original poster was asking about the durability of Clojure STM, not Couch DB.

</comment></comment></comment></comment></comment><comment><USER6> This is a follow up to the original post here <http://dosync.posterous.com/22516635>

This whole thing is making Clojure seem more interesting to me. I'd be curious to see how close Node.js can come to extracting this much write performance from CouchDB.

<comment><USER7> For me, the problem has always been the indexed views taking too long to generate for a large amount of documents on first view. I know that some people do a bulk update, then hit the different indexed views to get them updated incrementally.

What can be done to increase the speed of the first view of new indexed views that you might have later on? Do you just have to wait for it?

What about ad-hoc views? Are there ways to speed that up?

<comment><USER6> The key is: don't experiment / develop on a giant database. Make a small subset of the database for testing views on. Then they are plenty fast.

As far as generation speed, what matters is that the indexer can keep up with the insert rate. Unless you are doing a big import from an existing dataset, you'll have to have A LOT of user activity to generate so much data that you are outrunning the indexer. In that case you probably have a big enough project that it makes sense to use a cluster solution like CouchDB-Lounge (which will divide the generation time by roughly the # of hosts you bring into the cluster).

Someday soon I hope we'll have an integrated clustering solution (Cloudant is working to contribute theirs back to the project) so you can just deploy to a set of nodes and get these benefits without much additional operational complexity.

</comment></comment></comment><comment><USER8> If the problem is the overhead of making HTTP connections, surely having a pool of open connections with keepalive solves the problem in a much more durable way? This is a setup I've seen in a telecom environment that supported a good throughput.

<comment><USER9> this was part of my initial reaction.

when CouchDB is under concurrent load it does a "group commit" style write anyway and can batch nearly as efficiently as bulk docs. the only additional overhead would be the HTTP headers which is nominal when the documents are a bit larger than "hello world".

in general CouchDB does better under concurrent write load than single writer and while these kinds of optimizations on the client side can be impressive it's not actually what CouchDB is tuned for OOTB.

</comment></comment><comment><USER10> although interesting, bulk insert doesn't (didn't?) work across multiple databases managed by one host. and the ability to havve multiple databases is one of the things that makes couchdb a lot of fun.

<comment><USER11> the benefit of a bulk index is the ability to shove everything into a file and fsync once. so splitting across files won't really give the performance benefits.

</comment></comment><comment><USER12> What about riak ? How does that compare ?

<comment><USER13> riak does support automatic sharding and enables you to tune your CAP paramters. Getting nodes in and out of a cluster is way easier with riak. While riak does also support map/reduce, generating something like a couchdb's "views" will probably end up being a problem since listing all the keys of large buckets (needed for a view of all your data) is a really expensive operation in riak. Also: couchdb supports incremental views, so if the view is fixed, you'll only need to update the changed documents. My main problem with couchDB was that in systems with a lot of changing data, the compaction was too slow for me. I actually changed data faster than the compaction could work on. Also: you have to compact that stuff yourself by sending an explicit http request.

<comment><USER9> would you be willing to write up how your writes were outrunning the compactor in a little more detail in either a blog post or in an email to the apache couchdb dev list?

we've been talking about possible improvements to the compactor and having a solid use case that outruns it would help focus that.</comment></comment></comment>


Show HN: NavHere.com – Simply Domain Forwarding (and short linking) - <AUTHOR> https://navhere.com/ <comment><AUTHOR> Hey guys, I built this with my buddy Austin to scratch an itch we developed when GoDaddy shut off full-path domain redirection without telling us. It went through some growing pains on just my domain (I never knew that my person site got more than 20k requests per day). To read more about why we built it, I wrote up a little blog post[1].

1: [http://jeremyaboyd.com/2018/11/08/why-we- built.html](http://jeremyaboyd.com/2018/11/08/why-we-built.html)</comment>


C, The Beautiful Language - <AUTHOR> http://tenaciousc.com/?p=1787 <comment><USER2> All it means is that he understands C better than other languages. Even Java (yes, Java) has these rhythms that he speaks of. You look at code and you feel the logic, even the necessity of it. That's just the feeling of being in tune with code and with the person who created it, thanks to a shared understanding of the language. Master any language and you'll get the same feeling when you read well-written code. Actually, though, the less boilerplate a language forces you to write, the less you'll feel that "inevitability," since much of the "inevitable" structure of the code -- the predictable patterns in the design of code, or, one might say, "design patterns" -- is code you shouldn't have to write in the first place.

<comment><USER3> +1 C is ugly.

\- Why do I need to typedef a struct to make it look like any other type?

\- Why do function pointers look so bad?

\- Error handling in C? Those goto exception; if(0){exception:} sure look fantastic.

\- int* var1, var2; var2 is an int, not an int* ... The language lets you stick the * right next to the type as though it modifies the type. Which it does in casts. (how do I escape asterisks on here?)

\- A system language where int can be 32 bits or more.

And probably more from people more experienced in C than me.

<comment><USER4> \- You don't. C99 treats structs like classes.

\- Typedef them.

\- If done right, it can be quite unobtrusive.

\- That's not how it should be written. This is a 100 times clearer:

int *var1, var2;

\- Not really. And don't use int, int32_t is where it's at.

<comment><USER5>
        int *var1, var2;

is not clear at all. var1 has type "int pointer", and for each type T, its pointer type is represented as the type T*. It's just one of the many ways the C user interface is broken beyond reason.

The point is not that you can't do good things in C. The point is that it is very easy to do bad things in C. A good UI makes good things the natural way to do things, and actively discourages bad things. C's UI is the opposite.

<comment><USER6> _It's just one of the many ways the C user interface is broken beyond reason._

I'd say this one is just a question of preference. I happen to like to be able to declare my variables together with my ponters.

 _A good UI makes good things the natural way to do things, and actively discourages bad things. C's UI is the opposite._

In my opinion, that's the beauty of C: unlike Java (and, to a little extent, C++) it doesn't dictate how you write your programs. You are free to shoot yourself in the foot, but you also get to decide exactly how you want your code to look and feel.

<comment><USER5> The small cost of not being able to declare your variables together with your pointers is nothing compared to the confusion it avoids.

        int* var1;

is the way I (and I suspect anyone who's studied theoretical algebraic data types) _think_ about my variables and types. It sucks that C forces me to mentally translate it to a much less satisfying form.

I'm not sure what being ridiculously easy to make errors in has to do with dictating how to write your programs.

</comment></comment></comment></comment></comment></comment><comment><USER7> > _In other languages, the abstractions and sweet (if helpful) syntactic sugar > that attend the code conceal the heartbeat._

IMO, that means they're failed abstractions and syntactic sugar. Proper ones should result in _better_ understanding due to simplification - you can learn it in levels, easily encapsulating the knowledge at each level so you know you can "trust" what it's doing without having to remember all of it.

<comment><USER8> As such, any abstraction or syntactic sugar that distances you from the _flow_ of the program fail.

Bu that's for programs that are procedural. Functional programming has no flow. Truth neither moves nor changes.

To use an analogy, a procedural program is like music, where rhythm and motion of the instrument are the essence of what you are representing. Functional programming is more like sculpture, where you create an elaborate piece that has no rhythm or movement of itself, but guides the flow and transformation of the data around it.

<comment><USER7> I haven't done functional programming really, I didn't think of that case.

Interesting that it still seems to apply, though. If your abstractions in functional programs obscure that flow, they still strike me as a failure. Though I'd be interested in if functional programmers would disagree, I obviously don't know functional design patterns.

<comment><USER9> If you reason about functional code with appropriate assumptions: they don't lie. A big part of functional programming is making code easier to reason about in isolation.

If you want good procedural C code, read Lua. That shit is _polished_.

</comment></comment></comment></comment><comment><USER10> > we watch Ronaldo doing things on the pitch

Hmmm...

Lionel Messi does crazy things you never thought were possible. He's Lisp.

Gareth Bale has few fancy tricks, but does what he does very well, and often relies on pure speed - C.

Joey Barton is good, but has a bad reputation and a sordid history - Fortran?

Etc :-)

<comment><USER11> You know your soccer my friend ... but you left out Java.

I'd say that's like Miroslav Klose ... big, strong, not particularly fast or lovely to watch but damned good at putting away goals when it matters. surprisingly so.

<comment><USER12> I like that about Klose :-)

I disagree about Barton - which language consistently repeats past mistakes and is liable to stab you in the eye?

</comment></comment></comment><comment><USER13> C is more a description of a Harvard machine than a von Neumann machine. In fact, a useful new language feature would be dynamic generation of machine code.

<comment><USER14> Of course this isn't a feature of the language -- but most implementations (e.g. gcc) technically allow this, if you really, really know what you're doing. For example:

[http://www.cesarbs.org/blog/2010/07/19/run-time-machine- code...](http://www.cesarbs.org/blog/2010/07/19/run-time-machine-code- generation-and-execution/)

<comment><USER13> Yes, you can generate machine code yourself, but then you have to write machine code ...

I'm suggesting a JIT compiler as a built-in language feature so that you could write code in a high-level language and have machine code generated that was specialized based on the program's dynamic state.

It could be done as a library, but it would benefit from language integration so that you wouldn't have to write the code as strings or ASTs.

<comment><USER15> Language integration would be nice, however dynamic code generation from a library has been about for some time now:

"With libtcc, you can use TCC as a backend for dynamic code generation." from <http://bellard.org/tcc/>

</comment></comment></comment></comment><comment><USER16> This is a nicely written tribute, but there are two generalisations that I feel are worth pointing out.

Many parts of Linux kernel are really, really nice C code. Sadly, in my experience most C code is not especially nice. I don't know how this extends to the football metaphor, but certainly I wish most of the C code I have encountered (not to mention written) in my career to date was one tenth as neat.

On balance, I'd say there are other languages (Erlang, Python) where I've personally found the median quality, and level of expression, to be substantially higher (for the random subset of code I've read and my own standards, clearly YMMV.)

The other generalisation is "other languages". Which "other languages" are they? What other projects (despite the Linux kernel) are they reading, and in what contexts?

You can find beautiful or precise code is almost any language if you try hard enough. You can find ugly or obfusticated code in nearly every language without barely trying at all.

<comment><USER17> What are some specific examples of beautiful C code in your view? Asking for a friend.

<comment><USER18> After finding the documentation and guides for writing nginx modules woefully inadequate, I did a lot of poking around in the nginx internals to better understand how things worked.

The code is very readable, follows good style guidelines, and has its fair share of brilliant workings. I found that the source code served as much better documentation than a lot of _actual_ documentation that I've read.

<comment><USER19> You beat me to it! I was just about to suggest the nginx internals. :)

</comment></comment></comment></comment><comment><USER20> In my experience it is more 'fun' to write C code then to lay down yet another line of boiler-plate high level code. However, it seems to take longer to get things done and the resulting code is also much more error-prone (at least my code that is).

<comment><USER21> I feel C has more boiler-plate code than any other language I've used, including Java--especially when you consider header files, malloc/free, function call error code inspection, etc.

</comment></comment><comment><USER22> C was my second love after QBasic. I still admire its simplicity, yet also admire the abstraction, readability, and community of Python.

As anyone on Stack Overflow would tell you, it's a matter of using the right tool for the job. I like to imagine programming language selection as an optimization problem: given a job, over the set of tools, maximize the appropriateness of tools for the job while minimizing the number of tools. Without a tool number constraint, you could call from an infinite number of tools, and one would be best, but that incurs overhead, obviously. The tool number constraint keeps the problem feasible.

For numerical computing, {C, Python} solves my optimization problem.

</comment><comment><USER23> While we're making silly analogies, let me make one of my own. C is a bit like a horse. It's fun to ride a horse from time to time, and there are still plenty of valid, practical reasons to ride horses. However, you're kidding yourself if you think you're going to talk me into giving up my car (well, ok... my public transportation) for a horse.

<comment><USER24> C is more like trucks or trains than horses. Backbone of the modern society, but using them for all, or even just day to day, transportation needs could be called misguided.

Fortran is more horsey.

</comment></comment><comment><USER25> These rhythms reflect a greater underlying symmetry. All languages have them, and some of them reflect these symmetries more easily than others.

When you start to get familiar enough with a language that you see past it to the underlying structure, that's when you really start to appreciate a language. This process is not unique to C, or any other language.

</comment><comment><USER26> It was a cute sales pitch for the company's C IDE. I especially like how they use "soccer", a word that resembles "sorcery". Talking about how one (only?) gets the gist of things and is not a kernel hacker was great to speak to the less-than-competent. Yes yes few of us write kernel modules but still. Encouraging coders to be comfortable with C when they sell a product to help, brilliant!

</comment><comment><USER27> Stupid question: what do you do when you're working in C and want OOP?

<comment><USER24> Use OOP. :)

But seriously, you don't need a language to smack you in the face with OOP syntax to use OOP, and with anything in programming, if you try to do it just like you do in other languages, you're going to be disappointed.

</comment></comment><comment><USER5> This sort of idiocy is what holds computer science back. C, because of how close to the metal it is, is pretty much the ugliest language in wide use, and the fact that we know a lot more about programming languages and user interfaces now than when C was designed doesn't help. It should only be used as a last resort, when you really need the speed, and even then one should keep an eye out for alternatives.

<comment><USER28> Which language would you suggest as replacement for writing of sched.c and page_alloc.c?

<comment><USER26> Oberon or Modula-2 maybe?

</comment></comment></comment><comment> hacker-gene Nice!</comment>


Media flunked IQ test on validating sources of IE IQ story - <AUTHOR> http://www.geekwire.com/2011/good-news-ie-users-looks-like-media-failed-the-iq-test-not-us

<comment><USER2> Same story, much discussion: <http://news.ycombinator.com/item?id=2840626>

Documenting the re-submissions: <http://news.ycombinator.com/item?id=2840900></comment>


The Punctured Myth of Sheryl Sandberg - <AUTHOR> https://newrepublic.com/article/152320/punctured-myth-sheryl-sandberg <comment><USER2> This reads like a hit piece. Yuck.

The author's previous article is titled "Facebook Betrayed America". Here's a nugget from this one:

      But what did Sandberg expect when she hired a Republican opposition-research firm?

Immediately after, Sheryl is quoted saying she had no knowledge of hiring Definers.

<comment><USER3> If you were Sandberg, questioned about hiring a Republican opposition research firm, would you confirm it to the public, even if it'll make the company look bad? Of course not.

This story was not a hit piece. It follows the NYT piece, which is a thorough investigation. To say otherwise is to fall for Facebook's propaganda.

<comment><USER4> > If you were Sandberg, questioned about hiring a Republican opposition > research firm, would you confirm it to the public, even if it'll make the > company look bad? Of course not.

And that's perhaps a problem, because looking insincere hurts company image long term.</comment></comment></comment>


The math of brewing a better espresso - <AUTHOR> https://arstechnica.com/science/2020/01/the-math-of-brewing-a-better-espresso/ <comment><AUTHOR> tldr: less coffee, coarser grind, faster</comment>


Who Left Open The Cookie Jar? - <AUTHOR> https://wholeftopenthecookiejar.eu <comment><USER2> This WontFix made me sad [0]:

> Yes, this is accurate - extensions cannot intercept requests from PDFium. > PDFium, in Chrome, is (partially) implemented as a component extension, and > extension requests cannot be monitored or manipulated by other extensions. > The behavior of protecting component extension requests is critical for > security reasons, and we are unlikely to change it.

Ug, not exactly sure what triggers PDFium vs PDF download, but this is especially bad if I could load a PDF in an iframe and get around any of your ad blocking. I also question why it's considered an extension at the user level. Anything installed and enabled by default should be considered part of the core browser and not an extension (regardless of the mechanisms, such as the extension one, they are implemented with). I understand the levels of separation and implementation difficulty fixing this entails, I really do, but the practicalities of your on-by-default PDF renderer making web requests different than a web page is too bad to ignore.

This goes to show that you can not count on extensions to filter web requests in your browser. You must do it at the network level or have a dedicated browser for it (e.g. Tor Browser). Unfortunately it's often extensions that have all the contextual information needed to make the decisions you want.

0 - [https://bugs.chromium.org/p/chromium/issues/detail?id=824705...](https://bugs.chromium.org/p/chromium/issues/detail?id=824705#c4)

<comment><USER3> One can imagine building a hierarchy of permissions so some extensions can have higher privileges over others. One more step in the slow march of browsers taking on more functionality of an OS.

<comment><USER4> Not-so-tounge-in-cheek corollary: software with a sufficiently rich and desirable attack surface will evolve to become indistinguishable from an OS.

<comment><USER5> "Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can." \-- jwz

<comment><USER6> I don't get this quote. Why is mail reading considered an obvious forward step for a program? That fad seemed to die with the browser Mozilla (or SeaMonkey these days, if it still exists).

<comment><USER5> Heh - for the record, that quote is from the guy who's responsible for open- sourcing Netscape into Mozilla, and is from around about that time/era...

These days I wonder if the functional equivalent is expanding to include a Slack-bot?

<comment><USER7> He also wrote an email client for Netscape.

<comment><USER5> Email and usenet client - which was the only client that ever got message threading right...

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> I use Safari 11 as my primary browser. This is promising:

> _Safari's Intelligent Tracking Prevention managed to mitigate all third- > party cookies to a tracking domain, apart from redirects. However, we found > that future completeness can be undermined by having this option disabled > for even a short interval. Third-party cookies set in this interval by > tracking domains, which otherwise would have been prevented, will still be > included in cross-site requests after enabling the option again, identical > to the results when the option is disabled. Luckily, this option is enabled > by default, so future completeness can only be affected through explicit > disabling by the user._

I'd also like to know whether that applies to iOS, but the paper didn't perform any mobile browser testing.

That said, every so often I view my stored cookies and I'm always shocked at the number of domains that I've never heard of that have stashed cookies. :-(

<comment><USER9> I never wanted to "waste money" on a mac, but I feel like Apple takes user privacy seriously, and I'm genuinely considering making the switch from Windows just to support that practice. I dunno, maybe that's silly, but it seems like the whole world stopped caring about user security and privacy, and this is refreshing to see fairly consistently.

<comment><USER10> Warm feelings aside, security experts are typically more objective than Apple's keynote bullet points.

The key thing to remember is that there is no privacy without security. Factually speaking, ChromeOS is far more secure than either Windows or macOS. [https://www.cnet.com/news/how-google-chromebooks-became- the-...](https://www.cnet.com/news/how-google-chromebooks-became-the-go-to- laptop-for-security-experts/)

<comment><USER11> > there is no privacy without security

This is factually incorrect. You can have privacy without security, and you can have security without privacy. Security keeps things safe, privacy keeps things hidden.

Also, ChromeOS devices ship with a rootkit called the Play Store. There are also hundreds of apps on the play store that install malware on Android devices. You may not need to install an anti-virus, but you may also very easily install what looks like a fun game, and then find your funds being drained from your bank account.

<comment><USER12> > This is factually incorrect. You can have privacy without security, and you > can have security without privacy. Security keeps things safe, privacy keeps > things hidden.

Uh that's not factually incorrect. You can definitely have security without privacy, but not the other way around. Without security that means your privacy can't be protected.

<comment><USER13> The fact that your privacy isn't secured doesn't automatically mean that it is automatically compromised, does it? I mean, sure, maybe you assume it is for any real purpose, but that doesn't mean your privacy is actually compromised.

For example, my first iPhone, I didn't have a password (I think -- maybe that was my first ipad). It was insecure, but I'm reasonably sure that everything on there was private (in that more physical sense; I have no idea about internal security of those first generations of iphone/ipad).

A weaker claim that is probably true might be: you cannot _guarantee_ your privacy without security. That you _cannot_ have privacy seems like too strong of a claim?

<comment><USER14> I think it's bit of a nitpick, but the iPad was under physical security.

I do agree with you though. Privacy is having your information to yourself. You don't need security for that, just that everyone else keep their nose to them self. But if you want to guarantee your privacy, you need some form of security.

<comment><USER13> If you knew my kids, you might not say that my iDevices are always under the best of physical security.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> I have to disagree with the statement, that those techniques are not being used in the wild. I've observed a porn advertising network delivering some js once, which opened a third-party domain served pdf with cookies in the background and then closed the popup immediately again. I was wondering what that was about. Now it's clear to me.

<comment><USER16> A friend of mine might have noticed something similar (on a news site, of course).

<comment><USER17> It would be very useful if you could point us to such examples! (I'm an author of the paper)

<comment><USER16> Pornhub. It could of course be a popup playing a different role (e.g. being part of a "you need to upgrade your vulnerable software naow!1"-scheme) that's only visible if no blockers at all are used.

</comment></comment></comment></comment><comment><USER18> Self destructing cookies will mostly defeat these problems unless trackers get clever about cross-correlating cookies from different sessions. Restricting JavaScript makes that even harder for them to accomplish.

For most purposes there's little benefit to keeping old cookies hanging around. Just whitelist the sites you want to stay logged in to.

<comment><USER19> That has been my strategy lately, but it keeps getting more annoying because of all those cookie banners that now can't remember to not show up – quite absurd and probably not intended by regulators.

<comment><USER20> There is an extension called "I don't care about cookies" [1] that takes care of those.

[1] [https://addons.mozilla.org/en-US/firefox/addon/i-dont- care-a...](https://addons.mozilla.org/en-US/firefox/addon/i-dont-care-about- cookies/)

<comment><USER21> Or, if you already use ublock origin there is a blacklist in the setting that you can turn on to block all cookie banners.

</comment></comment></comment></comment><comment><USER22> Is there a privacy-maximizing combination of browsers and extensions that keeps the web mostly usable?

I'm currently running chrome with uBlock Origin and uMatrix. uMatrix is a bit of a hassle, but I didn't realize the scope of the threat landscape until I saw the huge number of (potential) trackers called out by almost every site.

<comment><USER23> Maybe swap from Chrome to Firefox?

If nothing else, Firefox isn't built by a literal advertising company.

<comment><USER22> Is there a meaningful distinction between a browser built by an advertising company, and a browser built by another company that earns almost all of its revenue from the advertising company?

<comment> move-on-by * Well, Firefox being fully open source is certainly a distinction that counts with me.

* Their built-in tracking protection is also another distinction [1].

* Ability to modify core settings to improve privacy is also really nice, but not viable for the average user [2].

* Firefox on android is the only mobile browser that allows you to install add-ons. I'm not talking special mobile-made add-ons. Any add-on that you can install on desktop, you can install on the mobile version. Although usability will definitely vary. uBlock Origin, Privay Badger, Decentraleyes, Cookie AutoDelete - all available on Firefox mobile for android

I'm not going to go as far as saying Firefox deserves your 100% trust. They have definitely made some missteps along the way. However, as far as meaningful distinction, yes I think that is well earned.

[1] [https://support.mozilla.org/en-US/kb/tracking- protection](https://support.mozilla.org/en-US/kb/tracking-protection)

[2] [https://www.privacytools.io/#about_config](https://www.privacytools.io/#about_config)

</comment></comment></comment></comment><comment><USER24> It's funny this is posted on Boingboing.net - I stopped reading years ago because their monetization attempts made their site unusable...

</comment><comment><USER25> I always wondered if it was possible to embed JavaScript in a PDF for tracking or other purposes.

The article suggests: "The techniques allowed them to track users across sites by means of Javascript in PDF tables"

Has anyone done this? Is there any literature about it (I didn't find any after a quick look).

</comment><comment><USER26> Again a reason to block at least third party JavaScript.

</comment><comment><USER27> I wish browsers had an option to make all cookies and site data local to the domain visited in the url of the browser. So if you are domain on "x", and there is an iframe into domain "z", the data would be local to domain "x.z". When you would visit domain "y" which also has an iframe to domain "z", its data would be local to "y.z" and therefore you couldn't be tracked by "z" when going from "x" to "y".

Of course that would probably break google analytics, so I don't expect this on chrome.

<comment><USER28> Not really, it would break adwords but for google analytics you don't need to correlate the users between x.z and y.z, and if you need as you control both sites, you can do changing the link between both to include de google analytics session id (watch for gid parameter on urls).

<comment><USER27> But how can google analytics tell the demographics of a site if it can not identify its users and correlate it with what it knows on them?

</comment></comment></comment><comment><USER29> I hope there could be more tests on Brave browser, too, which aims to improve privacy. But its most lovely feature imo is opening any kind of tab (normal, private, private on Tor network) on the same window. I wonder if this causes some backdoors, though. I support so that it can become better.

</comment><comment><USER30> I worked for a web analytics company and they simply used reverse proxies.

<comment><USER31> Mind elaborating?

<comment><USER30> A company has multiple websites and all of them use a reverse proxy for tracking. (a webserver that is between clients and the real webserver and just "proxies" requests and responses between them, logging all that happens)

This is completely transparent from the outside.

<comment><USER32> This is rather offtopic but it bothers me how most people in IT seem to use 'transparent' to mean 'opaque'.

When I hear PMs say "this change will be completely transparent to clients" what they mean is, the client will see no difference, which means really, the details are hidden in a black - opaque - box.

<comment><USER33> It should make sense if you realize "transparent" means "no visible difference".

<comment><USER34> Transparent has a unique meaning in the context of computing And a different one in design, business and physics.

Importantly however; Tech people can claim they are being 'transparent'. To them this can mean no visible difference to the user- and to everyone else means visible/public and available for scrutiny.

So yes, I am sure Zuckerberg is focused on 'transparency'.

<comment><USER35> Quite so. A less intentionally disingenuous word for the computing context would be "hidden".

</comment></comment></comment></comment></comment></comment></comment><comment><USER36> From the awkward grammar of the name, this project must have been named by a German.

</comment><comment><USER37> Browsers don't automatically attach cookies to all HTTP requests by default.

</comment><comment><USER38> If you don't want to visit BoingBoing,

[https://wholeftopenthecookiejar.eu/static/tpc- paper.pdf](https://wholeftopenthecookiejar.eu/static/tpc-paper.pdf)

<comment><USER39> do we hate boingboing now?

<comment><USER40> There is a popup. Remember when browsers added popup blockers? They've worked around them now with JS & CSS...

<comment><USER41> umatrix with first-party scripts disabled had no problem.

<comment><USER42> I was running uMatrix with first-party scripts disabled by default for a while, but I found a lot of pages I needed 3 or 4 refreshes to get content. It opened my eyes to how much simple static stuff in dependent on Javascript; stuff that really shouldn't be.

<comment><USER43> I did the same, but instead decided most of those sites weren't worth my time. (For the few that I cared about, I whitelisted the bits needed to function).

</comment></comment></comment></comment></comment></comment><comment><USER44> Would it be possible to change the link from bb to the source:

[https://wholeftopenthecookiejar.eu/](https://wholeftopenthecookiejar.eu/)

<comment><USER45> Sure, we've updated the link from [https://boingboing.net/2018/08/16/who-left- open-the-cookie-j...](https://boingboing.net/2018/08/16/who-left-open-the- cookie-jar.html).

</comment></comment><comment> fake-name "Currently Unblockable"

Unless you don't allow jerberscript. Which blocks all of them.

Hyperbole, much?

<comment><USER46> Don't allow 'jerberscript' and don't expect the web to work properly. Simple as.

<comment><USER47> If it doesn't work w/o js, it's not actually the web, the de facto truth of your statement notwithstanding.

It's an eminently defensible descriptive statement; the trend is certainly away from building the web and towards treating the browser as the VM to rule them all. It is not a particularly well-defensible normative statement.

<comment><USER48> I don't know if I agree that. It's pretty standardized. Every user-agent includes it.

You _can_ give people documents without scripts, but it's not mandatory for them to work. And it's not like Javascript is some obscure single-vendor extension, it's widely supported.

</comment></comment></comment></comment><comment><USER49> Wait, I'm confused. These all seem like basic unit testing bugs?

Unit testing cookie read/write permissions isn't "a thing?"

I'm going to say something crazy; At least some of the major browser vendors are violating a warranty with this.

An entirely fake privacy crucial setting?! Obviously they knew and left it there deceptively, because the alternative is even worse.

</comment><comment><USER50> Despite the title, they do not actually host the techniques.

<comment><USER51> The definition of "host", in this case, just means "many".

<comment><USER52> Collection</comment></comment></comment>


Timsort is a sorting algorithm that is efficient for real-world data - <AUTHOR> https://hackernoon.com/timsort-the-fastest-sorting-algorithm-youve-never-heard-of-36b28417f399 <comment><USER3> Recently I "made" [0] one of those visualized sorting videos for Timsort for real-world data. Point was to give an example of data that was already mostly sorted and show how fast it sorts it. It may be of interest here:

[https://www.youtube.com/watch?v=ZxLxf5xqqyE](https://www.youtube.com/watch?v=ZxLxf5xqqyE)

[0] My use of "made" gives me way more credit than I'm due. Really I just hacked others' work to use another data source. See the description in the video for more info on how it was produced.

<comment><USER4> I feel like this is important to note:

 _My example of real world data is data in which the first 90% is already sorted and the next 10% is random. Whether this is real enough is questionable, but it does demonstrate how Timsort automatically takes advantage of runs of sorted data._

It would be nice to see a comparison working on truly real-world data. Perhaps from an open dataset.

<comment><USER5> I am experimenting with Lidar datasets lately. In lidar you work with huge point clouds. Millions to billions. For some algorithms - convex hull - <USER2> need to sort the points for example by x-cooridinate. I did some quick tests with quick sort, merge sort, and timsort. In my experiments quick sort was the slowest with 5.5 seconds on the chosen dataset. Mergesort was 5 seconds and timsort was around 4 seconds.

<comment><USER6> When sorting coordinates, radix sort with an appropriately chose radix (often but not always 256) is usually fastest.

<comment><USER5> Hi there, thanks. Need to try this

</comment></comment></comment></comment></comment><comment><USER7> In Python 3.7, the Timsort was sped-up another 40 to 75% for homogenous lists (just some of the common cases).

It works by replacing Python's slow generic PyObject_RichCompareBool() with a type-specialized comparison function.

* [https://docs.python.org/3/whatsnew/3.7.html#optimizations](https://docs.python.org/3/whatsnew/3.7.html#optimizations)

* [https://bugs.python.org/issue28685](https://bugs.python.org/issue28685)

</comment><comment><USER8> For those with a similar train of thought, this PR describes the standard sorting algorithm used in Rust: [https://github.com/rust- lang/rust/pull/38192](https://github.com/rust-lang/rust/pull/38192)

<comment><USER9> This is great. A simpler TimSort without galloping but keeping merging of runs. It needs a good name (or any name for that matter) so that it can get picked up and used elsewhere.

I'll suggest Pacesort (because the pace gait has smaller steps than a gallop and doesn't have many search results).

<comment><USER10> TimmaySort?

<comment><USER9> Timmay!

</comment></comment></comment></comment><comment><USER11> I'm not a fan of the anti-academic vibes in this post. Good technology can be born anywhere, but it's foolish to ignore the advantages of research.

<comment><USER12> Well, to be fair, I'm always concerned about those vat grown algorithms from a lab. I mean, are we sure they're _safe_?

<comment><USER13> I only trust real algos that are grown in a free range PHP forum.

<comment><USER14> Aye, but are they better than the local-sourced samples in the _comments_ on the PHP manual website? 17 upvotes can't be wrong.

</comment></comment></comment></comment><comment><USER15> Hey! Author here! Thank you so much for posting this here! If you have any questions feel free to ask me

<comment><USER16> > Since the algorithm has been invented it has been used as the default > sorting algorithm in Python, Java, the Android Platform, and in versions of > GNU.

I'm glad you mentioned how far the algorithm has spread to other languages since originating in Python. But, "versions of GNU" what?

<comment><USER17> Versions of GNU. Although it's rare to see this term being used in this context these days, "GNU" was invented as a name of an operating system.

<comment><USER18> Where is TimSort used in a GNU operating system?

I suspect this line originates from the Wikipedia entry for TimSort with the line:

"Timsort has been Python's standard sorting algorithm since version 2.3. It is also used to sort arrays of non-primitive type in Java SE 7,[3] on the Android platform,[4] and in GNU Octave."

Notice how the order of Python, Java, Android, and GNU is the same? My tentative hypothesis is that "Octave" was dropped, and that "GNU" here means something more like "in the GNU project."

Also, the author uses a time complexity table with Ω(), Θ(), and O() notations, but suggests "To learn about Big O notation", go to another hackernoon article which only talks about O() and not big omega or big theta notations.

</comment></comment></comment></comment><comment><USER19> Are there benchmarks available for this kind of algorithm? If you come up with a fast sorting algorithm how would you go about making a case it's faster than currently used ones on real world data?

<comment><USER20> You can go back and read the mailing list archives to see the benchmarks that were used by Python devs to decide on using Timsort: [https://mail.python.org/pipermail/python- dev/2002-July/threa...](https://mail.python.org/pipermail/python- dev/2002-July/thread.html#26837)

You can also read Tim Peter's notes about the sort: [https://bugs.python.org/file4451/timsort.txt](https://bugs.python.org/file4451/timsort.txt)

That was back in 2002, so there's certainly been a lot of scrutiny since then. In particular, I've never actually read about Java sorting benchmarks, but there are tremendously sophisticated benchmarking tools/benchmarking experts in the Java world, so I imagine that it got a lot of analysis there.

<comment><USER21> It's worth noting that Java doesnt exclusively use Timsort. Depeding on the data type and heuristics based mostly on the size of the input array, a simpler sort such as counting sort may be use.

You can find a more detailed summary at:

[https://stackoverflow.com/a/41129231/149138](https://stackoverflow.com/a/41129231/149138)

<comment><USER20> Cool find. I'd never actually realized that.

</comment></comment></comment></comment><comment><USER22> Don't forget: [https://news.ycombinator.com/item?id=9100107](https://news.ycombinator.com/item?id=9100107)

</comment><comment><USER23> In the film _Heist_, Gene Hackman's character is asked how he pulled something off. "I tried to imagine someone smarter than myself and I then I thought: What would he do?"

When I need to pull something off, I ask myself: What would Tim do?

</comment><comment><USER24> I ported timsort to C#/dotnet recently. Available in this nuget:

[https://www.nuget.org/packages/Redzen/](https://www.nuget.org/packages/Redzen/)

Source code here (there are three variants):

[https://github.com/colgreen/Redzen/tree/master/Redzen/Sortin...](https://github.com/colgreen/Redzen/tree/master/Redzen/Sorting)

None of the standard framework sort methods perform a stable sort so it's handy for that, as well as being a lot faster for some data, i.e. with pre- sorted runs. Otherwise the framework now uses introsort which is pretty good, so you should definitely performance test with both. I use both sorts depending on the context and I usually end up using the built in introsort, with timsort used for a few special cases.

</comment><comment><USER25> It's a great piece of engineering and because of the tongue-in-cheek name might be confused with a joke sorting algorithm...my favorite of which is sleep sort.

[https://www.geeksforgeeks.org/sleep-sort-king-laziness- sorti...](https://www.geeksforgeeks.org/sleep-sort-king-laziness-sorting- sleeping/)

</comment><comment><USER26> > Timsort is a sorting algorithm that is efficient for real-world data and not > created in an academic laboratory.

It's always a bit sad to see academia as an ivory tower where researchers generate unusable knowledge. Academia is not only about finding theoretical pure solutions but often also about finding solutions to real-world problems. For instance, machine learning, logic design, networking algorithms, cryptography, all deeply depend on work done in academia (and not just "theoretical" work).

<comment><USER27> > machine learning, logic design, networking algorithms, cryptography, all > deeply depend on work done in academia (and not just "theoretical" work)

All _highly_ theoretical fields long before we found concrete applications. It often took one or more people an entire lifetime to convince others than these were valuable subjects to pursue.

> Academia is not only about finding theoretical

No, but it has to start there. Theoretical science is how we find new things to turn into applied science. It required 45+ years between the time Heinrich Hertz introduced contact mechanics and RADAR was put into use, 33 years from when Einstein published mass–energy equivalence (E=mc2) and Otto Hahn cracked nuclear fission but only a few more years until Robert Oppenheimer and the Manhattan project turned that into the first atom bomb.

<comment><USER28> _No, but it has to start there._

That's simply not true. There's a loop: sometimes, industry comes up with a specific innovation, and academia generalized it; other times, academia comes up with an idea, and it's implemented in industry (often a commercialisation effort by the inventors). And sometimes academics are employed by industry and there's a hybrid. There's no one true way.

</comment></comment></comment><comment><USER29> I ran the code and it gave me [2, 3, 5, 6, 7], missing the 1. Appending the_array[i] after clearing the new_run by `new_run = []` seems to fix this issue.

</comment><comment><USER30> Any sorting algorithms that use deep learning?

<comment><USER31> You could of course write one. Presumably you're talking about using deep learning to decide the order in which to compare elements, but this would be difficult to ensure both always terminated and always gave correct results, to say nothing of likely being very inefficient.

The difficulties in sorting algorithms aren't difficulties in recognizing patterns, so it's difficult to see what deep learning brings to the table.

That being said, knock yourself out; surprise me!

<comment><USER32> For creating custom comparators?

"Sort these web pages in order of quality."

<comment><USER31> I've never seen a reference text that considers the comparator part of the sorting algorithm.

Timsort, quicksort, mergesort, introsort, smoothsort, etc. don't include the comparator as part of the algorithm definition.</comment></comment></comment></comment>


Ask HN: What is the product of the year 2015? - <AUTHOR> As the year closes what does HN think ? <comment><USER2> JetBrains Toolbox, all I can I can eat for £119 / year.</comment>