Show HN: C++ maths library for graphics and games - <AUTHOR> https://github.com/polymonster/maths <comment><AUTHOR> I wanted to share my c++ maths library have been adding to for quite a long time now, There are lot of other available maths libraries but I have enjoyed developing and maintaining this over the years since.

As a graphics programmer it has been a good learning experience to implement my own maths library from scratch because linear algebra is such an integral part of my job, I also learned a lot about template programming to implement the types and also the vector swizzles.

A lot of other available maths libraries provide matrix, quaternion and vectors.. but not as many provide a vast collection of geometric intersection and overlap tests as my library does.

Additionally other maths libraries may be SIMD implementations, this library is all scalar and that is my intention all along. I favour the portability and simplicity of the scalar implementation.. I do like SIMD for sure but find that code can be optimised to much greater effect by writing entire algorithms in SIMD and not relying on the underlying vector / matrix SIMD implementation.. this is due to often a large number of horizontal operations may be necessary in certain algorithms.

This may be a bit dated now, but my experience with SIMD vector implementations on PowerPC were very inefficient because of general use games / graphics code often wants to access and set single vector elements and get them into floats and it would cause load hit stores and massive performance penalties, so then you require the scalar float in vec type and add all that additional complexity.

Anyway.. I hope people might find this useful if you are looking for a simple c++ maths library packed with great features for graphics and games :)</comment>


Inside DuckDuckGo, Google's Tiniest, Fiercest Competitor - <AUTHOR> http://www.fastcolabs.com/3026698/inside-duckduckgo-googles-tiniest-fiercest-competitor

<comment><USER2> I see duckduckgo's traffic page referenced a lot: [https://duckduckgo.com/traffic.html](https://duckduckgo.com/traffic.html)

Anyone have any idea what Google or Bing's traffic graphs might look like over the same period? Would be very interesting to do a comparison.

I run a small subreddit, and was quite pleased with how it's grown. Then I noticed I actually FELL in subreddit rankings. turned out there's just a huge rising tide.

My intuition is that DDG is growing faster than search is growing, but that the growth rate may be less impressive than it appears from simply looking at the chart.

Either way, I'm really, really happy they're challenging google (and also glad Bing is still in the game). Monopolies are no good for anyone.

<comment><USER3> Google's statistics [http://www.statisticbrain.com/google- searches/](http://www.statisticbrain.com/google-searches/)

DDG is a drop in the bucket.

<comment><USER2> Exactly what I was looking for, thanks. The total isn't as important as the rate. Google has grown about 40% in the past four years. DDG has grown many times that.

It's very, very dangerous to extrapolate growth rates into the future. But I doubt Google's will grow faster, whereas DDG still has the potential to keep up high rates of growth.

If I did the math right (not certain), DDG has had 3096% average annual growth. Keeping that up for even four more years would make them large.

So it's not ridiculous to pay attention to DDG's progress. Unless things level off.

</comment></comment></comment><comment><USER4> I made the switch to DDG a couple of months ago, as I like their search results page (long listing, not short pages like Google), but after repeatedly being frustrated by not finding the results I need (and surprised each time I hit Google only to find the results right at the top), I switched back to Google yesterday. DDG as awesome as they are, simply are not Google. :(

<comment><USER5> The reason Google can give you good results is because of the tracking they do at tailoring the search results to you. DuckDuckGo doesn't do tracking like Google, so it's not going to be tailored to you.

<comment><USER6> Then what's the point of using DDG, when it can't give the results, tailored as per my needs!

<comment><USER7> that's not the only reason, google's results are better because they have vastly more resources both in employee talent and data. It's not just something as trivial as keeping track of your search history.

<comment><USER8> Where do you think those vast resources come from? Those resouces come from selling every ounce of information on you they can, they are even reading your email before you even open it. [http://www.usatoday.com/story/opinion/2014/09/04/google- spyi...](http://www.usatoday.com/story/opinion/2014/09/04/google-spying- advertising-privacy-column/15051241/)

<comment><USER7> "they" aren't reading email and what does it even mean "before I open it" \- they host it!!! It's software that "reads" gmail. If you don't want google reading your email, then simply host it elsewhere. Nobody is forcing you to use gmail. It's patently obvious that they use gmail and the usage of their other free services to garner more information to maximize their revenue. Don't like it, don't use it. It's a simple as that.

It frustrates me no end to read stupid comments like yours. Of course they use what you freely give them to their advantage. There are plenty of email hosting options, viable search alternatives, viable mapping alternatives etc etc. Google don't have a monopoly on anything. They make you a simple trade; compelling products in return for profiling you, what you say, where you go and what your search intents might be.

I know perfectly well where google's profits come from. Who reading this site doesn't?

<comment><USER8> I don't use it. I was just pointing out that their 'vast resources' are coming from the sale of your info, nothing more. Isn't that the point of these posts? Your comparing one search engine that is 'trying' to keep your searches private yet complaining they don't have the resources, when most of those resources for Google are coming from not keeping your searches private. I'm not sure where the complaint and or comparison is taking place. I freely give DDG my search data and they aren't using it to their advantage in the same manner google is, so whats your point again about ddg not being as good? I don't get your argument at all.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> I'm not sold that are a competitor. I'm also not sold on the privacy niche that they are trying to fill.

Without funding, they will have to rely on advertising. It's fact. I doubt companies with serious marketing budgets will use their platform.

Look at AppNexus for example. Pretty advanced technology.

You, as an advertiser would be a total idiot to spend the money on a 'static' ad placement within DDG.

Statistics matter. If this was 1990, maybe. Not in todays world. People don't just throw money at stuff like this.

Now from privacy angle. Has anybody actually verified their claims? Or do we just take their word for it?

Now, they offer Chrome extension and serve advertising. Both of those things leak data. So slowly, they are starting to have those 'exceptions'.

And do you really think they will be able to tell FBI 'We don't track stuff sorry guys!' when FBI really needs something from them?

They will either be shut down or forced to log data once they get any useful traction. That's the way it works.

I bet that once they reach that point, they will pivot as a 'regular' search engine or look for a buyer (re: Google).

Don't worry, you will get a warm notice of how they fought for your privacy but at the end they had no choice.

<comment><USER8> Holy defeatest attitude. Your not sold? LOL no your being sold ever single day. Those things leak data? Find some proof besides your own mind. Talk about stockholm syndrome.

<comment><USER9> > Find some proof besides your own mind

Proof of what? Referral tracking?

<comment><USER8> The DuckDuckGo extension is to provide duckduckgo searches using chrome, DDG's ads on 'their' site doesn't track you while your browsing the search results or when you click, however once you reach the page of the link you click on, then and only then are you probably catalogued and or recorded. But thats the independent site you visited not DDG. DDG can't force the websites you visit that you found using their service to not record or track you once you get there. In otherwords, ads can and do track, but the ads displayed on DDG do not...

"We do not use any third parties to do the code insertion, and we do not work with any sites that share personally identifiable information (e.g. name, address, etc.) via their affiliate programs. This means that no information is shared from DuckDuckGo to the sites, and the only information that is collected from this process is product information, which is not tied to any particular user and which we do not save or store on our end. It is completely analogous to the search result case from the previous paragraph--we can see anonymous product info such that we cannot tie them to any particular person (or even tie multiple purchases together). This whole affiliate process is an attempt to keep advertising to a minimal level on DuckDuckGo."

</comment></comment></comment></comment><comment><USER8> For those who think only Google can find what your looking for there is two reasons for that, one of course is they are tracking the crap out of you and tailoring search results for you in your own little search bubble world you've created, but an even bigger reason why some have trouble switching is because whether you know it or not, you've trained your brain to search in a Google like fashion, in otherwords, every search engine takes a little finessing when choosing what terms your use in your search, I've been using DuckDuckGo so long now, that my brain is now trained to use DuckDuckGo style search terms, so much so that those same terms don't always work on Google when they work just as I expected on DuckDuckGo. If anyone wants some pointers on how to make the change, simply try adding one extra search parameter to your regular query that you would use on google and wala, duckduckgo will more than likely find it, which to me is a small price to pay for a bit more privacy. Yes at times I also !g bang google, but its gets more or more less frequent.

</comment><comment><USER10> previous submission, with lots of comments:

[https://news.ycombinator.com/item?id=7270973](https://news.ycombinator.com/item?id=7270973)

<comment><USER11> Yes, the current post is a dupe. Thanks.

</comment></comment><comment><USER12> I've tried switching to DDG a few times but since so many other things are integrated into Google/Bing it never sticks.

Have the search results been gamed like they have on Google? That's my fear of DDG getting too big. Google is next to useless for so many searches that just return result after result of useless sites who have farmed questions/answers from other sites.

</comment><comment><USER13> Alright, so this is probably the place to ask this.

Why is there a juxtaposition between what people want and between what people are willing to give?

Specifically: why do so many people ban web crawlers other than the "large" ones, and then wonder why the quality of other search engines are lacking?

<comment><USER14> > Specifically: why do so many people ban web crawlers other than the "large" > ones, and then wonder why the quality of other search engines are lacking?

Not to be difficult but is this a real problem? Do a lot of sites ban DDG's crawler and then complain about the low quality experience? Can you name a single example?

<comment><USER15> As far as I know, DDG doesn't have a crawler and just uses other search APIs (Google, Bing).

edit: OK, I was wrong - [https://duckduckgo.com/duckduckbot](https://duckduckgo.com/duckduckbot)

<comment><USER8> 2nd wrong, DDG doesn't use Google for search results at all. Google essentially killed Scroogle that did exactly what startpage is doing now by banning their search proxy, which makes one wonder, what is the special relationship that startpage has with google that scroogle did not.

<comment><USER15> Oh. In that case I got DDG and StartPage confused.

Maybe StartPage still displays Google's ads? They display _some_ ads.

</comment></comment></comment></comment></comment><comment><AUTHOR> Gabriel Weinberg also has a super blog (and now a book) on traction that every startup founder should read.

<comment><USER16> Blog: [http://www.gabrielweinberg.com/blog/](http://www.gabrielweinberg.com/blog/)

Book: [http://tractionbook.com/](http://tractionbook.com/)

<comment><USER17> +1 to the book, it's chock full of more ideas to try than anything else I've read. (I'm sure the blog is great too, but I'm not familiar with it)

</comment></comment></comment><comment><USER18> Looks like from the query graph in the article, that DuckDuckGo enjoyed a huge surge in users after the Snowden leaks (more than doubling).

I've only toyed with the idea of switching off google for searching... mostly because I'm so tied into their ecosystem with my Android... but, I must say, DuckDuckGo looks impressive.

<comment><USER17> Just change your default search engine for a week and see what you think. 95% of the time I get the same results, and I just hop to google.com for the other 5%.

<comment><USER19> I've tried several times, and it has never stuck. But other people have clearly had different results.

<comment><USER20> Out of curiosity, did you make use of the g! keyword to cause a search to use Google instead? That was what made the transition easy for me. My search then consists of doing an initial search, and if the results look poor at first glance, toss a g! in front and see if it's better.

<comment><USER19> Thanks: I'll have to remember to make use of that.</comment></comment></comment></comment></comment>


Ecuador legalized gangs and murder rates plummeted - <AUTHOR> https://www.vox.com/future-perfect/2019/3/26/18281325/ecuador-legalize-gangs <comment><USER2> Maybe I didn't read this carefully enough, but how exactly do you legalize a gang?

I thought at least in US, there is no "being in a gang" charge. A random news search shows people who were called "gang members" but arrested for charges like illegal gun possession [0]. So how do we decriminalize that?

[0] [https://www.kxii.com/content/news/Irish-Mob-gang-member- arre...](https://www.kxii.com/content/news/Irish-Mob-gang-member-arrested-in- Johnston-Co--507680081.html)

<comment><USER3> There are _sentencing enhancements_ for being in a street gang when committing a felony.</comment></comment>


Self-contained Literate Programming - <AUTHOR> http://www.profv.de/literate-programming/

<comment><USER2> I did something similar some time ago, creating an "executable blog post":

<http://bergie.iki.fi/blog/literate_programming_with_php/></comment>


Stick: $0 commission for private market transactions - <AUTHOR> https://stickeroid.com <comment><USER2> Hmmm, interesting. How they monetize the platform?

<comment><AUTHOR> It seems that they earn only on tools for the investor through a subscription model.</comment></comment>


Dear MongoDB users, we welcome you in Azure DocumentDB - <AUTHOR> https://azure.microsoft.com/en-us/blog/dear-mongodb-users-we-welcome-you-in-azure-documentdb/ <comment><USER2> Yes, except you can't do the most basic things with DocumentDB and it becomes very expensive very fast. Especially if you want multiple collections.

There's a lot lacking with DocumentDB, as evident from the feedback forum, that comparing it to Mongo is like comparing an infant to an adult. The infant might be cute, but it can't do a whole lot.

[https://feedback.azure.com/forums/263030-documentdb/filters/...](https://feedback.azure.com/forums/263030-documentdb/filters/top)

<comment><USER3> To build something similarly sized with the free version of Mongo would also be expensive. It's a trade off.

</comment></comment><comment><USER4> When users have evaluated DocumentDB against MongoDB, they see major shortcomings in Microsoft's offering:

"As we were developing our new financial benchmarking service last year, we evaluated Microsoft's Azure DocumentDB, but MongoDB offered much richer query and indexing functionality"

KPMG France [https://www.mongodb.com/blog/post/kpmg-france-enters-the- clo...](https://www.mongodb.com/blog/post/kpmg-france-enters-the-cloud-era- with-new-mongodb-data-lake)

</comment><comment><USER5> All of the following three share something in common: 1) Microsoft Azure DocumentDB 2) Google Cloud Spanner 3) Amazon Web Services DynamoDB

Total cloud-vendor lock-in. It's clear why the clouds want users investing in these difficult-to-migrate-from solutions...

</comment><comment><USER6> Needs more hashtags. Reach all those Millenials graduating $10k 3-month bootcamps. Sigh.

<comment><USER7> lol, yeah, this marketing piece doesn't really feel professional. It is littered with useless illustrations and bad poetry.

> Third, we do it with love…

With love for our money sure. What the hell does that even mean? I really rolled my eyes reading that blog post. This is childish and out of place for an article trying to sell security.

<comment><USER8> I think they know their target audience. (It's for MongoDB users after all.)

</comment></comment></comment><comment><USER9> I've been out of touch with Mongo for a while, but when did it stop being common practice to just hide :27017 behind a firewall with only your app's DB access layer (or, at most, a few nodes in the local subnet) talking to it?

<comment><USER10> Probably around the same time ops were deemed useless :)

[1] [https://news.ycombinator.com/item?id=13644789](https://news.ycombinator.com/item?id=13644789)

<comment><USER11> I saw that chain too. I guess I do devops differently. Since I'm bootstrapping I don't have money for an ops person. So I've set about learning ufw, let's encrypt, nginx/tls termination to a service only accepting local connections to the port, etc. I see devops as the developer learning the ops side to take responsibility for the whole stack.

<comment><USER12> As a dev, I've been going through the same process for several months now. Honestly, for each of the concepts I've come across (ufw, let's encrypt, etc), you _might_ bang your head for a few days with each one but you will eventually _get it_. I don't know why people make it out to be so difficult.

<comment><USER13> Stigma around ops and QA work.

</comment></comment></comment></comment></comment><comment><USER14> One of the best things about AWS is the "Jeff Barr style" posts describing every service they release. I find them much easier to consume than a blog post like this.

<comment><USER15> Well, this post was a marketing post, not a product release. Product release posts in Azure are much more informative for a dev that this post.

<comment><USER16> > _Product release posts in Azure are much more informative for a dev [than] > this post._

Who _is_ this for then?

<comment><USER17> The dev managers that see a new buzzword and think, " _ooh_ azure supports mongo now... we should target it for our new app, I hear that MEAN stack is really nice, it should fit right in."

</comment></comment></comment></comment><comment><USER18> AWS needs something like this.

The missing piece for the AWS serverless story is a database that is suitable for writing real world applications. DynamoDB is far from suitable for that task, which leaves AWS serverless with no good database.

<comment><USER19> AWS has RDS - That's most certainly a database suitable for writing real world applications as its MySQL.

Does serverless somehow mandate a non SQL solution?

<comment><USER18> RDS is server based - you need to pay to have an instance running per hour. That's not serverless. That's "serverful".

<comment><USER19> I'm not sure how that differs from Azure Document DB? I have no inside info on this, but, I'm pretty sure it runs on a server too.. In the specific context of databases used for "serverless", clearly there are servers involved, it's simply that your application and ops team doesn't manage them.

What I'm getting at is, a hosted DB is a hosted DB.. What makes SQL unsuitable for serverless?

<comment><USER19> Replying to myself here, I missed a key point.. the issue you raise is that you're billed per hour, even when it's unused? That makes some amount of sense, but any data storage is going to come with a per hour bill - either for the instance of it, or the data within it.

Anyway, my bad, I now see your point :)

</comment></comment></comment></comment></comment><comment><USER20> I think Microsoft should implement basic aggregation functions first.

<comment><USER21> Implementing aggregation at query time is a temporary solution. For systems like this aggregation should be done on insert time - many hugely popular databases do not provide much more than a basic get operation for this reason

<comment><USER20> You might be right but Mongo supports them and Microsoft says that we can start using DocumentDb without changing any line of code which is not true.

<comment><USER21> Yeah I don't get why they're marketing to Mongo users, weird choice. This is a DB for companies trying to moved to a query-less architecture - something no one should be doing with mongo

<comment><USER15> I never thought about it that way but makes total sense. Clearly you 'get' it!

</comment></comment></comment></comment></comment><comment><USER22> Interesting... So compatible with Mongodb protocol but not using mongodb internally ?

What is your view of services, which provide functionality of some other software or SAAS and is API / Protocol compatible ?

Can API / protocols be copyrighted or patented? I believe not based on Google vs Oracle.

<comment><USER23> Hasn't tokuMX already put a 'proper' solid DB behind the mongo API?

<comment><USER4> TokuMX was discontinued last year

</comment></comment></comment><comment><USER24> > First and foremost, security is our priority

In response to [https://www.theregister.co.uk/2017/01/09/mongodb/](https://www.theregister.co.uk/2017/01/09/mongodb/) ?

"MongoDB databases are being decimated in soaring ransomware attacks that have seen the number of compromised systems more than double to 27,000 in a day."

</comment><comment><USER25> As someone that almost got bitten by MongoDB's lax auth defaults, I was happy to read that DocumentDB has enabled access control out of the box and no default username/password.

Also, there's a query playground if you want to try it out quickly: [https://www.documentdb.com/sql/demo](https://www.documentdb.com/sql/demo)

<comment><USER26> It's important to be aware of security implications of leaving an unauthenticated server listening on the open internet (listening on 0.0.0.0 is _not_ the default since some time now and if installing the rpm/deb package listening on 127.0.0.1 is the default option). Also never leave an internet facing server without a firewall.

As a SaaS it's not surprising DocumentDB got security configured, and it also won't be surprising when people lose data because they'll put '123456' as their password or commit their password to a public repository

<comment><USER17> Pretty much everything Azure does is over TLS and requires authentication.. some of the authentication for services is more convoluted than others.

Personally, I'm pretty happy with how easy it is to use the Azure Storage services (blob, tables, queues) as well as their Azure SQL offering. Far less arcane configuration options than you get with AWS's competing options. If only their compute nodes weren't so pricey.

</comment></comment></comment><comment><USER27> We used to use DocumentDB, but switched to Azure Table Storage a while back. Did some benchmarking and DocumentDB was too slow for our needs (getting documents for a range between two epochs). Not sure if others experienced the same thing or if things have gotten better since then though.

</comment><comment><USER28> Never looked at DocumentDB before. So if I get this straight, I can get a fully managed DB that can scale easily, but still have all the advantages and compatibility of a regular NoSQL like Mongo?

I think that's a first, right?

<comment><USER29> Isn't it the same general idea as Amazon's DynamoDB?

<comment><USER30> So long as you skip over the costs if you want any kind of performance (you need to configure a "number of accesses per time period" with costs scaling alarmingly the higher you go)

</comment></comment></comment><comment><USER31> I hear it's got even better write performance than /dev/null ;)

</comment><comment><USER32> Potter's paying 50 cents on the dollar for your shares in the Building & Loan...

</comment><comment><USER33> From frying pan to fire probably.

</comment><comment><USER34> Trading privacy for a false sense of security, are we?

<comment><USER35> Trading privacy? Can you elaborate?

<comment><USER34> The idea of storing sensitive data at one of the most data hungry company in the world "for security", doesn't sound like it came from a genius. I thought I was pretty clear earlier?

Moving FOSS into the cloud as a SaS sounds kinda regressive to me...

<comment><USER35> If you can explain your fears perhaps we would understand, because I still don't know why using Azure is a privacy trade? Does Microsoft "steal" the data?

<comment><USER34> It happens all the time, and also; when using proprietary software you never know, and that's the big issue (for me). I never use SaS or MS-products (I only use FOSS) so I don't fear for myself.

<comment><USER36> When has a SaaS operator stolen data hosted on their service?

<comment><USER37> Not agreeing with thread OP here, but I would certainly differentiate between "stealing" and "exploiting" (not in a security exploit sense). User data certainly gets exploited on _some_ SaaSs that would otherwise be unexploitable on your own stack.

I'm not saying this necessarily applies to compute engines or storage as a service or whatever, but something like gmail (SaaS) where your data is used to target ads at you could be considered exploiting your data. I would not put it beyond large companies to start considering doing the same on their storage-as-a-service offerings soon enough.

<comment><USER35> The difference is that in the case of Gmail, monetisation is though ads and in the case of compute engine or storage the monetisation is through client payments.

If Google, Microsoft or other companies start to look at the data to exploit it hey will lose trust, the customers and the data.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER38> Microsoft trying hard to get developers to work on their platform and fail has really become very much fun. Microsoft deserves for being evil. Example: Microsoft does not save history in cmd shell(its so irritating for devs). The height of the cruelty is they aliased the curl and wget by __default __to its own program(do not remember).

<comment><USER39> Having a subpar shell application is evil?

<comment><USER38> Aliasing linux command tools to its own is definitively evil [https://daniel.haxx.se/blog/2016/08/19/removing-the- powershe...](https://daniel.haxx.se/blog/2016/08/19/removing-the-powershell- curl-alias/)

</comment></comment></comment><comment><USER40> You cannot look at the code, and cannot monitor the infrastructure. The only thing left is trust.

Trust in the belief that Microsoft will act in your best interest regarding the privacy of your data.

But, isn't reasonable then to ask if Microsoft is actually trustworthy? PRISM, NSAKEY, Flame malware propagating via Windows Update, their 0day policy... I don't think Microsoft is trustworthy.

<comment><USER23> People choose managed services all the time.

If you worry about interception, then code inspection and monitoring isn't going to give you any assurances. You'd have to run open-source software locally, audit it, and not put it on a cloud like Azure in the first place?

(And the NSAKEY was something completely different if you dig into it.)

<comment><USER40> Using a service means trusting a service. Nothing wrong with either, it's a decision up to the consumer.

I am just saying, in this specific case, should you trust Microsoft with your data? That's all.

<comment><USER41> [https://www.microsoft.com/en- us/TrustCenter/Privacy/default....](https://www.microsoft.com/en- us/TrustCenter/Privacy/default.aspx)

If you don't trust MS you can trust one of the organisations that certified them for the strictest compliance and regulations in the public cloud space.

<comment><USER40> Sounds good. But how do you exactly verify those claims? Again, you can't. You are back to square 1: trusting Microsoft acts in good faith and acts in your best interest.

<comment><USER42> How do you verify that a doctor is making the right call re how to treat your cancer? You either become a doctor yourself, or trust that they know what they're doing.

<comment><USER40> And what if a doctor has a controversial reputation?

<comment><USER42> Then you can make a decision to go with another doctor. Are you questioning the reputation of the auditors, or just writing off MS across the board?

<comment><USER40> You can have audit proof software that is completely secure. If you tamper the infrastructure, share keys, leave obscure backdoors, etc. it is not hard to come up with a NOBUS scheme.</comment></comment></comment></comment></comment></comment></comment></comment></comment>


Video of criminally insane mass-murderer from Germany who killed 10 in Hanau - <AUTHOR> https://www.youtube.com/watch?v=y0gInnSTIr4 <comment><AUTHOR> this guy went on to shoot up a shisha bar in Hanau a few days later[1].

high time we have a discussion around the isolating effects of technology and how the weakest in society are radicalizing themselves in their info-bubbles.

Also check the anti-gun video of Eminem song "Darkness" he makes a case for anti-gun legislation (but if you look close) also shows how the shooter was a deeply troubled product of isolation (duh).

We won't be able to root this out with stricter gun laws alone and need to consider what to do against this (upload filters won't help us and more security/police isn't going to save us either).

[https://www.theguardian.com/world/2020/feb/19/shooting- germa...](https://www.theguardian.com/world/2020/feb/19/shooting-germany- hanau-dead-several-people-shisha-near-frankfurt)

</comment><comment><AUTHOR> link is dead now (as expected).

<comment><USER2> This article has a copy: [https://www.open.online/2020/02/20/chi-e-tobias-il- killer-te...](https://www.open.online/2020/02/20/chi-e-tobias-il-killer- tedesco-che-ha-pubblicato-le-sue-tesi-razziste-su-internet-germania-hanau/)</comment></comment>


React.Js: Achieving 20ms server response time with Server Side Rendering - <AUTHOR> https://ateev.in/react-js-achieving-20ms-server-response-time-with-server-side-rendering-1ea80e420d88#.kpe4d4xgb <comment><USER2> What this article _should_ have linked to: [https://github.com/walmartlabs/react-ssr- optimization](https://github.com/walmartlabs/react-ssr-optimization)

> After peeling through the React codebase we discovered React's > mountComponent function. This is where the HTML markup is generated for a > component. We knew that if we could intercept React's > instantiateReactComponent module by using a require() hook we could avoid > the need to fork React and inject our optimization. We keep a Least- > Recently-Used (LRU) cache that stores the markup of rendered components > (replacing the data-reactid appropriately).

> We also implemented an enhancement that will templatize the cached rendered > markup to allow for more dynamic props. Dynamic props are replaced with > template delimiters (i.e. ${ prop_name }) during the react component > rendering cycle. The template is them compiled, cached, executed and the > markup is handed back to React. For subsequent requests the component's > render(..) call is short-circuited with an execution of the cached compiled > template.

<comment><USER3> > After peeling through the React codebase

Except you don't have to peel through their code base or intercept any calls, they expose a clean interface for this: [https://github.com/facebook/react- devtools](https://github.com/facebook/react-devtools)

You can capture it like this:

      window.__REACT_DEVTOOLS_GLOBAL_HOOK__.inject = function(obj) {
        // obj.Mount
      }

Which is how we're doing SSR at [https://www.prerender.cloud/](https://www.prerender.cloud/) for compatibility across React versions.

<comment><USER4> Please know this is not supported.

<comment><USER3> Not supported, as in, the react-devtools that rely on it could break at any moment? Or just that you don't officially document the API?

<comment><USER4> The latter – and it is likely that we will change this API in the future and update the devtools to match. No guarantee that your monkeypatch will continue to be possible, especially as we rewrite large parts of the internals ([https://github.com/acdlite/react-fiber- architecture](https://github.com/acdlite/react-fiber-architecture)).

</comment></comment></comment></comment></comment><comment><USER5> The headline should've been "it takes 150ms to do server-side rendering with React," not, "hey everyone I can put something in Redis." I would _not_ take this person's advice. There's most likely something else really wrong with their code.

Also.... 20ms with caching the pages in Redis? That sounds really, really slow. There's definitely something else going on.

<comment><USER6> 150ms is pretty standard server-side rendering React for a relatively simple page, but it scales pretty predictably with the complexity of the component tree. Obviously there are some caching strategies available, but I think the only real solution is going to come from serious investment in the problem from the React side. I can't see the core devs tackling it, because Facebook doesn't require it, but maybe the community can step in.

<comment><USER7> Really? Because that is absolutely awful compared to other tech stacks, even other tech stacks from more than a decade ago.

<comment><USER6> That's because React isn't designed for server-rendering. It's able to do it, but if you expect the same performance as as traditional template engines you're going to have a bad time.

<comment><USER7> So why are people using server side react then? Is it any faster client side, because that would also be very slow?

<comment><USER8> One benefit is that you can render server-side and seamlessly take over on the client-side without needing a re-render.

Another benefit is simply React's component-based approach itself. I once went as far as using React for wordpress templating just because I prefer its approach to the standard WP <?php echo $blah ?> shit. I wouldn't recommend that to others though.

</comment></comment></comment></comment></comment></comment><comment><USER9> > For this, we created a small param cache=false. Whenever the url is hit with > this URL, the node server makes and API call instead of fetching data from > the redis cache. And hence the cache is updated with the newer data.

> Whenever you deploy, new chunk hash for js and css files gets generated. > This means if you're storing the whole HTML string in the cache, it'll > become invalid with the deployment. Hence, whenever you deploy, the redis db > needs to be flushed completely.

These arguments sound like over-engineered "solutions" by somebody who did not do their homework. To speed up your SSR, render components, not the _whole_ page. Vast majority of your page is going to remain constant: the head, navigation, footer. Rendering these components in partials will save you the Redis store by a very, _very_ large margin. Once they start caching hundreds of thousands of HTMLs, the Redis server will start swapping the content from memory to the disk. There, you just defied the whole point of using Redis.

Also, your users are _still_ going to see the 810ms latency the first time they access your service. How often do you think they'll be reloading right after the page is loaded? And once the cache is invalidated -- which I suppose would happen frequently -- the _visible_ latency is still high.

<comment><AUTHOR> > To speed up your SSR, render components, not the _whole_ page.

That is totally wrong. Rendering components again and again is not performant at all. "Rendering components, storing them somewhere and finally when user requests, stitch them and give it to the user." Is that your solution ? That would be even more expensive than normal rendering.

> your users are _still_ going to see the 810ms latency the first time they > access your service

That is not true too. Only one user will see the 810ms latency. All the users, when access this page, will get sub 20ms response time. Have you ever worked with servers/caching and know how they work ?

<comment><USER9> > "Rendering components, storing them somewhere and finally when user > requests, stitch them and give it to the user." Is that your solution ? That > would be even more expensive than normal rendering.

String concatenation/substitution is more expensive than DOM parsing?

> Only one user will see the 810ms latency.

If your whole content is cacheable, then a CDN will be far more useful and have way less than 20ms response time. 20ms is not fast. Selectively invalidating CDN content as new data is available is much more performant.

> Have you ever worked with servers/caching

Yes.

> know how they work

Yes, still learning though.

<comment><AUTHOR> > String concatenation/substitution is more expensive than DOM parsing?

Not 100% sure. Theoretically saying, if you have 100 components in your page, you'll be hitting the cache store 100 times for all components. That's not performant at all.

> If your whole content is cacheable, then a CDN will be far more useful and > have way less than 20ms response time. 20ms is not fast. Selectively > invalidating CDN content as new data is available is much more performant.

Yes. Thanks for the suggestion. We are experimenting with that :)

</comment></comment></comment></comment><comment><USER10> I thought I was going to learn how to speed up my SSR, instead I learned about how to hide from my problems by using Redis. I am disappointed.

<comment><AUTHOR> Sorry to disappoint you, but sometimes simple solutions solve big problems :)

</comment></comment><comment><USER11> At the point where you're able to cache the exact HTML you're returning to the client, it's more efficient to do that in front of your node server than behind it. A cache hit can avoid your application completely, which is a real boon for performance and scalability. You can run your own caching http proxy, like varnish, or use a CDN like Fastly.

<comment><AUTHOR> Yes totally agree. Actually we are doing some experiments with that too. We chose redis for it's easier and simpler integration and highly programmably controls.

</comment></comment><comment><USER12> This makes me wonder how many people are using AJAX as an excuse for slow response times. If >500 ms isn't acceptable for a full page load then it shouldn't be acceptable for an AJAX REST call either. A page showing a spinner instead of content isn't any more useful to the user than a blank page.

<comment><USER13> Agreed! That said - a lot of people don't realize that Amazon's services can be _quite slow_ and think they can always throw it on there and it'll be fast.

They're often high latency (for a service - 180+ms) but are also high availability.

Slap a CDN in front (like Fastly) and get in the 10s of ms response time if possible.

</comment></comment><comment><USER14> If your HTML is cacheable: You just need to set your HTTP header's appropriately.

You can also invest in a CDN. Now we have a React.js SSR with 0ms server response time! :)

</comment><comment><USER15> TLDR; Caching improves performance.

</comment><comment><USER16> I'm quite interested in learning why the author decided to use React for the user-facing part of the blog in the first place.

<comment><AUTHOR> Hello ! Schmrz. I wrote about it a while ago. [https://ateev.in/why- react-231af9e73d9a](https://ateev.in/why-react-231af9e73d9a)

</comment></comment><comment><USER17> > 150 ms for server side rendering

that's really really really bad for generating a html (and even sending it to the user).

I can achieve the whole damn thing in 20ms or less.

> The average response time fell to 20 ms !

yep in java/go/whatever you don't need the cache, with it your avg response would drop even further!

<comment><USER7> A decade ago I was on a project where we aimed for 30ms with database calls and all. For most of the app we got there with a few pages blowing out to 50-60 and 1 or 2 being a bit more. Even that was on hardware not flash for the time.

</comment></comment><comment><USER18> The title reminded me of react-dom-stream[0] which is accompanied by this great talk[1]. Went back to see if some parts of it landed to the core[2] but it hasn't seen any progress as of late. Oh well.

[0]: [https://github.com/aickin/react-dom- stream](https://github.com/aickin/react-dom-stream) [1]: [https://www.youtube.com/watch?v=PnpfGy7q96U](https://www.youtube.com/watch?v=PnpfGy7q96U) [2]: [https://github.com/facebook/react/issues/6420](https://github.com/facebook/react/issues/6420)

</comment><comment><USER19> This article mentions SEO.

As far as I know, as long as the content is embedded in JSON/JS when the page loads, it's fine to then "render" it with JavaScript. It's 2016 and Google started crawling JS websites a while ago.

However, if you fetch it with AJAX after the page loads, Google won't see it because it doesn't necessarily follow AJAX calls nor wait around for them to return in 810ms. They'll most likely only render the bundled content.

You can use the "fetch as Google" tool in Google Webmaster Tools to try this out for yourself.

</comment><comment><USER20> Soo .. the whole point of the article was that you used Redis to cache your html response and got an improvement.

Umm .. nice work ? I guess ..

</comment><comment><USER21> So... we're back to server-side rendering?

<comment><USER22> Web development: Everything old is new again.

I wonder when using shell scripts and/or Makefiles instead of Webpack/Browserify/Gulp/Bower/NPM/whatever for building will become popular again.

<comment><USER7> Funnily enough, I only recently discovered and started using make. I started in the "everything is xml" era of build tools and was unsatisfied with many/all of the newer ones so I tries make. Wish I'd done it years earlier.

All the tutorials seem to focus on using it for c++ projects with all of their complexities when it's really simple for a a typical java or c# project.

</comment></comment></comment><comment><USER23> Nice, except, I suppose, if you have a system where the HTML ultimately depends on the size of the window.

</comment><comment> angry-hacker Why on earth react for a blog..?

</comment><comment><USER24> Please tell me all the horrible javascript is going to be rendered server side soon

My browser would thank you</comment>


Amazon Ships Ad-Supported Kindle Early - <AUTHOR> http://technology.inc.com/2011/04/27/amazon-ships-ad-supported-kindle-early/

<comment><USER2> $25 discount seems kind of ridiculous. Book/magazine/etc advertising alone would be worth > $25 over the year(s) someone's got one.

</comment><comment><USER3> Genius quote: "I'd rather pay extra for NO ADS"

... Uh, lady, you -can-. This is a discount for those who wouldn't rather pay extra. Jeez.

</comment><comment><USER4> The weirdest thing to me about this Kindle is the price point--why not drop another $15 and make it $99? At $114, it just doesn't seem very appealing, but I feel like they could sell a ton of them advertising it as "under $100".

<comment><USER5> I would bet that is plan, when the Holiday season hits.

</comment></comment><comment><USER6> No one thinks this is sane, right? Have ads burned onto your reading experience for 25 freaking bucks?

<comment><USER7> I wouldn't get it, but it shouldn't actually affect the reading experience:

"When you buy Kindle with Special Offers, you are getting the same bestselling Kindle for $25 less—only $114. Special offers and sponsored screensavers display on the Kindle screensaver and on the bottom of the home screen—they don't interrupt reading."</comment></comment>


Norton Commander (Wikipedia) - <AUTHOR> https://en.wikipedia.org/wiki/Norton_Commander <comment><USER2> I used this in the DOS days. If you want to experience it today, you can install Midnight Commander on Linux (package: mc).</comment>


Domain Profiler - <AUTHOR> https://github.com/jpf/domain-profiler

<comment><USER2> Interesting idea. Slightly buggy on the web host detection, some domains (e.g. my own - adamgibbins.com) return "RIPE Network Coordination Centre" as the host (its actually Linode - UK, hence RIPE).

Seems you're incorrectly picking the "OrgName" from the IP whois.

</comment><comment><USER3> Definitely a nice tool, but similar software has been commercial around for quite a while. The real problems start to appear as soon as mass scanning sets in.</comment>


The Fundamental Laws of Sofware Engineering: A Satirical Short Paper - <AUTHOR> https://arxiv.org/abs/1609.07818 <comment><AUTHOR> Best part:

"Take these two examples of desired universal laws of software engineering:

FU: every system, big and small, should have provisions that allow it to be FIXED and UPDATED either from within or outside the system proper;

CK: every system, big and small, should have provisions that allow it to acquire and make use of CONTEXTUAL KNOWLEDGEto decide whether it is functioning properly or not.

The combination of the two laws gives us the FUCK property: A system that obeys both the FU and CK laws can verify the conditions of its operating environment and decide whether its actions are coherent or not with the current context of that environment.

Furthermore, if it decides they are not, the system can fix itself, ask for an external fix or be fixed, forcibly, by some sort of external agent.Think cells and cellular systems. They are obviously a FUCK system"</comment>


Ask HN: What if a non-American abanddon Delaware CCORP for 3 years not pay tax? - <AUTHOR>
 I have registered C Corporation in Delaware with Stripe Atlas, I didn't issued stocks and never used company. I am a foreigner (non-American) and don't open bank account for this C corporation, it has no income. Because there are some problem with my team, so Should I dissolve it and pay franchise tax or I just walk away? What happen if I walk away? Thank you so much. <comment><USER2> Only an attorney can tell you for sure. Probably nothing, but if you are trying to start another company in the future you could have problems. Also, if you needed a US visa in future. In general, it's better to spend the money to tie up loose ends rather than receive unpleasant surprises later.

<comment><AUTHOR> Thank you.

</comment></comment><comment><USER3> It is common to walk away from an abandoned C Corp. Realize that under current law, a C Corporation is a legal human being, and they can legally just exist and do nothing. If you ever want to use that C corp io the future, you'll need to pay up back owed fees. Due to this, new C Corporations are easier to create, and there are millions of "dormant" C Corporations lingering because it is not worth the expense to shut them down.

<comment><USER4> Agree.

IRS will chase you for unpaid taxes (and even these should be high enough to justify the effort) but highly unlikely anyone will bother to do anything for unpaid $200/yr or so silly fees.</comment></comment>


India set to start massive project to divert Ganges and Brahmaputra rivers - <AUTHOR> http://www.theguardian.com/global-development/2016/may/18/india-set-to-start-massive-project-to-divert-ganges-and-brahmaputra-rivers <comment><USER2> Before people start engaging in fear mongering and doomsday prophesying, please spend a little time researching this issue further.

This isn't the first time a project of this scale has been done successfully. Germany has already done something similar with the Rhine-Main-Danube canal[1]. 3 similar projects have been conducted in America, involving over 2500km of waterways[2][3][4].

There are indeed some concerns over the environmental impacts that this will have, just like with any major infrastructure project, but no scholar has forecast the kind of doomsday rhetoric that people here seem to be spouting just from reading the headline.

If you're going to make the argument that such projects should be reflexively abandoned because of "unintended/unpredictable consequences", any and all GMO agriculture practices should also be abandoned immediately by the same reasoning. And yet, reasonable people have come to agree that blindly standing in the way of progress, especially when it stands to benefit hundreds of millions of people, is just silly.

[1] [https://en.wikipedia.org/wiki/Rhine%E2%80%93Main%E2%80%93Dan...](https://en.wikipedia.org/wiki/Rhine%E2%80%93Main%E2%80%93Danube_Canal)

[2] [https://en.wikipedia.org/wiki/Illinois_Waterway](https://en.wikipedia.org/wiki/Illinois_Waterway)

[3] [https://en.wikipedia.org/wiki/Tennessee%E2%80%93Tombigbee_Wa...](https://en.wikipedia.org/wiki/Tennessee%E2%80%93Tombigbee_Waterway)

[4] [https://en.wikipedia.org/wiki/Gulf_Intracoastal_Waterway](https://en.wikipedia.org/wiki/Gulf_Intracoastal_Waterway)

<comment><USER3> The difference here is that Germany and the US could be counted upon to negotiate in good faith with their riparian neighbors.

India... not so much.

<comment><USER4> I call BS on this. India has always been a good neighbor. If that wasn't the case we would never have been able to resolve the long standing border dispute that existed between India and Bangladesh: [http://www.news18.com/news/india/prime-minister-narendra- mod...](http://www.news18.com/news/india/prime-minister-narendra-modi-signs- land-boundary-agreement-with-bangladesh-pm-sheikh-hasina-1002466.html)

The question that really needs to be asked is: Does India have good neighbors? China and Pakistan illegally occupying lands in Kashmir and Arunachal Pradesh, illegal immigration from Bangladesh into North-eastern Indian states, Sri Lanka capturing and killing Indian fisherman, the list goes on and on.

EDIT: There is already a Water Treaty between India and Bangladesh over sharing of Ganges waters at Farakka: [http://www.jrcb.gov.bd/attachment/Gganges_Water_Sharing_trea...](http://www.jrcb.gov.bd/attachment/Gganges_Water_Sharing_treaty,1996.pdf)

You still have doubts over India having bad faith in negotiating with it's neighbors? Give me one instance where India has broken a pact with it's neighbors?

<comment><USER5> what do you mean by "india being always a good neighbour"? yes it used to be, long ago, but not any more. You have no idea how this country is pushing around it's neighbours.

[http://www.felanicamp.com/](http://www.felanicamp.com/) [http://www.thedailystar.net/country/felani-killing- justice-d...](http://www.thedailystar.net/country/felani-killing-justice- denied-border-killings-continue-198391)

and what do you actually mean by "illigal immigration from bangladesh"? It's actually the both way around. In fact, bangladesh is the biggest and the only destination of all the cow smugglers from india's eastern border.

[http://www.thequint.com/india/2015/10/12/cow-smuggling- pay-5...](http://www.thequint.com/india/2015/10/12/cow-smuggling-pay-500-taka- and-your-cow-is-legal-in-bangladesh)

During the spring/summer, you can cross the Ganges river by walking, if you ever come to rajshahi, chapai-nawabganj border, you will be able to see it yourself.

edit: typo

<comment><USER4> > what do you mean by "india being always a good neighbour"? yes it used to > be, long ago, but not any more. You have no idea how this country is pushing > around it's neighbours.

Both examples you cited are of illegal immigration. There is absolutely no reason for the BSF to kill anyone crossing the border legally.

EDIT: Yes we used to be a good country as long as we allowed illegal immigration and illegal cattle trade. The moment we prevented it we naturally became the bad guys.

> and what do you actually mean by "illigal immigration from bangladesh"? It's > actually the both way around. In fact, bangladesh is the biggest and the > only destination of all cow smugglers from india's eastern border.

Those cow smugglers are illegally immigrated Bangladeshi's themselves. Read about your smugglers here: [http://www.ibtimes.com/cattle-smuggling-dangerous- illegal-hi...](http://www.ibtimes.com/cattle-smuggling-dangerous-illegal- highly-profitable-trade-between-india-bangladesh-1553155).

Specific quote: "However, the Telegraph noted that even when soldiers from India's Border Security Force (BSF) seize stolen cattle, they are often attacked or even killed by mobs of people led by the smugglers themselves. Lawmakers fear that the depletion of local cattle would also hurt the farming economy on the Indian side of the border if police do not crack down on smuggling. Putul Chandra Roy Pradhani, the organizing secretary of the All Assam Students Union (AASU), which is better known for campaigning against illegal immigrants from Bangladesh, warned that strict legislation must be passed against cattle raiders as well. "[Cattle] smugglers are taking advantage of flexible laws," he told the Telegraph. "In 2009 and 2010, [the local government] enforced rules and regulations that almost stopped the [cattle] smuggling. But those rules and regulations are not being strictly imposed now."

Read about the illegal immigration of Bangladeshi's into India here: [https://en.wikipedia.org/wiki/Illegal_immigration_to_India#I...](https://en.wikipedia.org/wiki/Illegal_immigration_to_India#Illegal_Immigration)

Approximately 3 million illegally crossed over to India. How many Indian's crossed over illegally to Bangladesh?

<comment><USER5> well, it turns out that it's not that small !

[http://scroll.in/article/664305/dhaka-has-a-question-what- ab...](http://scroll.in/article/664305/dhaka-has-a-question-what-about-the- illegal-indian-immigrants-in-bangladesh)

As for the cow smugglers, you can find gazzilions of exact the opposite stories elsewhere. Also looks like india has Rs 12,000-crore of beef industry, only targeted to bangladesh.

[http://indianexpress.com/article/india/india-news- india/bang...](http://indianexpress.com/article/india/india-news- india/bangladesh-raises-concern-as-rajnath-singh-order-hits-beef-supply/)

let me give you a small example, those crappy TATA cars/trucks only sell in bangladesh, nepal and bhutan (may be?), and no where in the world.

<comment><USER4> Are you seriously this ignorant about TATA group? Go and find out who owns Jaguar and then come back to me with real facts.

<comment><USER5> well, this used to be a story long time ago. I think, like 8 years ago, in 2008-09. Jaguar went bail-out, and TATA acquired it. Do people still buy jaguar cars? I doubt.

So, you mean now are we going to see those jaguar "trucks" on the streets of bangladesh? holy crap.

You missed the point, could you please name a single country (other than bangladesh, india, nepal, bhutan, srilanka, and pakistan) where those TATA cars run ?

<comment><USER4> > You missed the point, could you please name a single country (other than > bangladesh, india, nepal, bhutan, srilanka, and pakistan) where those TATA > cars run ?

If you don't like the fact that TATA owns Jaguar/Land Rover, you'll also be interested in knowing that it owns a South Korean car company called Daewoo which is the second largest heavy commercial vehicle manufacturer in South Korea.

TATA also owns Hispano Carrocera which is based in Zaragoza, Aragon, Spain which is one of the largest manufacturers of bus and coach cabins in Europe.

<comment><USER5> I failed to understand, why a giant like TATA keep acquiring all these bailed out companies

[http://www.eetimes.com/document.asp?doc_id=1122730](http://www.eetimes.com/document.asp?doc_id=1122730)

I know nothing about hispano carrocera (or whatever), if TATA can save these "bailed-out" brands, hope that's good for them.

<comment><USER4> If a company can save "bailed-out" brands that is a good thing isn't it? I don't see why you have a problem with that.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> Before any Southern Californians object, remember that almost all your clean water comes from snowmelt diverted through hundreds of miles of aqueducts. Draining lakes such as Owen's Lake to a dusty dry alkali bed.

Who are we to condemn India's actions? Let's just hope the project minimizes ecological impact.

<comment><USER7> > Who are we to condemn India's actions? Let's just hope the project minimizes > ecological impact.

I think Californians have every right to condemn this project. Not only have we experienced the benefits of huge water projects like this, but also the costs. The disruption of the delta (take note Bangladesh), Owens Lake that has been turned into stinging alkali sands, a Colorado river that rarely makes it to the sea, Hetch Hetchy, a beautiful valley in Yosemite that a century ago was sacrificed in order for San Francisco to have clean water (not a judgement call, the water in SF is fantastic, but there is a price..) and so on. Now we are gearing up to tunnel around the delta so Southern California can suck even more water out of the Sacramento and San Joaquin rivers; there will be an environmental price for that as well.

My concern with this project is that Bangladesh will get the short end of the stick. They already are in a difficult spot with the sea level rising, and, if a reduction in water flow also reduces the amount of silt reaching the delta there will be more subsidence and an already difficult problem will be made even worse.

</comment></comment><comment><USER8> Decades hence, the ensuing disasters will be considered inevitable. Of course there would have been bad science. Of course there would have been shoddy construction. Of course the scale of the project would have been matched only by the scale of corruption. Of course most stakeholders' interests would have been ignored. Of course it would have been more practical for people to move away from the desert than for the desert to be somehow reincarnated as habitable.

Looking forward, however, one can almost justify some measure of hope.

<comment><USER9> What won't be inevitable is whether those disasters are worse than what would have happened otherwise. People are already running out of drinking water! Contemporary western morals put the environment first at all costs, even ahead of human life. That's only a position you can take after your humans already have a good quality of life. Developing countries still need to improve on nature to help their people.

Would you instead like to return the Colorado river to its original course where it dumped most of its water into the sea, leaving desert all around it? Never have built all the many canals around the world? Just crammed all people into the few naturally fertile areas and left the rest as a giant eco-tourism park for the wealthy?

<comment><USER8> Like most people who know anything about the Colorado River, I do wish it were not depleted as it is now. I wish that wasteful subsidized alfalfa cultivation in Arizona would cease and therefore that dairy production would return to the Midwest where it sustainably belongs. I wish that the riverbed at the Gulf of California weren't dry every day of most years, and that native wildlife could recover. I wish that the cities of southern California and Arizona would try harder to live in a sustainable way.

With respect to TFA, I wish India-first commentators would realize that this project threatens hundreds of millions of Indians and Bangladeshis, a number that dwarfs former populations of the North American southwest.

</comment></comment></comment><comment><USER10> Inter-linking not diverting, BS western media!.

[https://en.wikipedia.org/wiki/Indian_Rivers_Inter- link](https://en.wikipedia.org/wiki/Indian_Rivers_Inter-link)

<comment><USER3> There's a set volume of water in these rivers. If you "interlink" the rivers, some of the water that would go to Bangladesh will go elsewhere, depriving downstream consumers of water they were expecting.

It's a dick move by India. Calling it something else does nothing to change that.

<comment><USER10> Dude, go through the wiki link once. Also we already have a water treaty with Bangladesh.

<comment><USER3> According to the wiki, Interlink has been deemed to be potentially beneficial to Nepal and Bangladesh assuming proper water management treaties are negotiated with those countries.

Please point me to these properly negotiated agreements.

And pointing to the existing water sharing agreement with Bangladesh is dishonest. Putting aside the fact that it only lasts for 30 years and makes no mention of Interlink, everyone agrees that the treaty is inadequate, as evidenced by the massive tracts of arable land in northern Bangladesh that have fallen out of cultivation over the last 40 years due excess salinity caused by poor flow out of the Farakka Barrage.

So yeah: dick move.

<comment><USER4> TREATY BETWEEN THE GOVERNMENT OF THE PEOPLE'S REPUBLIC OF BANGLADESH AND THE GOVERNMENT OF THE REPUBLIC OF INDIA ON SHARING OF THE GANGA / GANGES WATERS AT FARAKKA:

[http://www.jrcb.gov.bd/attachment/Gganges_Water_Sharing_trea...](http://www.jrcb.gov.bd/attachment/Gganges_Water_Sharing_treaty,1996.pdf)

<comment><USER3> As I said above: it's not in effect after 2026, and makes no mention of interlinking projects, and doesn't say anything about the Brahmaputra.

Given current events, it is a woefully inadequate guard against abuse.

<comment><USER4> Circumstances keep changing and treaties will be modified for the better. You can't reasonably expect treaties to exist forever? All treaties are meant to lapse and be replaced by better ones.

<comment><USER3> On matters of existential import (and riparian sustainability is definitely one of these for Bangladesh), I absolutely would expect to have in place a binding agreement in perpetuity.

This is _serious_ business for Bangladesh: without the rivers, the flooding they cause and fluvial sediment deposits that come with the floods, Bangladesh ceases to exist just as surely as if the sea swallowed the entire country.

<comment><USER4> > On matters of existential import (and riparian sustainability is definitely > one of these for Bangladesh), I absolutely would expect to have in place a > binding agreement in perpetuity.

Of course you can expect a lot of things. But expectations cannot be unrealistic. A binding agreement in perpetuity is impossible. None of us, India or Bangladesh, know or can predict the future. No treaty/agreement has ever been signed between any two countries in this World with an "in perpetuity" clause. You can always revisit treaties and improve upon it. If you consider India as a friendly neighbor you (i'm guessing you are from Bangladesh) should not distrust our ability to negotiate a good treaty.

> This is serious business for Bangladesh: without the rivers, the flooding > they cause and fluvial sediment deposits that come with the floods, > Bangladesh ceases to exist just as surely as if the sea swallowed the entire > country.

And India recognizes that. I have seen the documentary on eroding coastline of Bangladesh and it is of concern to Indians. If you don't believe me you can read my comment that I wrote 146 days ago regarding erosion of the Bangladeshi coastline: [https://news.ycombinator.com/item?id=10804361](https://news.ycombinator.com/item?id=10804361). We are more sensitive to our neighbors problems than our neighbors being sensitive to our problems. This is unfortunate reality.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> Water disputes are becoming increasingly common it seems, see [http://www.al- monitor.com/pulse/originals/2016/03/egypt-ethi...](http://www.al- monitor.com/pulse/originals/2016/03/egypt-ethiopia-renaissance-dam-water- storage-nile-dispute.html#)

<comment><USER12> This is actually something you can start war on, since people can not live very long without water.

The situation of India is critical: most water source are heavily poluted, the population is as big as China's, but China has way more space and invaded Tibet, securing the montains water.

Now add the following facts:

        - India has a class system generating a lot of social tensions, and it's getting worst as a small super rich class is booming.
        - A lot of different cultures and religions are mixed, sexual restrictions are still in place and they don't get along with some countries at their very border.
        - They got the nuclear weapon.

And you got a cocktail for a Michael Bay movie.

<comment><USER13> A cocktail without ice.

</comment></comment></comment><comment><USER14> Can't help but think about: [https://www.newscientist.com/article/dn4637-russia- reviving-...](https://www.newscientist.com/article/dn4637-russia-reviving- massive-river-diversion-plan/)

<comment><USER8> The 'stans seem to have backed the wrong horse in Luzhkov. Probably for the best, since it's difficult to imagine Russia completing a project of that size with recent oil prices.

</comment></comment><comment><USER15> Areas immediately around the Ganges are already experiencing drought because so much of the river's water is already used for irrigation.

Is North India and Bangladesh as screwed as this makes it sound?

<comment><USER5> yes, during the spring/early summer, on the bangladesh side, you can cross the ganges river on foot.

in the mid-monsoon, the river floods like crazy and washes away millions of settlements in a snap.

this has been going on like 40 years, just because of the farakka barrage, [https://en.wikipedia.org/wiki/Farakka_Barrage](https://en.wikipedia.org/wiki/Farakka_Barrage)

</comment></comment><comment><USER16> The next wars will be fought over water, not oil. We are already seeing pressure in India, heavily dammed China, SE Asia, not to mention smaller problems between the US and Mexico.

</comment><comment><USER17> Desalination is also being considered, though it is expensive. [http://timesofindia.indiatimes.com/city/aurangabad/Govt- mull...](http://timesofindia.indiatimes.com/city/aurangabad/Govt-mulls- desalination-plant-to-fight-regions-water-crisis/articleshow/51589150.cms)

There are some projects running in Chennai, currently.

</comment><comment><USER18> Now china should start diverting Brahmaputra river, or build more dams

[http://www.hindustantimes.com/world/china-s-largest-dam- in-t...](http://www.hindustantimes.com/world/china-s-largest-dam-in-tibet-on- brahmaputra-river-switched-on/story-NuZapXFhCSkHlCyRbXiRJK.html)

<comment><USER5> they have already started it, now it's time to see how india reacts.

</comment></comment><comment><USER19> What other alternatives exist for dealing with the issue of water shortage with 200 billion dollars?

How about desalination of sea water? Costs seem to be getting lower. What risks does this pose compared to inter linking of rivers?

</comment><comment><USER20> Reminds me of Soviet plans to divert Siberian rivers to the south (deserts in Kazakhstan etc.). It's quite wasteful that these rivers flow north, where nobody lives, when you think about it.

</comment><comment><USER21> Given how confusing the HN discussion is I can only imagine how misinformed the people who this actually affects are.

</comment><comment><USER22> "Hey lets divert 2 huge natural rivers, I bet there won't be any unforeseen consequences if you really really just put enough thought into it"

<comment><USER23> Diverting huge rivers is a project people have engaged in everywhere for multiple thousands of years. We do it because it's useful.

<comment><USER24> Killing someone for their possessions and meat has been done for thousands of years, and is useful.

</comment></comment></comment><comment><USER25> Why not Nationalize river waters?

</comment><comment><USER26> I am sure there is a perfect recipe book for solving fresh water problem for millions of people and animals that India is not following.

</comment><comment><USER27> The Law of Unforseen Consequences cannot be ignored and a full accounting of its costs will be paid.

This will not turn out well.

<comment><USER28> I'm not so pessimistic. While absolutely there could be problems I think of a similar Australian scheme that has been largely successful.

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

</comment></comment><comment><USER3> RIP Bangladesh.</comment>


How Al-Qaeda Uses Encryption Post-Snowden (Part 1) - <AUTHOR> https://www.recordedfuture.com/al-qaeda-encryption-technology-part-1/ <comment><USER2> al-qaeda uses encryption post-Snowden and so does the rest of the world. I opened an email account at protonmail.ch, Google is now ecrypting traffic between data centers, and many website use now HTTPS instead of HTTP.

So we can conclude that Snowden made the whole world aware of the fact that it is better to encrypt our messages.</comment>


Ask HN: Has this been made yet? - <AUTHOR>

After a bit of googling, I couldn't find a service that could help me find out if my friends were busy or not.  I have a few close friends that I talk with on a regular basis, but there are a lot of other people whom I still consider my friends that I don't.  I don't care about sharing my videos, pictures, and thoughts with them online; I would just like to meet up with them in the real world.  When I have free time, it would be nice to see who else is free.  Facebook would do a good job of this, but my "friends" mostly post up song lyrics or other clutter and a lot of them I hardly know. Is there any service out there that is something along the lines of:<p>-I'm bored/ have free time<p>-I sign on and click a button that says so<p>-It gives my location to my friends which can be found like how facebook does it<p>-I can see other friends who are bored and message them to hang out<p>-Other buttons like I'm free to chat/text<p>-(Maybe) a section I can go into that shows me other people reasonably close by that   a. Are free to hang out   b. Do in fact want to meet new friends<p>If it exists already, I'd love to know what it's called.  If it doesn't then it's a nice idea for a mobile app. <comment><USER2> Meta comment: Why create an account just to ask this?

Secondary comment: real time active/inactive status is a feature in pretty much most any chat protocol out there. You might make some headway with a variation on Lattitude where you can have phone identify 'I'm bored' places (like perhaps the couch in the den) and have it auto-change your status but other than that you would be hard pressed to get folks to actively turn on/off their available bit.

<comment><AUTHOR> Meta answer: I've been a long time reader and love how good the feedback is on most posts.

I'm not very concerned about the chat feature much at all. My problem is sending out "mass texts" and making many phone calls to find someone who is also free. I find myself waiting around a lot for people to respond to me and finding out most people are at work or busy elsewhere. If I could just load up an app on my phone and see that Mike is free for a few hours then I could get in contact with him and make plans.

<comment><USER2> Fair enough. You realize the 'nut' of this particular problem is capturing the 'free/busy' state. Capturing state requires a two things, a 'probe' (something which measures) and a 'policy' (something which looks at the measurements and produces a finding).

Fortunately, in your particular case, the challenge of creating a probe which can measure 'busyness' answers your question (which is effectively 'No' btw). Chat programs work because they limit the problem to 'are you currently in chat' and can probe for that but without instrumenting your friends you are stuck trying to infer their 'busyness', and many people that kind of probing is considered none of your 'business' (pun intended).

A limited (and its limited because it has to be proactive) conceptual idea is an app with a button that says 'bored' on your phone. When you press it, it would tell you how many of the friends you are 'following' have pressed that button in the last say 30 second, minute, or 10 minutes and offer to SMS that set. The downside is that it will not include folks who are doing something but they would rather be doing something else.

<comment><AUTHOR> I must have worded the question wrong to begin with but the button you were referring to was exactly my line of thinking.

Situation: I'm at home and feel like meeting up with a buddy of mine and am having this problem. I launch the app and click a button that says I'm bored and would like to meet up with one of these people I'm 'following'. This then bring up a list of the followers that are free as well and the SMS option would be available. I could then message them and possibly meet up with them.

This was just an idea I had come up with that could possibly solve this problem I'm having. I figured it would be worth sharing if someone was looking to build something like this. I was hoping somwthing like this existed already though because I believe I would use it a lot. I completely understand there's no magical program that can know you're definitely bored and would like to meet up with a friend hahaha.

<comment><USER2> Awesome, your next submission should be Show HN: This App I made over the weekend. :-)

You can build it with Corona [1] pretty easily, even if you haven't done much programming they have excellent tutorials. Then spin up either and AppEngine instance or EC2 instance to handle registration and its good to go. Do it for one of the Disrupt hackathons and maybe win a prize even.

[1] <http://www.anscamobile.com/>

<comment><AUTHOR> I'm downloading Corona as I write this and I'll give it my best shot! It might take a little more than a weekend but this might be the push I needed to really get into this game. Thank you!

</comment></comment></comment></comment></comment></comment><comment><USER3> Hahaha, this might be showing my age, but it sounds like AOL instant messenger...

Am I wrong? Back in the day we'd get home and check peoples status, chat to see if anyone was up to something, then get moving. Times were great!

<comment><USER4> Sounds exactly like just about every IM app.

It's pretty much how me and my friends use Google Talk. We all actively update our statuses on it quite regularly... "At work" or "Playing Forza, join if bored" etc.

Combined with the presence icons (Away, Busy, Available etc) it does the job well, eg can have text status as "At work" but be set to Available, or switch it to Away if in a meeting.

And of course you get a chat feature with it ;)

</comment></comment><comment><USER5> You could use a phone and just call. Old school I know but it works!

<comment><AUTHOR> Hahaha I know and I do but a lot of the time it takes 3 to 5 calls before someone answers and even then it's not a guarantee that they're free. I figured this could be a nice little short cut if it was out there. It seems like not too many others have a problem with this though so it might just be a specific problem for my area. My high school class only had about 110 kids.</comment></comment>


GNOME's plan to discourage portable Gtk apps - <AUTHOR> https://lwn.net/Articles/691131 <comment><USER3> I had a sour taste in my mouth when I read this, but I can sort of see it. It reminds me of Ubuntu's release pattern - 3 unstable releases then 1 stable release alternating. The only difference is that the major number changes for the first unstable release. (Makes sense. The point-oh release is unstable, the stable release has a big number on the end.)

I think the controversy is that, when I read this, I get the impression that GNOME devs either don't believe that backwards compatibility is possible in the long run, or that it's at least unpractical. I don't really get that impression given QT's backwards compatibility, MFC, etc, but if they really believe it, then faking it is unproductive, and just making a more distro-like release plan is reasonable.

I really can't get the distro comparison out of my head - it's like they tried a single release that lasted forever, and that didn't work, so they tried a rolling release, and that didn't work, so now they're going with unstable releases with LTS releases every 2 years.

<comment><USER4> I feel like they could have saved themselves an immense amount of pain in the comments if they'd just called the alpha releases ("4.0", "4.2", "4.4") like the are; they quack like a duck. Why is 4.0-alpha.1, 4.0-alpha.2, etc., so hard?

The average developer does not think "oh, 4.2; that's an alpha release", they think it's two iterations on 4.0.

<comment><USER5> This is important. In a release scheme where a new version is out regularly, you want to be able to easily point to specific, stable, old version by just saying "this has been available since GTK 27" instead of having to know that at the 27 major number, the stable version is 13, so you need that specific knowledge to be able to say "this has been available since GTK 27.13". The RC, alpha, beta releases are just steps towards the stable release, which is the only version that remains.

<comment><USER6> I was very much pushing for a single version number, but there was some hesitation to it. I'll try again when we discuss it next.

</comment></comment></comment></comment><comment><AUTHOR> Even though Gtk3 is still riddled with regressions compared to Gtk2, and there's no stable theme interface, and for example the Raleigh theme engine completely broke in 3.20, the GNOME devs seem to have decided to take it to the next level.

That means, unless I'm reading things wrong, this is the gist:

1\. API and ABI breakage twice a year

2\. Applications that have been linked for 4.2 on a system with 4.2 dev files installed will still run when the system gtk4 is 4.4. But you're not allowed to build a 4.2 app anymore once 4.4 is on the system. This means, the 4.2 .so can exist in parallel but not the development files. Those are allowed to exist for only one gtk4 release.

3\. (2) combined with (1) is a nice way to prevent adoption

Now, this may sound rude, but given the state of Gtk3 after 10 major releases and the overall way devs have dealt with the community, I must say I welcome this, because it can be a nice motivator for everyone that still believed in Gtk3 to look at Qt.

* Wireshark has a Qt frontend now

* wxWidgets has a Qt backend now (experimental for now)

* mkvtoolnix is Qt only now

* the list goes on

If anyone believes developers ported from Gtk2 to Qt for fun, please consider the effort it takes.

Yes, gtk2 has limitations, but there was ABI and API stability on all layers. Since gtk3, the development model seems to be inspired by web applications in that breakage is frequent and stability is mostly not guaranteed. It starts with drawing regressions and extends to a theming api which is unstable and therefore could also not exist, because each theme has to exist for each major gtk3 version.

Had Gtk3 only added Wayland and HiDPI support, and kept API stability for the most part, we wouldn't find ourselves in this unfortunate situations. Since, more than a few applications have migrated to Qt.

I don't like some of the things in Qt5 like the file selector, but that's a minor nuisance for avoiding gratuitous regressions.

I have to use Firefox ESR because the switch to Gtk3 broke too much in the UI (in addition to general non-existence of stable Gtk3 themes).

<comment><USER7> This is why I've resorted to looking for things based on Qt rather than Gtk. I cannot fathom what the Gnome team has for their "target" or "typical" user, I'm guessing it's some sort of unholy love child between MacGyver and a Brown Motie.

<comment><USER8> I recently learned that there is a continuation of KDE3 out there, called Trinity. Complete with a maintenance fork of Qt3. They seem to even having maintained the structuring of the KDE3 source releases, so that rolling ones own install quite straight forward. Its either that or give up on the DEs completely and adopt a WM (IceWM seems tempting).

</comment></comment></comment><comment><USER9> So this is an ass backwards way of saying that GTK releases are going to be in beta for 2 years and the real releases are going to be called gtk4.12 instead of gtk4

On one hand okay fine. On the other hand this is ass backwards: just admit you're doing beta releases.

<comment><USER10> No. What it seems like is that they want more flexibility while developing GNOME (6 month cycle as it is now), and provide some stability for outside users of GTK+ too (2 year cycle).

Beta releases are done within the regular 6 month cycle.

<comment><USER8> Then they should just fork GTK and be done with it. Or write a layer between GTK and Gnome, like there appears to be between KDE and Qt.

<comment><USER6> If GNOME forked GTK, there would no longer be a GTK.

<comment><USER8> I could have sworn GTK existed before Gnome. Surely it can exist after as well...

<comment><USER6> You are likely miss-remembering.

The extraction of the toolkit from GIMP was done as the early pioneering of GNOME. Before that, it wasn't really a toolkit. I mean, it was an in- application toolkit, but that is very different from a usable toolkit.

</comment></comment></comment></comment></comment></comment><comment><USER11> Editors, can you fix the title of this post to match what it links to: "Lortie: Gtk 4.0 is not Gtk 4".

The linked post is a rather confusingly written way of saying that Gtk 4.6 will have a stable ABI but that Gtk 4.0-4.5 won't (and thus shouldn't be used outside GNOME, if I understand it correctly).

</comment><comment><USER12> This makes it sound like there is no plan. Rather than coming up with a defined API first, then implementing it through normal alpha, beta, rcs. They are just going to start writing whatever code at gtk4 and the stable version wont be until something like gtk4.xx based on whatever they decided to write.

And after gtk4.xx is released, are bug fixes supposed to happen on the newly unstable gtk5? -- I'm so confused.

<comment><USER6> Considering this was half a day at our first hackfest of the season, I'm not surprised it doesn't sound fully fleshed out. Nor should it be this early. I'm mostly just surprised how much steam it's picked up on the commentary sites.

But that said, it's not that we don't have a plan. We have a very concrete plan in moving to a GL renderer, render trees, shader-based CSS drawing, and more. However, that necessarily means breaking the imperative drawing model that has us stuck in 1998.

So what are we to do?

Version numbers are just a thing. I think semantic versioning makes people put a little bit more confidence in what they are than its worth, but we did discuss this quite a bit.

We have a few options, some of which might be a "gtk-4-unstable.pc" pkg- config, or bumping soname more (but if we do that, why not bump the major number too), etc etc. We are all long term Free Software veterans maintaining long running ABI software projects. We are certainly thinking about the consequences of our choices from a developer, user, and distributor viewpoint.

<comment><USER13> _Version numbers are just a thing_

Yes, and they should mean something. Not having a fixed API/ABI for an entire major version goes against what everyone else thinks that version numbers mean. You can talk yourself into thinking that the numbers don't matter - <USER2> only the semantic versioning (whatever that is) matters. But that doesn't mean that everyone else will agree, let alone understand what the hell you're talking about.

<comment><USER6> The situation with 4.0 not being 4.x is most certainly the most contentious part of the discussion so far. It is also subject to change (it's only been a few hours so far of us discussing this).

That said, if we can't guarantee the minor versions as we drain the swamp to rebuild this toolkit into something modern, we either need to not release anything (which makes it very hard to build if you can't get users to test things) or we need to come up with alternate versioning schemes.

<comment><USER13> I was always a fan of the older linux model: x.1 = unstable, x.2 = stable, x.3 = unstable, x.4 = stable.

Really, the reason why this strikes a chord is that it is confusing as hell. What is the rationale behind not allowing a 4.2 project to be built once 4.4 is installed on the system? That is the truly confusing part. Are you expecting that many backwards incompatible changes between 4.2 and 4.4? Why do the headers and packages need to share the same namespace?

I'm sure a lot of thought went into this, but something just doesn't seem right to me...

</comment></comment></comment></comment></comment><comment><USER14> It sounds to me like they really just want to do more point releases. Perhaps they could simply make a GTK-dev or something rather than calling it 4.0 which isn't gtk4.

<comment><USER15> Yes. or GTK4-alpha-1 to 5 before that big 4.0 point release.

<comment><USER6> We considered doing something like x.y up to z.0. But that would require that developers bump their soname multiple times if we want them to port before the toolkit is considered long term stable. It's an awful lot of work to put on developers. We are trying to give them the best of both worlds, with the only variable being the time in which they chose to move.

</comment></comment></comment><comment><USER16> I already have gtk2, gtk3, qt4, qt5 installed on my linux machine, the situation which I really hope to get rid of. And now GNOME devs hope user to install gtk2, gtk3, gkt4, gkt5, gtk6 at the same time to solve imcompatibility. Nice try.

<comment><USER6> You could have a system that has broken software instead?

But seriously, giving multiple years between the major versions is a lot of time in between for applications to port forward (or they can choose the version they want to stay on) and enough time to stabilize features that take more than 6 months to write. Turns out writing whole new rendering engines takes some time and testing and can't be flipped on as fast as javascript frameworks materialize.

If applications want to stay on a stable version for 5 years or more, that all of a sudden becomes tenable which wasn't the case before unless you wanted to stick to gtk2, which is right out of 1998 "how to write a toolkit".

This isn't very different from other systems that bump the soname and have multiple versions based on what ABI, as required by the applications. I'm sure you have multiple of these on your system already. The reason soname isn't enough for GTK has to do with parallel installability of headers, bindings, etc etc

<comment><USER16> There is no guarantee that the good software you are using have someone maintaining it or interested in porting it, which is really common in open source word. For me they are Texmacs which only have bug fixes nowadays and a bunch of browser plugins whose producer are not willing in porting them.

The serious problem here is that, What this plan shows is a total lack of concern. Doing rolling release for a distribution is OK, but for a fundamental library this is unacceptable. Qt has been doing much better on this.

<comment><USER6> FWIW, Qt has been bumping major versions more often than us as well.

It really comes down to ensuring that developers are shipping a known quantity. They should be shipping with a set of libraries that were actually tested.

It's unreasonable to expect the toolkit authors to be able to test every possible permutation on every release unless people stand up to run build bots, automated testing, and report back to us when things break.

Keeping your Texmacs, for example, working in 5+ years time _is important to us_. That is why we want to give it a stable API that only gets bug fixes after a certain time frame. Is that such a bad idea? Would you really expect to magically get touch, HiDPI support, etc on a 5 year old application when you never changed your application code?

<comment><USER6> > For a fundamental library like this devs should at least keep core api > stable for a long time, and release unstable components seperately.

This is something we'd like to get to (say external widget libraries). But it requires, guess what, an ABI break :)

> As I have stated, I really don't like a large number of similar libraries > installed on my machine, each with a bunch o dependencies.

This is a long running "problem" on GNU/Linux. I've been around for a couple of decades and the problem has existed pretty much the entire time. We all have some holy grail of design in how we'd like the world to be and are disappointed it isn't what we think it should clearly be.

I'm not saying your viewpoint isn't valid, just that I'm not sure you can put the necessity to solve it on our shoulders.

<comment><USER6> > As a gentoo user I would say that the ABI break may still worth it if it can > enable a lot of application continuing to work with just a recompile, right?

Yes, just a recompile in all the cases we've really discussed. However, if we can break ABI in minor releases, we have contemplated the idea of installing private headers to allow developers to "do wtf they want" with a I_KNOW_WHAT_IM_DOING #define or something.

But the important thing, is to _test_ the software!

> The controversial around this plan origins from people's inability to > understand why such a fundamental library like gtk+ needs to have api break > for such a high frequency, which would have a huge impact on the experience > of app devs and users? The world has its intrinsic complications, but we all > hope to avoid the casual one.

That is the thing. We are a very small team of mostly part time contributors trying to build a toolkit that competes with the big players, who have teams the size of hundreds. There is a lot of work to do, with an insane cadence required.

I don't think this isn't really any different than choosing your target device version for say, iOS, Android, or macOS. They likely are likely breaking subtle things in-between major releases too, but you can either 1) lock to a version or 2) upgrade and fix-the-world.

<comment><USER16> > But the important thing, is to test the software!

Mandate the world to do test is not a good idea sine the philosophy of the world is to make it work.

>I don't think this isn't really any different than choosing your target device version for say, iOS, Android, or macOS.

No it's not. In case of device only a small bunch of things break. For gtk+ everything breaks without a fix.

<comment><USER6> > No it's not. In case of device only a small bunch of things break. For gtk+ > everything breaks without a fix.

That's because about every other year they have the equivalent of a major ABI break (and they you target explicitly the newer version or stay locked to the old version) and the platform ships both.

This is semantically what we will be providing.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> Editorializing in the title is discouraged.

<comment><AUTHOR> Suggestions welcome. I tried to title it more descriptively than the original LWN or blog subjects, but it seems I failed. Sorry.

<comment><USER18> "Gtk4 API will not be stable at Gtk4.0" or the original title would be better. 'Discouraging portable Gtk apps' isn't mentioned in the original article or LWN.

<comment><AUTHOR> Thanks. Your suggestion sounds correct to me.

</comment></comment></comment></comment><comment><USER19> Does anybody have any confidence in GTK over Qt at this point?..

<comment><USER20> I do. It seems to have far better versions of the main widgets I need, and far more opportunities for binding (GTKmm ftw). Plus, unlike many, I /like/ how my programs look the same on all platforms; screw having to test every pixel of detail on 3+ different native drawing APIs. These are just off the top of my head. Sure, I'm seeing the teething troubles of 3.20, but hey: I'm helping where I can, and I see it's getting better at a rapid rate. Qt on the other hand just doesn't grab me, both in capabilities and stylistically, though that might change, especially as they're starting to think about, y'know, actually being C++.

</comment></comment><comment><USER21> I don't see the big problem. Lots of other libraries already work this way. Perhaps most of them.

If you're shipping binary packages, you need to build them in a clean chrooted environment anyway (such as pbuilder/sbuilder/docker or a VM) or you're going to end up with binaries that depend on the latest glibc point release that happens to be installed on your system.

<comment><USER22> > depend on the latest glibc point release that happens to be installed on > your system.

glibc doesn't break API dramatically with each new version ... Gtk does and that's an insane burden put on developers using that thing. You can't develop stable tools with an ecosystem that keeps on breaking. Why should I bother with Gtk when I can learn a more stable GUI framework ? that's right, and I don't. Then the Gnome Foundation complains people aren't using Gtk ... I see a lot of Gnome projects started then abandoned, only to see a new project doing exactly the same thing being built from scratch afterwards. For instance, they are working on a new IDE Gnome builder, who the hell needs this when multiple projects like Gedit get very little contribution today ? To me the Gnome foundation is wasting money with all that stuff, while investing very little in the documentation for instance. Their website is a mess.

<comment><USER6> > I see a lot of Gnome projects started then abandoned, only to see a new > project doing exactly the same thing being built from scratch afterwards. > For instance, they are working on a new IDE Gnome builder, who the hell > needs this when multiple projects like Gedit get very little contribution > today ?

"They" → me

Like seriously, me. It's not the GNOME foundation. They've given me no money. I do get occasionally contributions from the same people that build Gedit. I also spent most of a decade contributing to another well known IDE for Mono. So this isn't my first rodeo.

A significantly amount of work I've done on Builder HAS flowed upstream into both GTK and Gedit, so clearly you have no clue what you're talking about.

> To me the Gnome foundation is wasting money with all that stuff, while > investing very little in the documentation for instance. Their website is a > mess.

Again, your money to the foundation has _never_ gone to Builder, but I also hope to have a large demo regarding documentation to show at GUADEC, should you choose to attend.

</comment></comment></comment><comment><USER23> Not a problem for NixOS!

<comment><USER8> Bingo. This seems tailor made for the also "Gnome" developed flatpak scheme...

<comment><AUTHOR> Just so I understand, would the ideal goal in that scenario be fat app packages or maybe even statically linked apps? If the API/ABI support scheme as blogged about is adopted, maybe that's the practical solution.

<comment><USER8> Their idea is for apps to depend on runtimes that in turn can exist in multiple versions.

Likely GTK would be house in the Gnome runtime, as afaik Flatpak has no concept of multiple runtime dependencies...

<comment><USER6> GNOME's runtime will certainly ship an up to date GTK.

However, there is nothing stopping someone from creating another runtime (or even doing a gtk.org runtime) that is more conservative in nature.

And if you use a compiler toolchain that does reproducible builds, you'll still get all the deduplication magic from OSTree.

<comment><USER6> > Am I wrong, or does this sound like GNOME's trying to be a more central > runtime and subsume parts of a linux distro in full.

I don't think so, but GNOME does have a long history of diving down the stack and fixing problems when we run into them in lower levels. Of course, fixing long standing bugs that are often depended on corner-cases is certainly going to require additional engineering (the current tmux/screen situation comes to mind).

These things are largely a thankless task, and often a hostile process. Everyone seems to want their bug fixed, and nobody elses.

We very much need everyone interested in our shared commons to come to the table and discusses their needs. Otherwise it's not a commons.

<comment><USER8> > I don't think so, but GNOME does have a long history of diving down the > stack and fixing problems when we run into them in lower levels.

And that may well be why we see a whole lot more controversy surrounding Gnome than KDE...

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> Pointless. Just add docker or vagrant or even chroot as a build step and be done with it.</comment>