Why I hate frameworks (2005) - <AUTHOR> http://discuss.joelonsoftware.com/default.asp?joel.3.219431 <comment><USER2> [http://web.archive.org/web/20180927070411/http://discuss.joe...](http://web.archive.org/web/20180927070411/http://discuss.joelonsoftware.com/default.asp?joel.3.219431)

</comment><comment><USER3> This article really clarified it for me when I first read it (along with another I can't find, about libraries & frameworks; all the ones I've googled are too recent to be right), and helped me realise that what I want to do is write code that calls, not code that is called. I want to own main().

As an aside, I really miss Joel on Software and the similar high-quality blogs which existed in the mid-2000s. It seems like Twitter, Facebook and Medium have sucked all the air, the life, the joy and the quality out of online presence and discussion. I know that there are still a few holdouts trying to keep things going, but … it seems to be a losing battle.

<comment><USER4> > _and helped me realise that what I want to do is write code that calls, not > code that is called. I want to own main()._

It took me a while to clarify this in my head, but I feel exactly what you wrote here - I want to own main(). A framework is something that calls your code. A library is something you call. I avoid frameworks whenever possible.

<comment><USER5> What about frameworks that let you keep main, but require to take over your build system? I admit I'm guilty of one of those as well [1], but only because I don't see a more simple solution in terms of usage.

[1] [https://github.com/muellermichel/Hybrid- Fortran](https://github.com/muellermichel/Hybrid-Fortran)

<comment><USER4> To me this looks closer to library than framework, by the virtue of augmenting your code instead of hijacking the control flow completely.

</comment></comment></comment></comment><comment><USER6> This stood the test of time. After ten years we still struggle with the same issue.

Of course now we have containers to store these factory factory factories. Which makes it easier to store and handle and now you can deploy the factory factory factory containers next to the resources held in containers as well so you don't have to pay for the shipping cost of the said resources. Of course the finished hammer, wood and everything else still has to be shipped to you.

And if that wasn't enough, we created a self-contained mini factory for your home, which takes the packaged hammer, nail and wood components and assembles them real time. Just for your convenience.

Of course this mini factory has to be assembled as well by your factory factory factory containers before it will be shipped to you.

See how easy it is?

</comment><comment><USER7> This is really a critique of J2EE. This was the dominant approach when Rails came out and helped make Rails so successful.

Making specific critiques of specific eco-systems is valid. E.g. Java back then was awful. JS right now is complex (though I think there is some great stuff in there). Making sweeping critiques of all frameworks is pretty stupid. Unless, of course, you build everything on an OS you wrote yourself in assembler. Frameworks are just a form of abstraction. Abstraction can be done well or poorly, but to make a blanket claim that abstraction is bad is to ignore the huge efficiency gains we've make from abstractions like operating systems, web browsers, HTTP servers, and so on, which are all frameworks of a kind.

<comment><USER8> Interesting you should mention this. I've really enjoyed and really hated programming over the course of the last 15+ years. A low point for me was Java, Spring, Struts, Struts 2, Wicket, Tiles, Hibernate, JPA, iBatis, Ant, Maven...

Interestingly, Rails (along with a few other really good technologies, such as django) came along and, with a loud crashing sound, swept everything off the table. It's been a lesson for me. First, have the conviction to keep doing things the "old" way if the new way seems to be a churning mess. Second, realize that things may not settle down, they may be completely swept aside instead.

This is how I feel about javascript for the moment. I actually don't think the churn will resolve. It's more of a feeling, so I can't blame anyone for dismissing the rest of what I have to say... but I just sense that, like the J2EE world, that something is going to sweep this all aside.

To go even further out on a limb, I believe that (buzzword alert) languages transpiled to isomorphic javascript will play a huge role in this.

I truly don't believe that because Javascript runs so well in the browser, and if you have to use javascript you may as well write the backend in javascript, means that languages like ruby and python are destined for legacy or niche status. It is immensely reasonable to prefer to code web apps in ruby or python. I think that the dominance of JS will be a temporary situation, and that various technologies that allow people to code for the web in a consistent, relatively simple, straightforward way, in languages that are not JS, is likely to emerge over the next 5 years.

I'm only keeping a toe dipped in the JS waters right now, because I really do need it for some things. But I've decided to drop out of the JS churn (I do recognize that for the next few years, there will be amazing opportunities for people who are willing and able to keep up with it). Just like I wish I'd had the conviction to stay out of the nuttiness of J2EE a decade ago, I'm trying hard to position myself so that I don't have to get swept up into the JS vortex.

<comment><USER9> > This is how I feel about javascript for the moment. I actually don't think > the churn will resolve.

I still hope we'll see large adoption of WebAssembly (or WebAsm, or something like that) and get actually good frameworks for creating pages, that actually integrates the frontend with backend (instead of just using the same language), interpreting our templates into something dynamic.

I hope in a few years we can start retiring JS like we are doing wit PHP now.

<comment><USER10> WebAssembly does seem to have a promising future, with the caveat that it needs to get traction beyond the web to really take off (which is the goal - [https://github.com/WebAssembly/design/issues/249#issuecommen...](https://github.com/WebAssembly/design/issues/249#issuecomment-119020064)).

<comment><USER9> It's an interesting goal, but I'll disagree on that "needs" part. It can be widely successful just by being some VM you cross-compile to when you want your code to run on a browser.

</comment></comment></comment></comment></comment><comment><USER11> Is this only a problem with Java frameworks? (The hammer-factory-building- factory talk leads me to believe that).

I stared learning Django a few years ago and have never looked back, it has increased my productivity loads. Admittedly its reasonably opinionated about the style of app you are building (but it covers the majority of apps and you don't need to use every part of the framework).

<comment><USER3> > Is this only a problem with Java frameworks?

No, but Java is notable for this problem. I think the root issue is that it is of course possible to write flexible software in Java, but in order to do so you must write all the dynamic bits in this static language, which ends up meaning that everything you write has to conform to an external statically–implemented-dynamism framework, and if you're going to have a framework then you might as well add to it, and … you end up with a standard Java app.

I haven't programmed in some of the cooler/reputed-to-be-better static languages like Haskell or the ML family (not beyond a few simple exercises, anyway), so I can't say to what extent they would suffer from this same problem if they enjoyed the same popularity.

I think that from the perspective of two decades on, Java turned out to have been a failure, not with respect to popularity but to quality. It turns out that it enabled mediocre software architects to spend great quantities of corporate money coming up with mediocre designs to be implemented by mediocre programmers, resulting in mediocre software and mediocre return on investment. That doesn't mean that it's impossible to write high-quality Java, just that that's not the norm: the entire Java ecosystem militates against quality, because quality is risk, and Java is not about risk: Java and Java-using organisations prefer predictable mediocrity to excellence. That's not even necessarily bad — sometimes predictable mediocrity is preferable to risk — but it's certainly not inspiring.

I too used to really like Django; I spent about six years using it for one project and another. Were I going to do Python web development again, I'd probably use Flask or Bottle, but Django definitely taught me a lot.

But I'd prefer not to do Python web development in the future.

<comment><USER12> I think part problem is also that many programmers tend to gravitate towards abstraction and reusable code before there is a clear need for it.

Just today I read about this project [https://github.com/primus/primus](https://github.com/primus/primus) and it's a point in case. A "universal wrapper for real-time frameworks" with the main benefit being "Effortless switching between real-time frameworks by changing one single line of code."

Because clearly, I often need to switch between WebSockets and BrowserChannel... or wait, do I?

<comment><USER13> The documentation is more lines than the actual code is. Essentially it provides a uniform interface to multiple socket libraries. Why you would need this... I have no idea

</comment></comment></comment></comment><comment><USER14> We build complicated software with simple tools where I work using Clojure. There's even a talk about Java:Powertools::Clojure:Handtools! [1]

[1] - [https://www.youtube.com/watch?v=ShEez0JkOFw](https://www.youtube.com/watch?v=ShEez0JkOFw)

</comment><comment><USER15> The whole killing girlfriend thing is not so cool. I would remove those pieces, they don't add much to the story.

<comment><USER16> Those parts detract from an otherwise clever story. Among the many reasons women might be uncomfortable in software -- dudes who joke about killing them.

<comment><USER17> Even the unspoken assumption that the reader is male (okay, or lesbian) and will furthermore chucklingly identify with having a bitch ex to kill with a hammer is gross.

</comment></comment></comment><comment><USER18> Interesting that this post seems to be dated right around when Rails was just getting popular and starting the "next-generation" web frameworks trend.

</comment><comment><USER19> Pretty funny but I think that the article is overcomplicating it. In reality, each framework is more like a toolbox; and each toolbox is suited for a specific range of jobs.

Building an app without a framework can sometimes feel like buying a nailgun and nails separately - It may be difficult to find the right kinds of nails which are compatible with that specific nailgun (if they exist at all)!

If you use a framework, you'll get the nailgun with compatible nails and a bunch of other related tools... You might not use all the tools from the toolbox, but at least all the tools work well with each other.

Of course, if you have to perform a double heart bypass surgery on someone and you come equipped with a carpenter's toolbox; the outcome will be disappointing... Regardless of how good a surgeon you are.

<comment><USER20> I think the article overcomplicating things a bit was a meta joke on the topic itself.

</comment></comment><comment><USER21> This article has been a pivotal point in my life. It was years ago when I read this that I started looking out "how to develop a webapp without a framework", my journey took me to Django, RoR, node and finally to Go.

I did learn on my own by reading a few books and countless videos about how to write a webapp without a framework. The result was that I wrote an introductory book for my own reference, the link is here.

[https://github.com/thewhitetulip/web-dev-golang-anti- textboo...](https://github.com/thewhitetulip/web-dev-golang-anti-textbook/)

I do not know the author, but I would like to thank him/her, it is because of their article that I went on to learn Go.

Thank You!!

</comment><comment><USER22> I first learned to code by following those lovely, magical Ruby on Rails videos back in the day.

A few years later I discovered Sinatra and felt liberated.

</comment><comment><USER23> After 11 years, I can say Why I hate frameworks and Why I love Go (www.golang.org) \o/

</comment><comment><USER24> sofaking right on, especially these days.

</comment><comment><USER25> Is anyone else bothered by the repeated, completely out of context reference to murdering women with a hammer?

<comment><USER26> I just assumed the author had split up with his girlfriend, she turned out to be insane (poisoned his cat, set fire to his car, accused him of all manner of unspeakable things, etc.), and he was still a bit sore about it.

<comment><USER27> Joel Spolsky is openly gay so I think it's just a dated joke

<comment><USER26> Sure, but the post is by some random guy on his forum.

</comment></comment></comment></comment><comment><USER28> Too bad building software isn't at all like building a spice rack unless you're taking about continually rebuilding a spice rack and replacing its components constantly till it turns into a house (as 99% of software is wont to do).

<comment><USER29> Maybe it should be more like building a spice rack instead of a house. The whole UNIX philosophy of simple programs that do one thing well was successful for a reason.

<comment><USER30> Or it would have been if the programs really were simple, and not a wild mix of itty bitty trivial doodads and monsters with a huge collection of switches for special cases and extra features, many of which were added and used by exactly one person, collected into non-standardised toolkits which differ significantly across every single variant, and often between versions of the same variant.

And if they really did one thing well. Which - not infrequently - they don't. (See also: critical bugs in ssh, etc.)

And if they didn't have unintuitive names that are impossible to guess.

UNIX isn't just not a spice rack, it's an entire industrial area of tool sheds, grouped with absolutely no foresight or consistency, and impossible to get around without expert assistance.

It kind of works if nine square miles of warehouses connected by bicycle paths with free paper maps of small disconnected areas is your idea of a fun thing. But it's a bit of a stretch to call it an unqualified success.</comment></comment></comment>


In a Life-or-Death Crisis, Humility Is Everything - <AUTHOR> https://www.wsj.com/articles/in-a-life-or-death-crisis-humility-is-everything-11564133402?mod=rsswn <comment><USER2> This is a weak article on an important subject. In the aviation community, there's much talk about "crew resource management".[1] This is about how to avoid disasters produced by overly authoritarian captains. There are at least four well known crashes like that.

There's an old tradition in the US Army that, when officers are discussing a course of action, the most junior officer speaks first. This is to avoid echoing the senior officer despite a big problem with the plan.[2] The Army routinely does an After Action Review after doing something, to go over what went right, what went wrong, and what needs to change. If you don't do that, you make the same mistake twice.

[1] [https://flightsafety.org/asw-article/what-happened-to- crew-r...](https://flightsafety.org/asw-article/what-happened-to-crew- resource-management/)

[2] [https://verasage.com/blog/after_action_review_the_army_way/](https://verasage.com/blog/after_action_review_the_army_way/)

<comment><USER3> NB: Versage.com is offline.

[https://web.archive.org/web/20151004225940/https://verasage....](https://web.archive.org/web/20151004225940/https://verasage.com/blog/after_action_review_the_army_way/)

</comment></comment><comment><USER4> It looks to me like the article doesn't clearly argue that humility is everything, but perhaps a fourth of everything:

> _Humility isn't a byproduct of heroism, it's a precondition. Modest people > achieve miracles under pressure because they're far more likely to possess > four major qualities that pay dividends in a crisis._

Which are enumerated: Expertise, Composure, Collaboration, Confidence.

Of these, the article discusses Collaboration in terms of humility, but not the other three.

For example, why would a ``modest'' person be ``far more likely to possess'' Confidence (``believing something so unequivocally that it becomes contagious'')?

<comment><USER5> Confidence based upon comparison to others does not result in modesty. Confidence based upon continual self-work via the search for an aesthetics of existence creates modesty and a necessary humility in order to go a piece of the way with other ways of being in order to sort out what works in each context.

</comment></comment><comment><USER6> The article does a poor job of explaining how truly incredibly the flight crew of United Airlines Flight 232 performed under crisis; I watched a talk[1] by Nickolas Means recently that goes deeper into the events of that day and the lessons learned. Wikipedia also has a good summary of the NTSB accident report[3].

1: [https://www.youtube.com/watch?v=099cHWSbAL8](https://www.youtube.com/watch?v=099cHWSbAL8)

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

3: [https://www.ntsb.gov/investigations/AccidentReports/Reports/...](https://www.ntsb.gov/investigations/AccidentReports/Reports/AAR-90-06.pdf)

</comment><comment><USER7> I think the connection between humility and ability to foster cooperation is undeniable. Blow hards with big egos can't successfully pull that off.

You might disagree with some of the framing, but there are undeniable lessons to be learned.

</comment><comment><USER8> The article extrapolates leadership traits from extreme and rare emergencies. In my experience these qualities work when error or poor team work will lead to death or harm of another person (say combat, trauma surgery, or aviation). They don't apply as well to business or politics.

<comment><USER9> I would add one important thing: it does not apply to business and politics when you want self serving or short term results. Otherwise, I would argue that it still applies. This is what Jim Collins found with his colleagues in research about exceptional CEOs, and put in book "Good to great"

</comment></comment><comment><USER10> Interesting ideas in that article but doesn't seem quite right. In case of Sullenberger, the transcript below tells a more complex story, he immediately took over control of the stricken aircraft, not a lot of humility here:

"15:27:07 HOT-1 after takeoff checklist complete. 15:27:10.4 HOT-1 birds. 15:27:11 HOT-2 whoa. 15:27:11.4 CAM [sound of thump/thud(s) followed by shuddering sound] 15:27:12 HOT-2 oh #. 15:27:13 HOT-1 oh yeah. 15:27:13 CAM [sound similar to decrease in engine noise/frequency begins] 15:27:14 HOT-2 uh oh. 15:27:15 HOT-1 we got one rol- both of 'em rolling back. 15:27:18 CAM [rumbling sound begins and continues until approximately 15:28:08] 15:27:18.5 HOT-1 ignition, start. 15:27:21.3 HOT-1 I'm starting the APU. 15:27:22.4 FWC [sound of single chime] 15:27:23.2 HOT-1 my aircraft. 15:27:24 HOT-2 your aircraft. 15:27:24.4 FWC [sound of single chime] 15:27:25 CAM [sound similar to electrical noise from engine igniters begins] 15:27:26.5 FWC priority left. [auto callout from the FWC. this occurs when the sidestick priority button is activated on the Captain's sidestick] " [https://www.tailstrike.com/150109.htm](https://www.tailstrike.com/150109.htm)

<comment><USER11> I don't get what that transcript is supposed to show. It's mostly "uh oh"'s and descriptions of sounds to me. Care to explain?

<comment><USER12> Not OC, but it seems like there was barely any communication at all until he decided to take control of the plane, and he just said "my aircraft" to ask for control.

</comment></comment></comment><comment><USER13> For every one of these examples, one could provide counterexamples: Gen Patton was anything but humble, and known for his flamboyance and show-boating. But he was the general the US military relied on during the battle of the bulge crisis during WW2. Gen. MacArthur was similarly not well known for humility.

<comment><USER14> This isn't math where one counter-example totally disproves a theorem. People are just 'far more likely' (as per the article's words) to have these traits and perform well under pressure for the best outcome.

<comment><USER13> Actually, not just one counter-example, there are several: Steve Jobs, Winston Churchill, Lee Iacocca - and many many others in Business, Politics or Military, weren't exactly paragons of modesty. On the contrary, they were often bombastic and very arrogant. But they all projected a sense of competence, self-confidence and calm and imbued their team with a sense of mission. I think this article makes some fallacious suppositions and arrives at some dubious conclusions IMHO.

<comment><USER15> I Recently read a biography of Churchhill and he was an interesting combination of humility and arrogance.

His success at leading England during the Second World War largely rested on learning from his numerous past failures. He knew enough at that point to surround himself with people who would stand up to him when he was wrong.

If you look into all the "great" leaders - folks you mentioned - you'll find plenty of instances where their arrogance led them astray.

Arrogance in and of itself is not what enabled those folks to facilitate great or important work.

Lastly, nobody does it alone.

</comment></comment></comment></comment><comment><USER16> The article is B.S., written by somebody shilling a book who wants to be as famous as the author of the checklists trope book.

All of the people interviewed denied being heroes, not because of humility, but because they had no choice but to press on and do the job they were paid to do.

</comment><comment><USER17> In retrospect I think it will be very obvious that the right decision was to never board a flying piece of aluminium in the first place. It leads to nothing of value.

</comment><comment><USER18> On average we do not have qualities or abilities that are superior to other people. Illusory superiority is a condition of cognitive bias whereby a person overestimates their own qualities and abilities, in relation to the same qualities and abilities of other persons; [https://en.wikipedia.org/wiki/List_of_cognitive_biases](https://en.wikipedia.org/wiki/List_of_cognitive_biases)

<comment><USER13> That's known as the Dunning-Kruger effect.

<comment><USER19> Stop mentioning this effect. Every time I see it I get a big headache. Maybe I'll write a userscript (some kind of monkey whatever lol) one of these days to regex replace lol.</comment></comment></comment>


Show HN: SaaS Vulnerability Scanner for Small Businesses - <AUTHOR> https://www.scannersec.com <comment><USER2> This is a _really_ crowded space - there are a _lot_ of small business offering 'managed' vulnerability scans, so you will struggle to differentiate yourself. Having said that, you seem to be a good job of differentiating yourself in a rather bad way from those other businesses:

Most other businesses tell you what vulnerability scanner(s) they use.

Most other businesses offer a free scan (or partial scan), so you can get an idea of what is provided.

Most other businesss show sample reports, so you can get an idea of what is provided.

Dammit, _every_ other business tells you _something_ useful about the product being offered, and absolutely tell you _who_ is offering it.

I'm sorry if this is all negative, but... come on?! This honestly looks like some chancer has thrown this up in their lunch break. There isn't even anything to tell me who 'ScannerSec' is - I seriously can't even tell if this is some kind of scam to extort HN users.

<comment><USER3> Wanna make more money? -- Drastically lower the cost, or even have a freemium model maybe the 1 post per month plan. Then have solutions for FIXING the vulnerabilities--esp for low-tech users like Wordpress users who don't know how to fix things themselves. -- Also having plugins for wordpress, etc... that scans from inside out could help as well.

<comment><AUTHOR> These are some really good suggestions... Thanks for your help.

</comment></comment></comment><comment><USER4> I doubt you rewrote a vulnerability scanner from scratch, since it takes years and a lot of efforts to do, so why don't you tell us a bit more about the technology behind it. Does it use ZAP? Arachni? W3AF? OpenVAS? SQLMap? All of them?

Also, I'd be careful about such claims:

> Our scans are secure and non-intrusive.

Because you never know what will happen in the backend when you hit that "GET /article/delete/1" endpoint while spidering the home page. Tons of poorly coded webapps have that kind of trap, and you should scan staging/test instances whenever possible to avoid dropping a production DB whenever you hit one of those.

<comment><AUTHOR> Hi. Indeed we did not write a vulnerability scanner from scratch. We run a few major vulnerability scanners like OpenVAS on the target website, configured in a way to be non-intrusive. We do not communicate on the exact tools that we launch and how we compile the results since this is our secret sauce ...

Fair point about the "GET /article/delete/1" issue, unfortunately a lot of SMB do not have staging/test instances ...

<comment><USER4> Your secret sauce is purely based on the hard work of open source developers. Pardon me if I don't support your obscurantism.

<comment><USER5> Granted OP is obscure but this is a very harsh assessment. Such comments can be hurtful to hear when you launch. Why not give some positive and constructive feedback?

</comment></comment></comment></comment><comment><USER6> Literally no information to judge whether this service is competent or not...

As a security expert myself, I mostly have recommended tinfoilsecurity.com and tenable.io to the small businesses I consult with. In cases where you want more than simple web application scanning, CyberGRX.com tries to accumulate a more holistic picture of the security practices of your company.

<comment><USER7> Hell, skip competent for a moment. There's no information to judge whether this service isn't just a way to gain access to website backends in the guise of scanning.

<comment><USER8> I'd say there's not anything to even judge if it's not just a way to charge a credit card. Picking a plan asks for a web address (which isn't validated in any way, you can type a single letter), and then it shows what looks like a Stripe CC popup (which probably signs a user up for recurring billing on stripe). Nothing about a login, email or password (I can ASSUME that's after a card is entered, but who knows..). I would never use something like this in its current state.

</comment></comment></comment><comment><USER9> Initial thoughts:

1\. First heading text past the title bar has a typo. Yes, this matters. If you can't even get a second look at your website copy, did you get a second look at your product? 2. The domain was registered a month ago. 3. Like others mentioned, absolutely zero product information, and no information about whether they support the many industry standards that small businesses might actually need a security scanner for (are they wasting their money?). 4. The root domain only hosts http and not https, and the www site hosts both http and https, and none seem to advertise HTTP security headers. Considering this is a security product that takes your money: wtf? 5. The IPs used to host the site do not have reverse records. Again, wtf. 6. Leaks version and OS information of their DigitalOcean droplet.

Honestly, just paying a kid in high school the $20 to run Nmap and a webapp vuln scanner on your site might be a better investment.

</comment><comment><USER10> No info whatsoever.

What kind of scans are you running? What kind of data can I expect from the report? Is it port scanning or CVE based stuff?

<comment><AUTHOR> Hi. I'm the founder of ScannerSec. We run Vunlerabilty scanners : Infrastructure and Web applications. It starts with a port scan, and then it tries to detect vunlerabilities ( CVE and others). It is like as a simplified version of Nessus or OpenVAS.

<comment><USER2> > It is like as a simplified version of Nessus or OpenVAS

Do you mean you've written your own scanners (a rather large task), or that you're using Nessus and OpenVAS and your service provides simplified access to these?

<comment><AUTHOR> We aggregate data from multiple web vulnerability scanners, and provide a unified and simplified report about the vulnerabilities detected.

</comment></comment></comment></comment><comment><USER11> Its not clear where all the negativity is coming from. This is a great idea. Open source tools are hard to work with but powerful. If you can bottle it and automate it and sell it, good for you. It's absolutley worth something, not sure that's 20 bucks a month but i would keep tweaking til you get there. Good luck.

</comment><comment><USER12> IMO, just saying _vulnerability scanner_ is not enough. A sample report would help understand the service better.

<comment><AUTHOR> Thanks for the suggestion. We will try to fix that soon...

</comment></comment><comment><USER13> Front page <h1> typo: "Find out if your website is protected again Hackers"

You probably mean "against".

<comment><AUTHOR> Thanks! I fixed it.

</comment></comment><comment><USER5> I would love to see a sample vulnerability report.

Also, why is this flagged?

<comment><USER2> I assume it got flagged because it looks scammy at best. This is a one-page site with practically no information offered about the service supposedly being provided, no information at all about the company behind it, and the signup button takes you straight to a card payment popup. Honestly, I find it difficult to believe this is a real attempt at a launch.

It's quite common when someone posts something to 'Show HN' for some of the more affluent member of this community to sign up just to see if it works; perhaps the flaggers feel this website has been set up to take advantage of this.

<comment><AUTHOR> I assure you this is a real launch... This is indeed a one page website, but the service we provide requires only that for the moment. Once the user subscribe, he will start receiving the scan reports on his mail box...

<comment><USER2> Try to look at it from a user's perspective: no information about product or provider, just a few words and a card payment form. Have you, or would you, ever provide your card details in such circumstances?

<comment><AUTHOR> I understand your concern. And clearly we should have communicated better, but having the link flagged while it is on the HN homepage for our launch seems a little bit excessive.</comment></comment></comment></comment></comment>


Interesting story: Copyright, Fair Use, And Hotlinking - <AUTHOR> http://www.ninjamatics.com/weblog/2011/2/23/copyright-fair-usefair-dealing-and-hotlinking-what-you-need.html

<comment><AUTHOR> Plus, check out the offender/douche's nasty legal threats about 12 comments down.</comment>


How Turkey Purged Its Intellectuals - <AUTHOR> https://www.nytimes.com/2019/07/24/magazine/the-era-of-people-like-you-is-over-how-turkey-purged-its-intellectuals.html <comment><USER2> All: please don't post unsubstantive comments or ideological flamebait in this thread or any other HN thread.

Please do follow the site guidelines. They include " _Comments should get more thoughtful and substantive, not less, as a topic gets more divisive._ "

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

</comment><comment><USER3> Turkey's GDP peaked at $950 billion in 2013, just before Erdogan became president. By 2017, it had slid to $850 billion, and after the intellectual purges, slid to just $766 billion in 2018. [1]

People may argue from ideology for or against politics like these, but I can think of no clearer indication of these policies' failure than the impoverishing of a country.

[1]: [https://tradingeconomics.com/turkey/gdp](https://tradingeconomics.com/turkey/gdp)

<comment><USER4> GDP is not a north star metric. GDP in the US is high and we have more suicides than ever.

Many authoritarian (or especially populist) governments KNOW they will lower the GDP because by limiting low-wage labor immigration or focusing on nurturing a native culture or preserving the environment and not buying into a soulless consumerism/globalization they are creating a GDP cap.

 _" growth for the sake of growth is the ideology of the cancer cell"_ \--edward abbey

(I don't know anything about what's happening in Turkey, I just don't believe in GDP as a metric to chase)

<comment><USER5> I'd like some kind of standard metric that adjusts gdp to spending power on food, housing etc, and weights based on standard deviation amongst the populace (lower being better).

Unadjusted gdp seems like an entirely pointless metric when as you point out you can look at places like the USA where despite having high gdp there's still widespread poverty.

<comment><USER6> The metric you are looking for is Purchasing Power Parity - [https://en.wikipedia.org/wiki/Purchasing_power_parity](https://en.wikipedia.org/wiki/Purchasing_power_parity)

<comment><USER7> And also the Big Mac Index.

[https://www.economist.com/news/2019/07/10/the-big-mac- index](https://www.economist.com/news/2019/07/10/the-big-mac-index)

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

</comment></comment></comment></comment></comment><comment><USER8> It's disturbing this produced a sort of flame war.

In the not-so-distant-past, a dictator purging academics would be clearly and universally acknowledged as bad.

Somehow it's now twisted around to claim that critics of _supporters_ of a regime are actually the real "oppressors".

Interesting times.

<comment><USER9> > _In the not-so-distant-past, a dictator purging academics would be clearly > and universally acknowledged as bad._

Honestly, I'm not so sure that's true. That's still a consensus view for people without a stake in what's happening, and it never has been clear and universal for those close to the topic. (Who, as here, generally accept the principle but reject the accuracy of both 'dictator' and 'purge'.)

It's not hard to find people, even in the US, who in their own time excused (or praised) each of fascist crackdowns on historians, Soviet enforcement of Lysenkoism, Pinochet's 'disappearing' of artists, Maoist 'reeducation', or even the Khmer Rouge's outright mass murder of educated people. Mostly, those purges have only been near-universally reviled in hindsight.

<comment><USER8> You are correct, unfortunately. There must always be a contingent that supports the autocrat or else he would not be in power. "universal" is indeed too broad a term.

And indeed, in the US there were things like the Madison Square pro-nazi rally in 1939. And just as there were pro-democracy denunciations of Pinochet that Nixon et co ignored, so too today there is denunciation of appalling autocratic behavior that will be ignored and will need to be watered down to justify to the public. Perhaps in the past too there were arguments of the form "thousands of political firings do not constitute a purge because the New York Times is X"

I am accustomed to solution oriented discussions on these topics. So while interesting from an anthropological point of view, defense and praise of autocratic behavior is a breaking distraction from finding solutions.

</comment></comment></comment><comment><USER10> We had something like this in 1968 in Poland with communist propaganda condemning intelectuals and cosmpolitans and workers activists beating students on the streets (like they do in HK these days).

Sztoptanski called that Dictatorship of Dishrags. Generally the best weapon against such times is irony and a sense of humor and grotesque.

[https://en.m.wikipedia.org/wiki/Janusz_Szpota%C5%84ski](https://en.m.wikipedia.org/wiki/Janusz_Szpota%C5%84ski)

<comment><USER11> After reading that article, I'm happy for the polish to live in a better state now, and I immediately started to think where people are now oppressed by their government whenever they are deemed 'harmful to the nation', and China came to my mind, and not just for the Chinese state cooperating with the organized crimes triads to attack protesters in Hong Kong. The situation there is different for now, because China is economically developing, so that may stabilize the government, but eventually China will get rid of its oppressive regime. I wonder when and how.

<comment><USER12> We weren't really oppressed by our government. The March events, as they're know here, were mostly homegrown commies pushing out the Jewish wing of the party with decent people getting caught in the purge and following protests.

But it was all happening with two hundred thousand Soviet soldiers stationed in the country. The communist government wouldn't have lasted a month without the Soviet support. The situation is different because China is not being occupied by a foreign power. Neither is Turkey.

<comment><USER11> Given that history, are there common opinions and feelings in Poland regarding Russias ongoing war with Ukraine?

<comment><USER12> I don't know anyone who would support Russia in that conflict but Ukraine itself isn't very popular with many due to unresolved Volhynia massacres[1]. Mostly though people just don't care about a low intensity war that feels far away (even if it isn't).

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

</comment></comment></comment></comment></comment><comment><USER13> The USA is purging intellectuals as well through outrage culture, online mobs, and the weaponization of political correctness. Both the far right and far left do it routinely to their advantage, they both seem to think the ends justify the means. Whoever has the loudest megaphone and can effectively stir up a sufficiently large outrage mob is the winner. Facts do not matter, evidence can be deemed "offensive" and is immediately discarded, there is no room for nuance, opinions must conform to group-think, and attempts at humor is often the worst offense of all. Anything can and will be taken out of context. Their intention is to harm, destroy, cleanse the culture and ideology into acceptable thought. Careers are ruined, achievements are discarded, lives are destroyed, names are slandered.

That this type of behavior has been recently normalized, encouraged, and incentivized by both the far right and far left in the USA is a very disturbing trend. Historically this has never worked out well, so let's hope it all stops sooner than later.

<comment><USER14> Do you have any sources for this purge of US intelectuals?

<comment><USER15> A Harvard Law Professor was forced to step down due students feeling "Unsafe" over clients he was representing in court. There are many similar examples like this: [https://www.nytimes.com/2019/06/24/opinion/harvard-ronald- su...](https://www.nytimes.com/2019/06/24/opinion/harvard-ronald- sullivan.html)

<comment><USER16> You're misunderstanding the story. He was made to step down from a particular post he held, and I'm not saying that's okay, but he's still a Harvard Law professor and there was never any prospect he wouldn't be.

</comment></comment></comment></comment><comment><USER17> It begins with experts being blamed by politicians for daring to know things incompatible with a particular world view. When opinion gets more important than fact, democracy becomes populism and in the limit, authoritarianism.

<comment><USER18> I think that distinct groups of Americans feel this way about both the Democratic Party supporters and the Republican Party supporters.

<comment><USER17> i'm not from the US nor live there so can't really say :)

</comment></comment></comment><comment><USER7> Same thing has happened in Hungary

[https://www.theatlantic.com/magazine/archive/2019/06/george-...](https://www.theatlantic.com/magazine/archive/2019/06/george- soros-viktor-orban-ceu/588070/)

<comment><USER19> Amazing how a billionaire funding an institution with a self-admitted propaganda purpose is 'democracy', while elected officials trying to limit the influence of foreign capital is 'authoritarian'.

By that logic, limiting the influence of [https://en.wikipedia.org/wiki/Confucius_Institute](https://en.wikipedia.org/wiki/Confucius_Institute) is also anti-democratic.

<comment><USER20> It is quite amazing that different situations are different.

<comment><USER19> This reads like a dismissal, yet refutes none of my observations.

</comment></comment></comment></comment><comment><USER21> In Cambodia, you could get killed for wearing glasses. Their purge of intellectuals was extreme - and that's just 45 years ago.

Not saying that every pseudo-dictator is going to end up like pol pot, but it's good to see the warning flags.

</comment><comment><USER22> Istanbul these days is a tragedy, at least it feels like it.

One of the three greatest cities in human history, and so many signs of "almost making it back". But now, everything has the stench of moving into the wrong direction. Seriously, you can feel it in the people, the shops, the buildings.

It makes me really sad never to have been there in its prime.

Turkey was never not a troubled country, but Turkish friends tell me Erdogan has sucked the optimism out of the intellectuals and academics that prevailed in years prior. What is left now is the typical Turkish melancholic nostalgia. It seeps through the streets of the city nowadays.

Tragic.

<comment><USER19> > It makes me really sad never to have been there in its prime.

Narrowly missed it by ~six centuries: [https://en.wikipedia.org/wiki/Fall_of_Constantinople](https://en.wikipedia.org/wiki/Fall_of_Constantinople) :)

</comment></comment><comment><USER23> The takeaway for those in the US: To detect nascent authoritarianism, look at who in particular is getting persecuted in academia. Another good heuristic: Look at who's over-serious and who is best wielding ridicule.

<comment><USER24> Just come out and say what you mean instead of slimy implications. It's obvious you believe in the false narrative that conservatives are somehow being "persecuted" in academia. This is a disengenous lie spread by right wing propaganda networks like fox news from a few cherry-picked examples. And even if it were true, people disagreeing with your position and calling you out on it is not "persecution."

<comment><USER25> Andy Ngo, an independent journalist, almost losing his life is hardly a cherry-picked example.

<comment><USER24> WTF does Andy Ngo have to do with "persecution" in academia? Is Any Ngo an academic?

</comment></comment></comment></comment><comment><USER26> The modern turkish state has been suppressing various kinds of intellectuals since its foundations via forced secularism

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

what has happened is a shift in who is being suppressed, rather than the ab- initio creation of suppression. This is hinted at but not actually elucidated in the article:

        This measure was both practical and symbolic:
        The decaying Ottoman Empire had given way to a
        rebellious new nation that required statesmen (like
        himself) who were dedicated to secularism, modernity
        and nationalism.

AKA _required_ actually means _required_ here, not just 'required in some sort of abstract sense of fitting in with the zeitgeist'

the omission is unsurprising, since previous suppression fits secularist editorial bias of NYT, whereas current suppression does not.

this is neither to say that I am in favor of either, nor that there was/was not intellectual freedom under ottoman times.

</comment><comment><USER27> The, purge, the loss of jobs, the continuous state of emergency, all terrible ideas. However, painting everyone affected as "intellectual"s is going a bit too far. Although many innocent people got hurt, a lot of them were nur cult members. They believe said nursi was a prophet. They took over the education industry to spread their dogmas. Everyone in Turkey knew that and turned a blind eye because they were harmless.

</comment><comment><USER28> I don't really know what is so special about the school which they decided to base the entire article on. This is just a small sample of the ongoing intellectual purge in Turkey. Every university rector is appointed by Erdogan, most professors in STEM, if they haven't fled, avoid any kind of political stance to continue teaching with the hopes of raising intellectuals who will help save the country. This is the university side of the situation, most of the successful students leave the country as soon as they graduate. This migration is on a scale that is record high in countries history, according to some unofficial numbers more than 300.000 young and smart individuals leave the country every year.

And I have a problem with this story about its portrayal of Turk-Kurd relation. Turkey is an extension of a multi-national empire. For most people living there, Turkish is not an ethnicity. Most of Kurds, Armenians, Greeks, and more identify themselves as Turks. Portraying Demirtas as a charismatic Kurdish rights activist that wants to unite everyone with peace is despicable journalism. Demirtas is a proud terrorist supporter, he has stated his love and respect for Abdullah Ocalan repeatedly. Abdullah Ocalan is/was the leader of P.K.K., a group that is seen as a terrorist organization by every major intelligence agency of world, he is responsible for the murders of tens of thousands of innocent men, women, children.

<comment><USER29> Turkey is an extension of a multi-national empire which had extreme levels of animosity between its nations, people who identified as non-turks were severely penalized in the past, and to this day allegations of having a non Turk grandparent is something that can be used against politicians. Armenian is still considered an offensive word in Turkey, (as is Turk in Armenia), so portraying Turkey as an idyllic multi-national country is self-deception. Everyone can agree that killing people should be condemned, but it is important to remember that the terrorism of P.K.K. is more similar to American revolution against Britain than to the Al-qaeda terrorism, and it have arised not because some Kurds are despicable people but because there are real unsolved problems still present in Turkey.

<comment><USER30> I dont really understand why people are making concrete assumptions about a terrorist organization without living in the country. Terrorism of PKK cannot be comparable to American revolution. You never lived in Turkey and you dont know the culture there. Turkey and US have completely different cultural basis and you cant just show up and making assumptions like these. I mean of course you can, from my point of view it is just funny.

<comment><USER29> If you want examples closer to Turkey take Greek War of Independence, or forces fighting for liberation of Bulgaria, or northern Ireland. I have not lived in Turkey but my grandparents did, and i know some people who do live in Turkey. Of course i do not support terrorism, but PKK exists largely because unfair laws, untold stories, and ethnic hatred existing in Turkey. The only way to really win the fight with PKK is not force, but free speech and human rights.

If you could tell your perspective on the issue, of why what i say is baseless and funny, I would be grateful.

<comment><USER30> PKK killed a Turkish Diplomat in Northern Iraq last week [0]. You can't really explain this by lack of free speech or human rights. There are many cases like this in Turkey's history where innocent people get assassinated by some cowards.

[0]: [https://www.independent.co.uk/news/world/middle-east/iraq- sh...](https://www.independent.co.uk/news/world/middle-east/iraq-shooting- today-turkey-diplomats-irbil-kurdish-middle-east-a9008441.html)

<comment><USER29> That is horrible, but a supporter of PKK would reply that Turkish army have killed and displaced Kurds in Afrin. War is an ugly thing, and everyone involved loses from it. The way free speech and human rights can help, is the same way it helped with conflicts in Europe. The country where speaking in kurdish can get an MP sentenced to 15 years for "separatist speech", [https://en.wikipedia.org/wiki/Human_rights_of_Kurdish_people...](https://en.wikipedia.org/wiki/Human_rights_of_Kurdish_people_in_Turkey), where there is a law for "insulting Turkishness" used against people like Taner Akçam, is deeply ill, and that illness is the cause of PKK.

<comment><USER30> I agree to disagree. There are many ways to reach the ultimate reality. Unfortunalty, yours looks a bit flawed.

<comment><USER29> Could you please tell with what exactly you disagree.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER31> My favorite concept right now is the "meritocracy of ideas" - a fancy way of saying that the best ideas win. Somehow I feel that this is a core driver for success, in an organization, small or big. So by excluding smart people and their ideas you may significantly limit yourself and the futures your organization.

<comment><USER32> How do you define meritocracy? Ideas are infectious and they clearly do not need truthful or academic merit to spread like wildfire.

<comment><USER33> Tautalogically, in the same sham way that we generally define meritocracy.

"These ideas won, because, clearly, they are the best."

"These people are successful, because, clearly, they are the best."

<comment><USER34> This is insightful. The other part is that some ideas matter and most don't.

</comment></comment></comment></comment><comment><USER35> we are hoping when erdo gone we can recover as intellectuals are still out there. clock is ticking for him.

but most terrifying thing is rising popularity of the populist leaders in the west.

</comment><comment><USER36> As somebody who grew up in a central european province governed by popularist right wingers and then left, this was a question that always bugged me: If I am leaving, am I not making it worse there? But should I really go through unbearable suffering in an environment that is so corrupt, so completely devoid of rationality that the only few semi-okay people you know start acting like trauma victims, never just able to cope with the environment they live in.

I can't blame anybody who fled in such a climate, especially in a nation which has it's unprocessed genocides not to far in the past. The border between what we call civilization and pure, stupid, evil fascism is extremely thin and given the right conditions the transition can be so incredibly fast, when the public starts to realize, it will be too late.

<comment><USER34> Depends on your philosophy. You could effect greater change outside the country for example. Or you could stay inside and create a revolution. I think the creative difference would be your resources and network.

</comment></comment><comment><USER37> Not true how substantiated this is, but I heard one of the reasons for moving Turkey away from the traditional script is to make it so people can't read texts about the Armenian genocide. Truly chilling stuff :(

</comment><comment><USER38> "People have had enough of experts" \- Michael Gove

God help us

<comment><USER39> Many experts are just preachers in different attire. Honestly, should we really listen to scientist who gets labeled experts based non replicable studies? The problem is that all of them gets the same doctors titles but only some of them are doing honest research, and our current society has no good way to deal with this. As a result laymen notice that significant parts of science is pure bullshit, no wonder there are trust issues!

<comment><USER38> Really? The point michael gove was making, if you're not aware, was to try and shun any _attempt_ at "expert"-ing.

Within the context of Brexit, the leavers had their own group of "experts" i.e. the ERG but any attempt at economic prediction was clearly shunned on the grounds of it being "Project Fear" despite no specific biases being demonstrated. Because that's the only way, along with blatant lies, to get people believe that leaving the largest trading block - possibly even with no replacement deal with anyone - could possibly be a good thing (At all costs being the current mantra i.e. No Deal)

It's not the lack of listening to certain experts that bothers me, it's them clearing playing the card. Gove, and most of the others on the leave side, is very well educated and damn well knows that careful thought ("expert"ism) is important.

<comment><USER40> As it looked for a foreigner, reading almost exclusively mainstream media, when I happened to come by, not only were not pro-staying experts shunned, rather I was stunned for the outcome, because I never heard anything pro- leaving, or any expectation it would end this way. Surely Brexit guys mean it not like Erdogan (i.e. jail time), but more like "if media don't serve as a feedback channel, both voters and elites could as well turn tvs off"?

It's very interesting to me, cause I observe experts in expertise everywhere in Russian media, and have been feeling lately, that they'll close themselves in no time, if they proceed that way, or turn into buzzfeeds.

</comment></comment></comment></comment><comment><USER41> HN is the only place I've seen people outright defending the PRC's human rights abuses. Something about HN really brings out the ultra-nationalists.

<comment><USER7> Over the past few years, it seems to me, that HN is suffering a bit from the eternal september effect. It seems (again, to me) that many HN commentators are very technically knowledgeable, but are sorely lacking in understanding politics, social sciences, liberal arts, etc.

It also seems (again, to me) that there has been a lot more authoritarian beliefs expressed by the comments. Take my opinion and observations for what you will.

<comment><USER42> In my experience, it's usually the people who've been here for long that tend to express views differing from what we're all supposed to believe. So maybe it's a reverse eternal September? Maybe it's a reflection of a growing disillusionment with geopolitics and its reporting in western media?

I mean, the story looks pretty damning on the face of it, but you have to consider that the last time the same media called a ruler a "bad guy" and people acted on it, it ended up completely wrecking a perfectly fine nation (Libya). Some time before that, the US wrecked another nation (Iraq), justifying it by fabricated stories people bought into at the time. I think you can excuse people for their lack of trust.

<comment><USER8> There is zero possibility that anything like that will happened to Turkey just as there is zero possibility of that happening to Saudi Arabia for their journalist murdering. The current rulership of the US (and Poland for that mater) actively dislike academia and the free press.

Also, the US will need to use Turkey for whatever it plans to do to Iran. So if anything, revealing Erdogan's atrocities is annoying to the current leadership not helping.

> what we're all supposed to believe...growing disillusionment with > geopolitics and its reporting in western media

Since we're talking about the NYT, I must say that at this time the US is overwhelmingly controlled by a party that condemns the media and its own free press as a lying enemy of the people. This is why the hated there grew enormously in the last few years. I understand there are similar forces in several other nations.

</comment></comment></comment></comment><comment><USER43> The era of fascists like Erdogan will come to an end as well.

<comment><USER44> Sadly, not as long as human brains are made of meat.

<comment><USER45> More 'made using primate genes.' There are many perfectly good brains that could be made out of meat, they just need to have certain bits about social hierarchy from our primate past removed or tweaked.

</comment></comment></comment><comment><USER46> Intellectuals should stop sharing their knowledge/skills with obscurantists. They should allow obscurantists to fail or at least to make obscurantists to depend on intellectuals. The motto should be "first control then money gaining or sharing"

<comment><USER47> Well in places where the intellectuals are fleeing, that's basically what they're doing, no? They're not trying to control the money exactly, but they are ceasing to share their skills with the rest of the people in that country, and removing themselves from its economy.

<comment><USER46> I don't think it is right. They harm their selves much more than its country. Dictator will easily buy their replacement from free world when needed. The problem is that intellectuals could be bought and sold because there are no contract commitments on how to use the knowledge. You are even free to use your knowledge against your teacher to make him to leave the country.

<comment><USER47> What? I have almost no idea what you're trying to say here. Are you saying that intellectuals should be forced to stay in their countries with dictators? I guess you're a big fan of East Germany and North Korea, huh?

</comment></comment></comment></comment><comment><USER15> So firing 6,000 academics and restructuring and a single major university counts as a purge? I mean a great many places are laying off professors with Liberal Arts Degrees many more than 6,000. In modern day the focus is shifting away from those careers. Even if that is a bad thing it is still the truth of the matter. This just seems like its trying to push a ham-fisted narrative. I'm no fan of Erdogan but this seems like textbook attempt at Yellow Journalism.

<comment><USER48> At least 100 000 people lost their jobs. 6000 is only the number of academics. We are talking about Stanford/MIT grad, >40 h-index young academics (at least in science which is not the focus of the article)

Some of these high-achieving people couldn't even leave the country even though there were a lot of positions waiting for them. Some people tried to go to Greece on boats which many of them died on the way.

<comment><USER47> It sounds like someone needs to organize some good, seaworthy boats to come pick these people up and take them someplace better, and help them get set up. After all, if they're intellectuals, they should be a huge asset to any country that takes them in. There's a reason we have the term "brain drain": countries that get the brains usually benefit greatly, while the countries losing them suffer economically.

<comment><USER22> I know you didnt mean this, but perhaps these people don't want to leave?

Turkey is not a hellhole. Sure, it is a divided country, but it has a rich history and lots of beauty (I say that not being a Turk, nor being from Istanbul).

Let's remember that the current position as a developing nation is historically rather new. There is a strong sense of nostalgia and, until recently, there was some realistic hope that Turkey would claw its way back.

I'd personally argue there arent many comparable places where you can (or could) indeed live a good academic and intellectual life in a non-western, non-east-asian society.

I know people who were ousted from their jobs, and yes they can all move elsewhere. But that's not the personal tragedies lie.

If you grew up in a city full of thousands of years of history from East and West, it is entirely possible you will never be quite as happy living in sterile, uniform, blocky corporaty cities in the US or Canada.

Those academics who stayed in Turkey despite their credentials, probably have such a preference.

<comment><USER47> Yes, I absolutely did mean this. Just read the comment I responded to: "Some people tried to go to Greece on boats which many of them died on the way."

Obviously, those people thought it was enough of a hellhole that they risked their lives to take boats to Greece, and died!

>Those academics who stayed in Turkey despite their credentials, probably have such a preference.

I'm not talking about anyone who's staying there. I'm talking about people who are actively trying to escape and are risking their lives to get out. Obviously, they're perfectly willing to abandon those cities "full of thousands of years of history". Besides, western Europe is chock full of other cities with thousands of years of history that don't have the problems Turkey has, and that's where these people were headed to, not the US or Canada.</comment></comment></comment></comment></comment>


Apple would rather lose iPhones than endanger it's staff. - <AUTHOR> http://thenextweb.com/apple/2012/01/03/apples-theft-policies-in-question-after-it-gives-a-thief-a-free-replacement-iphone/

<comment><USER2> Really disappointed in TNW's title selection. Apple tells employees not to confront thiefs if they show up with stolen goods, and TNW's response is to call this questionable? Really? The original owner gets their device back, and Apple takes the hit for the stolen device. How is this "questionable"?

</comment><comment><USER3> The HN title I think does not capture the content of the article.

The phone was stolen, and that is a police problem, not an Apple problem.

'The Apple clerk at the Genius Bar assumed it was a phone malfunction, and seemingly without checking to make sure, handed the man a brand new phone and put Barkley's stolen phone in the back, to be sent off for servicing.'

Nowhere does it say it is Apple's policy to give holders of stolen phones a free phone, and that isn't what happened in this case. The two are mutually exclusive.

<comment><USER4> This is actually very common in retail. Thieve rings do this all the time; steal from one city then exchange in another, then sell the in-store credit online. The stores know how to track the activity and turn in the suspected thieves. Asking your store employees to act as police officers is a pretty ridiculous request.</comment></comment>


The State of Client side JavaScript Error Reporting - <AUTHOR> http://airbrake.io/blog/notifier/state-client-side-javascript-error-reporting/ <comment><USER2> I was hoping for some info about handling the glut of false positives in Chrome when monitoring a site for JS errors using onerror. From what I can tell, they are caused by the fact that Chrome extensions run inline on pages.

It seems to me Airbrake is just requiring that you wrap all of your JS in calls to Airbrake.try(). Wouldn't this end up littering your whole app with Airbrake calls in every event handler?

<comment><USER3> To avoid that, I check origin script url, as all my scripts are within the "/assets" path :

        window.onerror = function( error, url, lineno ){
          if ( url && url.match( //https?:\/\/.*?assets/ ) ){
            # error management
          }
        }

This ensure only relevant errors are included, discarding errors from extensions, trackers, gmaps, etc.

Of course if you inline js for performance on production code, that's a problem.

EDIT : an other important thing to avoid flooding is to handle amount of error. Javascript errors rarely come alone. An error within an event callback may be triggered several times before user surrenders. And let not even start with error within setInterval. To avoid this, I usually use a `error_got` counter and simply silence error reporting for the current page / context when I've got more than 5 errors.

And about user surrendering. Reporting errors is nice. Preventing user to get stuck is better. I always automatically disable all callbacks in onerror and let default html actions on links and form being process. This ensure user intent will be fulfilled and page context will be reloaded as a bonus. I've written more extensively on this here : [https://gist.github.com/oelmekki/6420982](https://gist.github.com/oelmekki/6420982)

<comment><USER2> I am filtering so only errors coming from my JS files get captured, but something in Chrome is still saying errors from other scripts are coming from mine. I know because the errors reference variables and functions that do not exist in my codebase.

I'm using this on a site with 1.5M pageviews a month, so even a very small number of errors results in quite a number of items in Rollbar. It is also effectively impossible to reproduce the issues since they are client-specific.

My current solution is to work on expanding my list of "invalid" errors that should be ignored. Based on sandstrom's comment, I'm also going to look at the Content Security Policy functionality.

</comment></comment></comment><comment><USER4> No need to clutter your code with a bunch of try wrappers like this suggests. There's a much better way. It turns out that in a typical web app, a handful of operations account for the vast majority of new execution contexts:

      - setTimeout/setInterval
      - event handlers
      - ajax response handlers

Wrap those entry points (along with a single top-level wrapper which can be done as a build step) and you're almost entirely covered. If you use jQuery along with TraceKit, this plugin does it for you: [https://github.com/getsentry/raven- js/blob/master/plugins/jq...](https://github.com/getsentry/raven- js/blob/master/plugins/jquery.js)

</comment><comment><USER5> I've done a bit of work to flesh out the jQuery integration in our fork of the airbrake notifier, to automatically wrap all event handlers and AJAX callbacks. Which is great, because it means our entire Backbone app gets a full stack trace with line and column numbers. I should really submit a pull request.

Also very excited about the proposals about having the error object passed to window.onerror... well, I used to be. I've had a little bit of involvement in the W3C mailing lists over the last few years, but it seems like nothing ever gets done.

And source maps support would be awesome! Just as soon as we can get source maps from sprockets, which seems like it's on the way [1].

[1] [https://github.com/sstephenson/sprockets/pull/311](https://github.com/sstephenson/sprockets/pull/311)

</comment><comment><USER6> We are currently using Sentry to handle JS error reporting. It appears that this is essentially the same thing, am I missing anything that sets it apart and makes it better?

<comment><USER7> We use Sentry as well but I have yet to see a full stacktrace come out of it... unless I have it misconfigured or something.

<comment><USER8> I've tried airbrake, Errorception, Sentry/RavenJS and Rollbar, all good software that aim to solve roughly the same problem, though eventually we settled for rollbar.com

<comment><USER9> I'm curious what made you decide on rollbar out of those options?

<comment><USER2> I'm not the parent, but my company and I both settled on Rollbar due to fair pricing, good features and good support interactions during the beta period.

</comment></comment></comment></comment></comment><comment><USER10> Missing a closing paren on the Airbrake.try example. Otherwise, looking good!

</comment><comment><USER11> Does it handle uncaught errors such as a window.onerror function might do?

<comment><USER12> Nope. You can attach a handler to window.onerror manually that pushes its error to the notifier, but errors handled this way won't have a stack trace.

</comment></comment><comment><USER13> Great approach by the airbrake team. Nice work.

<comment><AUTHOR> Thanks dbreaker. Any questions, email me or Duncan.

</comment></comment><comment><USER14> Interesting, can't wait to try this out!

<comment><AUTHOR> Thanks Tom. We really welcome your feedback, any questions or issues please open an issue on github [https://github.com/airbrake/airbrake- js](https://github.com/airbrake/airbrake-js)</comment></comment>


How can we connect youth in the US with youth in Cuba? - <AUTHOR> http://www.thedrum.com/doitday/content/belkin-0

<comment><USER2> A more detailed article about Do it Day 2015:

[http://www.thedrum.com/news/2015/09/02/let-s-do-it-how- ibm-d...](http://www.thedrum.com/news/2015/09/02/let-s-do-it-how-ibm-dennis- publishing-belkin-and-more-are-going-change-world-drum-do)</comment>


A Brief Glance at How Various Text Editors Manage Their Textual Data (2015) - <AUTHOR> http://ecc-comp.blogspot.com/2015/05/a-brief-glance-at-how-5-text-editors.html <comment><USER2> The article is missing one of the important but commonly overlooked structures: a "piece chain" [1] (aka "piece table"). Not easy to find editors using it, especially among the popular ones, but:

\- from what I've read somewhere, MS Word was/is (?) using it internally [[http://1017.songtrellisopml.com/whatsBeenWroughtUsingPieceTa...](http://1017.songtrellisopml.com/whatsBeenWroughtUsingPieceTables), ]

\- AbiWord [1]

\- [1]: [http://www.catch22.net/tuts/piece- chains](http://www.catch22.net/tuts/piece-chains)

\- [https://github.com/martanne/vis](https://github.com/martanne/vis)

\- the text editor of the Oberon OS used it [1]

One of its most intevesting advantages is that it trivially supports fast unlimited and persistent undo/redo

<comment><USER3> A problem with this data structure is that it's not self optimizing. Suppose you insert a character after every other character (not common, but easy to do with a macro). You will end up with a link-node per character. On the one hand, the size expansion is probably fine because the undo records of other data structures would equal it (if they support unlimited undo). On the other, all data access now involves pointer chasing for each character. This could be bad for screen update, search, etc.

The doubly-linked list of gap buffers method is somewhat similar, but is self- optimizing because adjacent small buffers can be merged.

<comment><USER2> The piece chain approach _does_ indeed have some cons too, not only advantages. E.g. retrieving a byte at a specific absolute offset requires iterating sequentially over all preceding "pieces" of the chain in the basic variant of the structure (i.e. if used without additional helpers/caches/...). But which method doesn't bring its own disadvantages as well as advantages? It would probably be interesting if someone managed to write a _comprehensive_ comparison/analysis of _all_ the various known data structures for editors...

My intention was to highlight the piece-chain method as it seems to me surprisingly often overlooked (not known?), while having quite some noteworthy features. That said, I'm starting to think that maybe its non-trivialness can be seen in itself as one of the disadvantages too (i.e. by maybe making the program more complex than for the other, "dumber" methods)? Not sure on that, though. Adding undo upon the other ("simpler") approaches may possibly make them more complex anyway?

</comment></comment></comment><comment><USER4> One interesting aspect of the implementation of sam is that there are actually two different text representations. What's discussed here is the part in the main sam process, but there's another data structure in the samterm process that contains only those sections of the file that have actually been displayed in the samterm GUI.

This meant that you could run sam and samterm on opposite ends of a slow link and still be able to edit very large files. The remote sam process loads the file into the data structure described in the original article. samterm only loaded (over the slow link) the section of the file needed to draw a window containing the part of the text the user was looking at. As you moved around the file samterm would fill in parts of the data structure with the text you needed to see.

The data structure used on the samterm end is called a Rasp: a file with holes. See [https://plan9port.googlesource.com/plan9/+/refs/heads/master...](https://plan9port.googlesource.com/plan9/+/refs/heads/master/src/cmd/samterm/rasp.c)

</comment><comment><USER5> If you are interested in this, [Data Structures for Text Sequences]([https://www.cs.unm.edu/~crowley/papers/sds.pdf](https://www.cs.unm.edu/~crowley/papers/sds.pdf)) by Charles Crowley is an excellent paper to study.

<comment><USER6> Yes, very nice. But it needs an update on structured documents (tree-like, as in HTML). And, ideally, it should be accompanied by work that addresses collaborative editing in such structured documents.

</comment></comment><comment><USER7> Author here: I woke up this morning and I'm pretty surprised! Finally some feedback over a year later.

I will compile a list of more people will want to see (seeing a lot of Atom and editors with piece table (vis uses piece tables)).

Thank you for the positive feedback. My blog before had a total of 30,000 views over 2-3 years, and now just overnight has double that - makes me pretty happy and want to put more effort into write ups! :)

</comment><comment><USER8> Wow, this prompted me to go look for a GPL PalmOS editor I wrote 11 years ago and _someone's put it on GitHub [1]_ and updated it 2 months ago. It was the first serious programming I did.

I used a bizarre structure where the each onscreen line in the document (soft- wrapped) was represented by a (uint16?) character count and pointer to an array containing the characters. I had to write a custom memory allocator that put adjacent lines next to each other in memory to make moving characters between lines efficient.

Way too much overhead, and if you changed font you had to completely reload the file, but it was pretty quick even on the old 68K Palms.

[1] [https://github.com/rtiangha/SiEd-Dana](https://github.com/rtiangha/SiEd- Dana)

</comment><comment><USER9> I'd like to see someone write on how web based rich text editing tools store their textual data.

Like,

\+ [quill.js]([https://github.com/quilljs/quill](https://github.com/quilljs/quill))

\+ [draft.js]([https://facebook.github.io/draft- js/](https://facebook.github.io/draft-js/))

\+ [prosemirror.js] ([https://github.com/ProseMirror/prosemirror](https://github.com/ProseMirror/prosemirror))

\+ [trix.js]([https://github.com/basecamp/trix](https://github.com/basecamp/trix))

Each of them might be relying on some form of _Tree_ to store the content which actuates the views to react. I'm only guessing. A deeper, closer look might be interesting and useful.

<comment><USER10> Usually web based rich text editors just use a <div> with contenteditable=true. They don't manually manage the textual data. The browser manages the data, automatically adding and removing <p> elements to contain the data. The editor just adds buttons which call built-in functions that transform the text.

I imagine someone somewhere has written a more complex editor that manages things a lot more manually, though. I checked the first one you linked (quill), and it, as expected, uses contenteditable.

<comment><USER11> content editable has it's own problems ([https://medium.com/medium-eng/why- contenteditable-is-terribl...](https://medium.com/medium-eng/why- contenteditable-is-terrible-122d8a40e480)), and more modern rich text editors do build up some kind of model of the data they are representing. My favorite is prosemirror, which presents the user a contenteditable, but maps changes as transformations to it's own internal document model. Each version of the document is immutable and it uses a fast diffing algo (similar to react) to determine the DOM mutation steps necessary to represent the newest version document. As a result, it becomes "trivial" to support multi-user collaboration, since you just import the other user's transformations to the document model as they come in ([http://prosemirror.net/demo/collab.html#edit- Example](http://prosemirror.net/demo/collab.html#edit-Example)). Since the entire document is now modeled as a tree structure, it becomes easy to do custom serialization/deserialization, ie: to markdown and back again ([http://prosemirror.net/demo/markdown.html](http://prosemirror.net/demo/markdown.html)).

</comment></comment></comment><comment><USER12> "The Craft of Text Editing" ([http://www.finseth.com/craft/](http://www.finseth.com/craft/)) could also interest people who like reading about text editor internals.

</comment><comment><USER13> I had a 4gb textfile I wanted to open. Vim choked while Scite handled it like it was no big deal. Later I configured vim to handle it okay but Scite still is there in my toolbox if I need it.

<comment><USER14> Turning off line wrapping and syntax highlighting before loading a large file seems to help enormously in Vim.

<comment><USER15> And on emacs. I have "turn on/off syntax highlighting" as a shortcut. Specially useful for largish JSON files, for some reason emacs chokes easily on them

<comment><USER16> I like how you say "on emacs". Makes it sound like "on Windows", i.e. Emacs the OS... ;)

<comment><USER15> Well, I'm not native so on and in are somehow hard to pinpoint. Quite likely I'd have said also on vim :) (I use emacs+evil by the way)

</comment></comment></comment></comment></comment><comment><USER17> Potentially relevant: CodeMirror's BTree representation [http://marijnhaverbeke.nl/blog/codemirror-line- tree.html](http://marijnhaverbeke.nl/blog/codemirror-line-tree.html)

<comment><USER18> As I was reading the original post, I was wondering what a similar comparison of Web-based text editors would look like: Ace, CodeMirror, Atom, Monaco… They all feel like they have slightly different performance characteristics, but I've never dug into how each was done. That post is a great start!

</comment></comment><comment><USER19> Unsorted counted B-trees are an interesting way to manage text in a text editor:

[http://www.chiark.greenend.org.uk/~sgtatham/algorithms/cbtre...](http://www.chiark.greenend.org.uk/~sgtatham/algorithms/cbtree.html)

You can do all the normal editing operations in log time, and B-trees can (obviously) be run from disk, so you don't need to use a lot of RAM, either, and can efficiently edit extremely large text files. In-memory, B-trees also use the memory hierarchy efficiently.

<comment><USER20> This seems functionally pretty similar to the 'rope' [0] data structure used by GtkTextBuffer

[0] [https://en.wikipedia.org/wiki/Rope_(data_structure)](https://en.wikipedia.org/wiki/Rope_\(data_structure\))

</comment></comment><comment><USER21> "For some, they want editing to have high physical efficiency - using keyboard shortcuts and command keys, maybe the odd time the mouse comes in handy. Others want their editors to be virtually efficient - to make the most out of their resources (RAM, disk space) - or to be "small". "

In 2015, I would think that most (i.e. > 90%) want an editor that's makes them most efficient as developers.

A little side project I have is to create a set of notes on editors I've used, or want to use, so I can compare them, and use each more efficiently.

[https://github.com/melling/EditorNotes](https://github.com/melling/EditorNotes)

Edititing should be a precise skill with less hand movement and fewer keys pressed.

<comment><USER22> The editor which makes me most productive as a developer is the one I have to think about least. I spend an order of magnitude more time reading and thinking than typing, so no amount of increased editor efficiency could make a significant improvement to my productivity. Having to stop focusing on the problem at hand in order to remember how to operate some sophisticated editor feature, on the other hand, could be a significant distraction. I want to use the simplest, most straighforward editor capable of doing the job, and if I have to spend a few extra minutes here and there doing some repetitive code munging by hand, it is not a problem because I can continue doing the hard part of the job (thinking) while my fingers are busy typing.

<comment><USER21> You are going to be using an editor for dozens of hours a week over decades. It's probably worth the effort to master one of the better editors.

<comment><USER22> After using an editor for dozens of hours a week over decades, I decided it was worth the effort to write one of my own. I've been living in it for close to a year and a half now, and while it has a couple of quirks that occasionally bug me, it's nothing serious, and I feel pretty happy with my decision so far.

</comment></comment></comment></comment><comment><USER23> nvi[0] (New vi, BSD) by Keith Bostic uses bdb[1] (Berkeley Database) as it's backend, which is interesting. It may be because he (and Margo Seltzer) _invented_ the bdb that it was on his mind, but interesting design decision nonetheless.

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

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

</comment><comment><USER24> I'm curious what JOE editor[1] uses. With its syntax highlighting turned off, that program can open really huge files much quicker than vi or emacs.

1\. [http://joe-editor.sourceforge.net/](http://joe-editor.sourceforge.net/)

<comment><USER3> JOE was written in the final days of expensive memory and was written so that it can edit files larger than memory. Even today this is sometimes useful: you can edit an 8 GB file on a 32-bit machine.

It uses a doubly linked list of gap buffers. Each gap buffer has a header and a 4K data page. The headers are always in memory, but the data pages can be swapped out to a file in /tmp. The memory usage limit is 32 MB. Possibly this is no longer a good idea- it's easily possible that you could have more RAM than /tmp space.

The header has the data page's offset in the swap file, the link pointers, the gap location and a count of the number of newlines in the gap buffer.

When a file is read in, the gap buffers are completely full. So read-in turns into a direct read of the file into memory (or into the swap file). The only thing it has to do is count the newlines in each 4K data page and generate the headers.

The newline count is to speed up seeks to specific line numbers. [A long standing enhancement idea is to generate the newline count on demand and use mmap. This would allow the read in to be a NOP- just demand load the pages from the original file as needed and use copy-on-write when any change is made to preserve the original. But I'm also not sure it's a good idea to not take a snapshot of the original file- so this probably should be optional.]

JOE uses smart pointers to the edit buffer. Each pointer has the address of the header and a memory pointer to the data page (which is always swapped in if there is a pointer to it). The software virtual memory system has a reference count on each page. Each pointer holds a reference on the data page it's pointing to. If there is no pointer to a page, the reference count is zero, so it can be swapped out.

The other purpose of the smart pointers is automatically stick to the text they are pointing to, even through insert and delete operations. So if you insert at one point in the file, any pointers to further locations are updated (including line number, byte offset, column number and memory offset).

<comment><USER25> Guessing from your user name, are you one of the authors of JOE? That seems rather likely, and is just generally why HN is awesome. Thanks for that very well-written explanation.

</comment></comment></comment><comment><USER26> One of the more interesting editors I've seen being worked on is edlib ([https://github.com/neilbrown/edlib](https://github.com/neilbrown/edlib)). The theory is that rather doing a buffer-based approach as in Emacs, the text is _actually_ just a representation of a file. The consequence being that you can have a presentation open as one representation and also be modifying the presentation as a different representation. It's very young (and is a toy project as well), but it's definitely a cool idea IMO.

<comment><USER27> Isn't an emacs buffer exactly that? Depending on what modes are turned on the way the file data is presented will also change.

For ex, how you can open a svg file, if you use the image mode you see the image representation otherwise you get the code.

<comment><USER26> Emacs buffers are copies of the representation, not _actual_ representations. The author had a talk at a recent linux.conf.au (can't find the link right now), which explains it much better than I could.

</comment></comment></comment><comment><USER28> Would love to see Notepad++ added to this, especially given its efficient handling of large text files.

<comment><USER29> Notepad++ uses Scintilla internally.

<comment><USER30> Does it still use an upstream Scintilla or a fork?

<comment><USER31> It's unlikely they replaced the editor data structure in a fork; that'd basically mean they couldn't use any patches.

</comment></comment></comment></comment><comment><USER32> > The buffer is initialized as a vector with 10,000 lines. If a file is loaded > with more than 10,000 lines, or surpasses this limit while editing, it will > add 1/10th of the amount of max lines to the buffer....This behavior only > becomes useful after the 10,000 line mark, although a little wasteful. If > say while typing we hit the 1,000,000 line mark, Moe will allocate space for > 100,000 lines. This is not very resource efficient, unless you are someone > who typically types an additional 100,000 lines after your millionth line.

This is incorrect. Intuitively, if you're using large files, you're likely to generate large changes in file sizes. Algorithmically, this is a very common approach. Collections in most languages double their size whenever the existing capacity is exceeded. This minimizes the number of times you need to reallocate lists of increasing size, and works nicely with the memory management systems of various operating systems.

It's also not resource efficient to need to change the size of the collection for every new line. I would suggest that a 10,000 line initial capacity and increasing by 10% on reallocation are appropriate compromises.

</comment><comment><USER33> It would be interesting to see something like this for "rich text" editors, too. Where it's not just text, but might include formatting instructions or even media. Would be especially nice if one could contrast something from the WordStar era with 90s OO tech (flyweight objects?) to whatever's currently in vogue (functional shenanigans?).

<comment><USER34> I feel that rich text is sadly something our trade has mostly just given up on. What's in vogue? Still HTML, which is IMO a really really sad state of affairs, since there's basically no way you can cleanly map between HTML and a wysiwyg editor. The simple question of "where is the cursor?" is almost impossible to answer in the general case.

<comment><USER18> There is a recent wealth of new Web-based rich text editors. ProseMirror, Basecamp's Trix, FastMail's Squire, Guardian's Scribe, Summernote…

Even old ones such as CKEditor plan on updating their engine: [https://medium.com/content-uneditable/ckeditor-5-the- future-...](https://medium.com/content-uneditable/ckeditor-5-the-future-of- rich-text-editing-2b9300f9df2c#.gt4uibrtr).

<comment><USER34> It's certainly good to see some development. I remain skeptical however, until we have an OSS editor available for production use that internally maps (and requires storage) to a sane data model (!=HTML).

</comment></comment></comment></comment><comment><USER35> I wonder what Linus' favorite editor microemacs/uEmacs uses for data structures. Its actually fairly hard to find the source code (all I could find is some ftp and I admit I was too lazy to fire up ftp and download the code).

EDIT: oh here is where it is: [https://git.kernel.org/cgit/editors/uemacs/uemacs.git](https://git.kernel.org/cgit/editors/uemacs/uemacs.git)

And it looks like its line based like old vi (I think): [https://git.kernel.org/cgit/editors/uemacs/uemacs.git/tree/l...](https://git.kernel.org/cgit/editors/uemacs/uemacs.git/tree/line.c)

Interestingly there was a line limit per window based on a signed char (127) that just got changed to an int (that was the last change made).

</comment><comment><USER6> Tcl/Tk's editor also used balanced trees.

</comment><comment><USER30> I wonder what Wordpad and Notepad do? Notepad will fail on anything bigger than ~50MB but Wordpad will work on it and have a progress bar to show it hasn't completely hung.

Text editing on Windows still mostly sucks.

<comment><USER36> Notepad and Wordpad are more like demo applications for the Windows common edit control and Rich Text edit control respectively.

Hardly meant as serious editors. But they will do for simple tasks.

</comment></comment><comment><USER37> aoeui uses a simple mmap for unmodified files and a gap buffer mmap'ed from a temp file for modified texts. This allows huge files to be viewable instantly. Gap buffers are awesome, BTW.

</comment><comment><USER38> > b->nc += m; > q0 += m; > s += m; > n -= m;

Why do people who write in C so often make it look like they have a shortage of letters to use for names?

<comment><USER39> They had a math/science background, so they wrote things like

      F = m * a

rather than

      ADD STATE-SALES-TAX TO STATE-TAXABLE-SUBTOTAL GIVING SUBTOTAL-INCLUDING-STATE-SALES-TAX

or

       activityLoggingAccessForIsolatedWorldsPerWorldBindingsLongAttributeAttributeSetterCallbackForMainWorld();

</comment></comment><comment><USER40> I've written a Data Structure[1] for C++ to handle this problem. It uses counted B+Trees internally and is a drop in replacement for C++14's std::vector.

[1] [https://github.com/det/segmented_tree](https://github.com/det/segmented_tree)

</comment><comment><USER41> The 8bit Acorn BBC editor called Edit put the entire file in RAM, all the characters before the cursor at the start of RAM, all the characters after at the end. Quick for inserting, but there was a half second delay if you jumped from the top to the bottom of the text.

<comment><USER42> This data structure is called gap buffer, it's rather common in text editors because it's simple to implement and efficient on the most common use cases.

In the usual implementation the gap is only moved when you actually insert text, not when the cursor is moved, which makes it even more efficient.

</comment></comment><comment><USER43> I'm making a code editor and chose a grid: two dimensional array, And a string. Then it can cross check the string and array to see if there is a bug somewhere. This is of course not efficient, but it keeps me sane. The grid also makes it easy to render the text.

<comment><USER44> Is that a standard immutable string? Does this mean allocating a whole new string every time a character edit is made?

<comment><USER45> Surely not one allocation per key, that could be up to like 10 allocations per second.

<comment><USER43> You will not notice anything unless you are watching the memory graph. I see no reason for "optimization" at this time.

</comment></comment></comment></comment><comment><USER46> C/C++ still rocks.

</comment><comment><USER47> Gnome Gedit is "interesting" when working with big files

2005-2016:"it takes too long to open big files" [https://bugzilla.gnome.org/show_bug.cgi?id=172099](https://bugzilla.gnome.org/show_bug.cgi?id=172099)

</comment><comment><USER48> I needed this :)</comment>


GNU Users Who Have Never Heard of GNU (2006) - <AUTHOR> https://www.gnu.org/gnu/gnu-users-never-heard-of-gnu.html <comment><USER2> Most of the stuff in userland isn't GNU. What GNU brings to the table pales in comparison to the technical complexity of the kernel or the GUI stack. While the kernel has grown up over the years from a janky hobby project to be a sophisticated base for smartphones and supercomputers, GNU still provides a bunch of common Unix utilities from the 80s and a C standard library. Maybe it's time to recognize that they aren't pulling their weight to get top billing here.

<comment><USER3> err are you forgetting about GCC or something

(also theres emacs and 50 years of bloat have led to libc and common unix utilities ending up surprisingly complicated but i digress)

<comment><USER4> Most code these days is compiled using LLVM, thanks to mobile phones.

<comment><USER5> Most code doesn't end up on mobile phones.

<comment><USER6> I beg to differ

</comment></comment></comment></comment></comment><comment><USER7> The vast majority of what runs on a modern Linux system doesn't come from GNU at all and that percentage is trending down over the years with things like LLVM making even the last few generally used core pieces replaceable. I don't think there's now anything to stop you from running a fully recognizable Linux distribution without any GNU software at all.

It was a silly argument to be getting into 10 years ago. These days it just seems like trying to take credit for other people's work. I have great respect for the GNU project and the GPL was a great invention that I use when I release stuff. Beating this dead horse just detracts from that.

<comment><USER8> glibc and bash are needed to have a traditional Unix-like Linux-based system and I don't think they have any fully compatible replacements (musl and BSD sh aren't).

<comment><USER9> I think ZSH is a valid alternative to Bash.

<comment><USER10> IIRC, not just a alternative, but a full super-set.

<comment><USER5> No, Zsh is not a full super-set of Bash.

</comment></comment></comment></comment></comment><comment><USER11> I like this description why people should mention GNU. With "open source software" or "Linux" or "Ubuntu" there are no moral implications, nothing to stand for except that it should do the job.

But GNU is different. The idea is to emphasize sharing and freedom and community.

In a world that is driven almost only by profit margins we do well to have some ideals.

GNU has enabled Linux and Ubuntu to come to life. Without GNU there wouldn't be any Linux as we know it today.

Also Torvalds had adopted the GNU GPL (what MS called the "cancer") for the kernel. Who knows where we would be if that wouldn't have been the case.

<comment><USER12> "Free" or "libre" also have moral implications, and are relevant even when calling something "GNU" would be inaccurate.

</comment></comment><comment><USER13> [https://directory.fsf.org/wiki/GNU](https://directory.fsf.org/wiki/GNU) has the list of software that the GNU project provides. While most systems that run a Linux kernel will require having many of those installed (sed, tar, grep, gzip, bash...), most of the software running on most of these computers these days will not be from the GNU project.

Many users will likely never use any GNU software directly these days, and it is increasingly possible to build systems with less and less parts from the GNU project.

It would be fantastic for the GNU project's visibility if it expanded its focus on software that would potentially be more widely used directly by humans. Where's the GNU project's alternative to Zoom? Why is Savannah so far behind GitLab? Where are the GNU apps for mobile?

<comment> yjftsjthsd-h > It would be fantastic for the GNU project's visibility if it expanded its > focus on software that would potentially be more widely used directly by > humans.

Agreed, but...

> Where's the GNU project's alternative to Zoom?

[https://jami.net/](https://jami.net/) (formerly GNU Ring), I think

> Why is Savannah so far behind GitLab?

I'm inclined to agree with this, moreso as I hadn't even realized until now that it was even a thing outside being used for official GNU repos (much like how Canonical's Bazaar is technically open source but 100% only ever intended to run Canonical's ... canonical... instance).

> Where are the GNU apps for mobile?

While the sibling comment is probably correct that GNU isn't fond of supporting nonFree platforms, ex. IceCat is on F-Droid.

<comment><USER14> "Canonical's Bazaar" .. do you mean launchpad.net?

<comment> yjftsjthsd-h Ah, darn it, yes you're correct. Bazzar is the vcs, not the site.

</comment></comment></comment></comment><comment><USER5> Most Linux users have never heard of Linux, either ;)

</comment><comment><USER15> > Most people have never heard of GNU. Even most of the people who use the GNU > system have never heard of GNU, since so many people and companies teach > them to call it "Linux". Indeed, GNU users often say they are "running > Linux", which is like saying you are "driving your carburetor" or "driving > your transmission".

Did Stallman really write this in 2006? Cars haven't had carburetors since the early 90s.

<comment><USER16> Listening to politicians debate this year has reminded me how most people's mental models of the world remain firmly stuck in the decades of their youth.

</comment></comment><comment><USER17> I usually refer to distributions like Debian or Fedora as GNU/Linux to distinguish them from other systems that use Linux kernel (e.g. Android). GNU defines the runtime environment, and by knowing that a system is GNU, we understand what software it is supposed to run. The kernel is mostly relevant for hardware support, the runtime defines software compatibility.

If we look deeper, we see that GNU/Linux is a C system, and I'd argue that this is the most essential characteristic ("An operating system is a collection of things that don't fit inside a language; there shouldn't be one" — Dan Ingalls, Design Principles Behind Smalltalk). Of course, GNU system supports many programming languages, but they all use C to interface with the system. Get familiar with non-C systems like Smalltalk or Oberon to see how programming language is essential. Also web browsers grew to become operating systems of their own (running on top of C systems for now) — the JavaScript systems.

<comment><USER18> Other users have touched on the fact that GNU makes up a very small part of the current user-land ecosystem. It seems to me that the only reason to keep GNU in the GNU/Linux title is for historical purposes, but even then I wouldn't argue for that. Why is GNU worthy of being included when referring to a Linux system in 2020? Linux, as I know it, seems to be pretty distinct from what it was before my time.

<comment><USER19> I use Gnome every single day. It's a pretty substantial part of the user experience.

<comment><USER20> I don't - and yet I work on the same OS, writing the same code and scripts using the same tools (clang, bazel, python).

Gnome is not a defining part of a modern linux system, it is just one choice of many DEs. And a large fraction of Linux systems don't run any DE at all.

</comment></comment></comment></comment><comment><USER21> More accurate to call it "systemd/Linux" nowadays</comment>