GeckoView for Android - <AUTHOR> https://mozilla.github.io/geckoview/ <comment><USER2> GeckoView is awesome. We switched to using it with TelemetryTV (a next gen digital signage platform) and it's made our Android app a lot more compatible.

The core of our player application is a Progressive Web Application that runs everywhere and just needs a native container like Electron or a Webview to run. Our customers run on whatever hardware they want(Windows, Mac, ChromeOS, etc)and Android is a really compelling platform since there's a ton of inexpensive AndroidTV devices out there but quality is all over the place.

If you depended on the system provided Webview on AndroidTV you may get anything from version 50 to 80 of Chrome due to fragmentation of the platform and poor update habits of some manufacturers. Our app uses features like CSS grid and doesn't run on a large fraction of Webviews out there in the wild.

The system Webview also doesn't provide much control at all for customizing the browser engine. GeckoView lets you do pretty much anything allow us to support important features we provide with our Electron clients.

You also don't need to worry about a browser update causing trouble as you control when you update the browser engine.

It's a shame that iOS doesn't have something similar because it's a really horrible platform due to Apples Webview for use cases like ours.

<comment><USER3> >You also don't need to worry about a browser update causing trouble as you control when you update the browser engine.

This concerns me. Under the current google model, as long as you have a play store compatible device, you get chrome webview updates through the play store, even if the device fw is eol.

If an app developer doesn't update their app, then you can have potentially vulnerable version of geckoview lying around. I hope a decoupling/webview- style update mechanism is eventually implemented, although I don't know how feasible that is (i'm an amateur android dev)

That said, I really do like the project. And, I use firefox as my personal browser, both on principle and because it's quality software.

<comment><USER2> On many real world AndroidTV devices (I've tested a couple dozen) you definitely do NOT get Chrome updated properly even though it's supposed to.

Android is the Wild West, with all the good and bad that follows. Manufacturers are often not implementing things properly. Problem is that these devices are all over Amazon and people buy them and expect them to work. We try to steer people to good quality devices such as the Nvidia Shield but you can only do so much.

Keep in mind that GeckoView may not be used to build a browser. Rather it's often an engine used to drive an application built with web technologies. So a developers requirements for updates are different than an interactive browser of arbitrary web content.

The story is the same on the desktop with Electron. When you deploy an electron app the browser underneath it is locked in conjunction with the version of Electron.

It's still up to the app developer to be responsible and follow issues and update as required. But that's a lot less often than when you have a browser of arbitrary web content.

<comment><USER3> >On many real world AndroidTV devices

i gathered from your comment about large amts of devices still on 50 D:

I know it won't be used for external web content, but all it takes is an escape or malicious frame/xss, and boom, mass RCE.

I don't like electron for the same reason.

I'm not saying that it's a wasteland out there, it's just one element that concerns me, is all.

<comment><USER4> Still, at least this provides another option. Lesser of two evils and all that. Maybe if android was less of a mess this would be a less desirable option, but frankly I'm pretty happy there's an alternate option regardless of whether it's better or worse

</comment></comment></comment></comment></comment><comment><USER5> As the original author of GtkMozEmbed I'd like to say that this is way too little, way to late. Mozilla has historically been very much against anyone trying to use the engine in anything other than the firefox app.

This is completely up to them of course, and it probably let them move firefox forward faster, due to not having to care about APIs. However, it also means that chrome completely took over the entire market with electron and similar things.

<comment><USER6> I've always wondered why Mozilla doesn't make it easier to embed Gecko everywhere it possibly can. If Electron was built with Gecko, it would go a huge way towards preventing Chrome from becoming the de-facto way of accessing the Web.

As you said, this is too little, too late. I'm a Firefox user, but Chrome has pretty much won the browser wars. The only thing preventing it from achieving complete market dominance is the existence of Mobile Safari.

<comment><USER7> Supporting embedding well is a lot of work, both to create the APIs and then deal with their constraints as the browser evolves. Mozilla has always been under-resourced compared to the competition (IE, then Chrome) and taking people off improving Firefox/Gecko to work on embedding never made the cut. I don't really regret those decisions.

What made it extra unappealing for Mozilla was that we knew the Firefox/Gecko architecture needed lots of work that would destabilize an embedding API. Not much point in supporting an API that assumes single-process while you're moving to multi-process, or that exposes XUL which you know is a dead end, or that isn't compatible with off-main-thread rendering or GPU rendering, etc. Things are much better now that a lot of that debt has been paid off.

<comment><USER8> There's nothing stopping a 3rd party from making an Gecko version of Firefox. Electron is not run by Google nor the Chromium team. It's run by github (which only recently became Microsoft)

That said, I'm not sure what the point is. I believe (but could be wrong) that Chromium has more features that Gecko doesn't? So if you're choosing one over the other I'm only guessing most people would choose Electron

<comment><USER9> "Electron for Gecko" was in fact done. See Positron discussion below.

</comment></comment></comment></comment></comment><comment><USER10> I hope they have a _very_ good story around patches and updates...

Web browsers need patching pretty much every week, and having every app developer needing to re-release their app every time isn't practical. The alternative is a world where my phone can be compromised because an ad rendered in an app using a 3 week old build of gecko had a browser exploit in.

<comment><USER11> This. Webview is a separate app on Android phones for quite a while now(and also I think chrome mobile is another/newer webview provider), which allows for much faster updates. As much as app developers hate not knowing what version of library is actually running in their apps, it is a net win for the user.

<comment><USER12> I didn't know about using chrome mobile as webview provider. What are the dis-/advantages of using it? Any experience?

<comment><USER13> Advantage is that most of the time, you have a fairly new browser engine available for your app, that is not tied to the OS version (especially important on Android). Also doesn't require embedding an 50MB engine (Crosswalk) in your app.

Disadvantage is that as an app developer you're not guaranteed to have any specific version available. Some devices never upgrade the pre-installed version automatically. The user is also able to switch between the Chrome webview and an OS webview on some devices (in developer settings, so it's not common). You can add checks in your app and direct the user to the update links, but requires quite a bit of work to do well.

</comment></comment></comment></comment><comment><USER14> Mozilla offers many Android components for those building browsers: [https://mozac.org/components/](https://mozac.org/components/)

<comment><USER15> Is there a similar set of components for desktop applications? I.e., as an alternative to electron.

<comment><USER16> Would there be any point other than being from mozilla?

<comment> yjftsjthsd-h Well, "from Mozilla" is a subset of the larger and more valuable "not Blink"/"not from Google", which is handy if you're worried about an adtech company owning the entire web ecosystem.

</comment></comment></comment></comment><comment><USER17> I'm looking forward to be able to embed GeckoView in my Ionic apps to support older android versions, as a replacement for the now defunct crosswalk project.

</comment><comment><USER18> The billion dollar (figuratively) question: When will GeckoView for jailbroken iOS come?

<comment><USER19> GeckoView is fairly tightly focused on Java/Kotlin API. While work in the past allowed Gecko to run on iOS [1] this was not maintained.

[1] [https://imgur.com/r8Qti](https://imgur.com/r8Qti) and [https://bugzilla.mozilla.org/show_bug.cgi?id=1163827](https://bugzilla.mozilla.org/show_bug.cgi?id=1163827)

</comment></comment><comment><USER20> Does this mean a user might open a link and get either WebView or GeckoView, according to what the application developer chose, or that the user can choose which _all_ in-app links open in (if *View enabled in that app, etc.)?

<comment><USER11> App developer chooses either this or that.

However, I bet noone would choose gecko because it adds to the APK size.

<comment><USER20> Hm I thought that's what it was, a shame. IMO 'WebViewHandler's should be distributed with browsers, and then when you choose a default browser you've also chosen a default 'WebViewHandler'.

<comment><USER21> I'm not 100% sure, but I think that actually is how it works. I have Firefox Preview (which is built on top of GeckoView) installed as my default Android browser, so I believe webviews from other apps are rendered using Firefox's engine instead of Chrome's.

(Disclaimer: I work for Mozilla but not on this)

<comment><USER22> WebViews can't be rendered by anything but system WebView or Chrome WebView, but apps can use something called a Custom Tab instead, which can be provided by the user's default browser, and which Firefox does.

</comment></comment></comment></comment></comment><comment><USER23> Anyone knows if you can bypass/disable CORS restrictions like in Electron ?

<comment><USER24> Relevant question with answers: [https://stackoverflow.com/questions/61375629/allow-cross- ori...](https://stackoverflow.com/questions/61375629/allow-cross-origin- request-in-geckoview-for-android)

</comment></comment><comment><USER25> Is this a "shared library" in the sense that when I have two applications using it, it is only installed once?

<comment><USER24> No, there is no support for third-party shared libraries on Android yet.

</comment></comment><comment><USER26> Out of curiosity... does anyone know how big this library is in terms of installation size?

<comment><USER27> I was also interested in this. Not sure how it will look in final APK build, but AAR is 28Mb [https://maven.mozilla.org/maven2/?prefix=maven2/org/mozilla/...](https://maven.mozilla.org/maven2/?prefix=maven2/org/mozilla/geckoview/geckoview- arm64-v8a/64.0.20181204213330/)

</comment></comment><comment><USER28> Why not servoView?

<comment><USER29> Probably because Servo isn't anywhere close to ready yet, unfortunately. It's really cool tech, and I'm dying to use it.

<comment><USER30> I have a gut feeling that by the time servo is ready, Firefox will have died. That, or servo will never be ready.

<comment><USER31> Servo may not ever be ready by design, as it is a research project and not meant to stand on its own. The way it's useful is that parts of it occasionally get integrated into regular Gecko as they mature.

</comment></comment></comment></comment><comment><USER32> > Like Firefox, GeckoView offers excellent support for modern Web standards.

I guess it depends on one's definition of "excellent", but I'm still waiting on ES2018's regex lookbehind assertions to be implemented.

<comment><USER33> What about support for CSS list-style-type: '-'? Happy to discover that it is finally supported since Chrome 79, released on the December 10, 2019. Supported on Firefox since version 39, released on July 2, 2015.

And what about Flex-box's safe value for the justify-content property, allowing to justify (center) an element, but still be sure that the left side of the content will not be hidden if the parent container is too small? Right, supported on Firefox since version 63 released on October 23, 2018 and still not supported on Chrome (and to add insult to injury, safe is recognized, it just does nothing, which is worse than really not supporting the feature).

I didn't look for these missing features on purpose, I have been annoyed by them recently or less recently. So as for Chrome's excellent support for modern Web standard, I guess it depends on one's definition of "excellent".

Or more accurately, you can find lacking support for some features of the Web standard in any browser engine. :-)

<comment><USER32> I do agree with you, but also I don't think that when judging whether Firefox's support of web standards is "excellent" it matters one bit what other browsers are doing. Like excellence isn't a relative measure here.

<comment><USER33> Oh, well, it literally depends on what you pick as a definition for "excellent" in a way I hadn't considered then :-)

Food for thought however: what is implemented elsewhere may be an indicator of was level of excellence is achievable.

<comment><USER32> Yeah, that's why I prefaced my comment with: 'I guess it depends on one's definition of "excellent"'.

What others can do is an indication of what is achievable only if what they do is optimal, like let's say for example that a monkey learns 10 words in a planet full of comparable monkeys and things less capable than that, does that environment make the monkey excellent in general as far as learning words goes? I don't think so. I would argue excellence in this sense is to be measured in the scale of what's possible, not as a comparative measure that changes depending on the environment. In this case in particular I wouldn't consider lacking features spec'ed 2 years ago excellence, your mileage may vary.

</comment></comment></comment></comment></comment><comment><USER34> Mozilla is going on the completely opposite direction of what their supporters (and previous contributors) want them to go.

Yes, they provide mobile browsers, plus a browser with "private mode" (focus) and now this. But on every single one of them, you have the same philosophy of Google Chrome (tm) adopted, of treating the user as a dumb gullible person that should not have access to important settings.

Why would they waste so much effort, and clone all the things people should avoid from Google Chrome?!

For example, any new tech introduced that can be used for browser fingerprinting and user tracking (e.g. canvas, webgl, webrtc, etc) is enabled to every single site by default, just like chrome.

Some you can install extensions (you can't on this and on mozilla focus), some you can fiddle with user-UNfriendly settings in about:config (desktop and full featured android, not focus or this) where you have to guess setting names and cryptic values (what does 2 means in a setting named somethingEnabled?!)

Only on mozilla desktop you can standardize sane settings by importing a user.js file from the dozen of crowdsourced efforts (i recommend the most complete one from [https://github.com/pyllyukko/user.js/](https://github.com/pyllyukko/user.js/) ). think about this, there's more then a dozen community led effort to provide sane defaults, not hardcore user optimized settings, sane defaults, for a project that should be open source and the users could have been able to send in patches to have sane defaults in the first place! now, why would those sane defaults everyone want would be denied in the main branch? because mozilla do not represent the users for a long time!

Mozilla is now a corporation that looks for Advertisement companies grants.

<comment><USER24> > For example, any new tech introduced that can be used for browser > fingerprinting and user tracking (e.g. canvas, webgl, webrtc, etc) is > enabled to every single site by default, just like chrome.

GeckoView exposes a wide range of privacy (including anti-tracking and anti- fingerprinting) features in a (hopefully) comprehensive API, see [https://mozilla.github.io/geckoview/javadoc/mozilla- central/...](https://mozilla.github.io/geckoview/javadoc/mozilla- central/org/mozilla/geckoview/ContentBlocking.html), and continues expanding its privacy settings.

> Some you can install extensions (you can't on this and on mozilla focus)...

GeckoView also exposes a WebExtension API, see [https://mozilla.github.io/geckoview/javadoc/mozilla- central/...](https://mozilla.github.io/geckoview/javadoc/mozilla- central/org/mozilla/geckoview/WebExtension.html), and continues to expand extension support.

> ...some you can fiddle with user-UNfriendly settings in about:config...

You seem to have answered one of your own questions here.

I also have the impression that you might have not commented on the GeckoView library, but on some range of Mozilla products (you named Focus).

<comment><USER35> > GeckoView exposes a wide range of privacy

that's is a fallacy and you know it!

There are ZERO settings exposed to the end user.

Those settings are exposed to the App embedding geckoviewer. In other words, the privacy settings are in the hands of the actor who benefit from Advertising by tracking the user!

> GeckoView also exposes a WebExtension API

again to the app.

<comment><USER24> > There are ZERO settings exposed to the end user.

This thread is discussing GeckoView, which exposes extensive privacy settings.

There is a (hopefully growing) amount of apps based on GeckoView, which will make use and/or expose different variations of GeckoView settings to the user, depending on the purpose and target audience of the app.

You might disagree, but, for example, I consider the level of detail in privacy settings provided by Fenix (Nightly) to be a good balance between user control and comprehensibility.

> > GeckoView also exposes a WebExtension API > again to the app.

Again, taking Fenix (Nightly) as an example, the GeckoView WebExtension API is used to provide a growing selection of add-ons, many of which are aimed at the privacy-conscious user, including uBlock Origin, HTTPS Everywhere, NoScript and Privacy Badger.</comment></comment></comment></comment>


Doomsday rule - <AUTHOR> http://en.wikipedia.org/wiki/Doomsday_rule

<comment><USER2> This is a lot of fun to play with!

</comment><comment><USER3> Or you could just look at the calendar!

I never understood this obsession with memorization of trivia. E.g. if I ever need to know the capital of South Dakota (not likely), I'll look at a map or just look at Wikipedia. Why would I want to memorize that?</comment>


"Build Products for Cavemen" - <AUTHOR> https://medium.com/@AndrewDBass/build-products-for-cavemen-36fbbb6642d4 <comment><USER2> This article many words. jwz short:

> Your "use case" should be, there's a 22 year old college student living in > the dorms. How will this software get him laid?

([https://www.jwz.org/doc/groupware.html](https://www.jwz.org/doc/groupware.html))</comment>


The telephone transformed – into almost everything (1993) - <AUTHOR> https://www.nytimes.com/1993/05/16/magazine/the-telephone-transformed-into-almost-everything.html <comment><USER2> This hasn't held up well:

> Martin E. P. Seligman, professor of psychology at the University of > Pennsylvania [...] has been monitoring the temperature of emotional > incidents on the computer network to see how they differ from "real time" > emotion. The constraints of the form tend to flatten anger and push toward > civility, he finds.

<comment><USER3> I wonder if this was just population effects. The group of people communicating over the internet in 1993 is not the same as the group of people doing so today.

<comment><USER4> Eternal September was in 1993.

</comment></comment></comment><comment><USER5> >"Oh," he says. "You mean why no voice dialing? Saying 'Get Fred' or 'Get Sam' or something? I don't have a voice dialer." He will soon, surely. Any day now, he will be able to pick up a phone anywhere and say "Call home" to a network that will recognize his voice and look up his home number (verifying his credit by means of his voiceprint).

In hindsight that's a... yesn't.

<comment><USER6> Only way I see something like that working is AI/ML and you'd need to vastly expand voice bandwidth past what PSTN is in order to have enough information for it to work. And even then who's to say people's voices, verbal idiosyncrasies, accents aren't still too similar to differentiate?

<comment><USER7> For whatever it's worth, I've seen AT&T experiment with voice recognition for authentication. One of the Achiles' Heels of the system is you can collect a lot of the samples you need to bypass it from peoples' voicemail greetings. Especially if like for some jobs, they're required to re-record the greeting every day, i.e. "Today is Monday, June 17th, and I'm in the office..."

That being said, linear predictive codecs used in mobile/lower bandwidth IP networks have damaged the sound quality of the PSTN quite significantly (some are even vocoderized). If you're just dealing with, say, g.711 in wireline networks (when this was written, aside from g.722 in some ISDN networks, g.711 was used almost exclusively; GSM was very much a niche in its infancy), you might be able to squeak by with enough data to reliably recognize people.

</comment></comment></comment><comment><USER7> In a way, this sorta seems like it was an inevitability; humans are a very social species. It only makes sense that our advancements in tech would, first and foremost, promote that.

</comment><comment><USER8> wish it wasnt paywalled--- what does it say ?

<comment><USER9> [http://archive.is/ThQGB](http://archive.is/ThQGB)

<comment><USER10> I thought archive.is no longer works...??? Edit: it doesn't work for me still. Edit again: Australia blocks it at an IP level?

<comment><USER11> Ha! Systemic copyright infringement shouldn't be easy.

<comment><USER9> Why not?</comment></comment></comment></comment></comment>


I'm a Nurse in New York. Teachers Should Do Their Jobs, Just Like I Did - <AUTHOR> https://www.theatlantic.com/ideas/archive/2020/08/im-nurse-teachers-should-do-their-jobs-like-i-did/614902/ <comment><USER2> This is an awful and irresponsible article. This is not a war, nurses are not soldiers and shouldn't have been put at such risk. The fact that they were was the result of a complete abdication of duty of our nations leadership. In regards to schools, based on recent outbreaks at schools that have reopened and summer camps it seems pretty clear that with the US's current level of transmission, trying to open schools is incredibly irresponsible. If we really wanted to have schools open as a priority we should have gotten our transmission down in the summer. We failed, and this is the result.

<comment><USER3> >This is not a war,

Feeling like this is not a war is a big reason we have all had to endure so much risk. We have been unwilling to make the tough decisions, unwilling to move ahead with imperfect information, unwilling to sacrifice trivial liberty to do what is clearly safer for our fellow humans.

<comment><USER2> That is seriously wrongheaded thinking. This is just plain not a war, it is a plague. We do need to make sacrifices, but the ideals expoused in this article, needlessly throwing people into danger out of some misguided ideal of lionizing sacrifice is just going to get more people sick.

</comment></comment></comment><comment><USER4> These two sentences, I think, best summarize the article's position on the topic:

> Instead of taking the summer to hone arguments against returning to the > classroom, administrators and teachers should be thinking about how they can > best support children and their families through a turbulent time. Schools > are essential to the functioning of our society, and that makes teachers > essential workers.

Yes, and many teachers think that the best way to support children and their families is to not put them in a position where they might die. Part of their "essential" function here is in advocating for the safest and most effective learning environment possible. Right now that seems to be attending lessons remotely until it's safe to go back to schools.

That the author thinks it's the duty of teachers to unnecessarily put children in harm's way as if there is no alternative is nothing short of bizarre and I'm disappointed to see it published by the Atlantic.

<comment><USER5> >put them in a position where they might die?

Children or teachers? In the uk we've recorded no deaths for the under 15s from corona and only 339 in the 15 to 44 range. The kids will be fine. [https://www.ons.gov.uk/peoplepopulationandcommunity/birthsde...](https://www.ons.gov.uk/peoplepopulationandcommunity/birthsdeathsandmarriages/deaths/bulletins/deathsregisteredweeklyinenglandandwalesprovisional/weekending24july2020)

<comment><USER6> I would argue that a child with one or more dead parents due to Corona would be harmful

</comment></comment></comment><comment><USER7> Is there any good data on what impact opening schools[1] actually has on the spread of the virus?

Here in Sweden schools were kept open so that essential workers wouldn't have to stay home from work to take care of their children, and that decision doesn't seem to have impacted us negatively [2]. So it seems to me that, unless a child is in an at-risk group, there shouldn't be a negative impact from sending them to school.

The U.S. and Sweden are of course _very different_ countries, so there might be some other factors at play that I haven't thought of.

[1] by schools I mean for kids up to the age of about 15, not universities and the like

[2] [https://www.reuters.com/article/us-health-coronavirus- sweden...](https://www.reuters.com/article/us-health-coronavirus-sweden- schools-idUSKCN24G2IS)

<comment><USER8> We need to be making more science based risk decisions here. The commentary I see on this topic, like this article, are justifications of whatever viewpoint the person is anchored in (due to emotions, political leadership, or personal home situation). HN should be linking to meta-studies on the topic, not opinion pieces.

</comment></comment><comment><USER9> This is disgusting. It's just a "I went through it, so they should, too." argument.

The completely legitimate concerns of teachers are being waved away as emotions.

> It's going to be hard; it's going to be stressful; it's not going to be > perfect.

It's not just going to be "stressful". People are going to die! And she's missing the huge differences between hospitals and schools. Patients don't go back and forth between the hospital and school every day. Students don't have to go to school to avoid death.

Teachers doing their part means refusing to participate in a system that will cause more deaths just so someone else can score political points.

<comment><USER10> Just because their argument appeals to emotion doesn't make the argument for school closure any more valid. There will always be a risk of death in life... what if a child gets the flu? These are remote risks that we accept may happen, we accept them and move on with our lives.

166 children died from the flu in 2019-2020 season, so far there have been 86 child covid deaths. [https://www.aappublications.org/news/2020/04/10/fluupdate041...](https://www.aappublications.org/news/2020/04/10/fluupdate041020) [https://downloads.aap.org/AAP/PDF/AAP%20and%20CHA%20-%20Chil...](https://downloads.aap.org/AAP/PDF/AAP%20and%20CHA%20-%20Children%20and%20COVID-19%20State%20Data%20Report%207.30.20%20FINAL.pdf)

<comment><USER9> I'm not saying her argument appeals to emotion. I'm saying it dismisses teachers' reasoning as emotion. It says that teachers are "nervous", not that they think that reopening schools will put themselves, their students and community at risk.

<comment><USER11> It dismisses their arguments as emotion, because that seems to be the primary argument. Based on the evidence we currently have:

>there is little to no danger for the kids themselves

>they are unlikely to spread to adults if they are infected

>Online doesn't work with teachers not trained to do it

>there are significant dangers to keeping kids out of school, socially and developmentally

</comment></comment></comment></comment><comment><USER12> Does "doing your job" involve the requirement to be willfully complicit in a situation that will guarantee that some of the children you teach and the coworkers you work with will die when they otherwise would not have done?

That might be unavoidably true in medicine; there is no sane justification for why that might be true in education.

<comment><USER13> If that's your standard, then you can never open up schools (or restaurants, or movie theaters, or parks, or beaches) again, at least not until all disease is eradicated. People, including children, have died of the seasonal flu every single year that there have been schools, and many of them contracted it at school.

</comment></comment><comment><USER14> This article is one big strawman. It assumes that teachers' only concern is _their own_ safety, and then attacks that as insufficient reason to threaten "safety strikes" etc. In the process it totally ignores arguments based on the epidemiological effect of premature school openings. Granted, there has been much coverage of the teachers' (and other staff's) own risks, but only because that issue had previously been given insufficient attention. It was never because the risks to the surrounding community didn't matter.

It also ignores a fundamental difference between the roles of nurses and teachers in this pandemic. Nurses have been caring for people who are _already sick_ , and furthermore in an environment where majority of the people in a room understand about infection control. Teachers are trying to _prevent_ spread before it occurs, in an environment where the vast majority of people in the room are kids who can't be expected to follow infection-control protocols. Hospitals also have different HVAC systems than schools do, and by now we should all know why that matters.

Overall, this comes across as a very slanted and ultimately false comparison, more grounded in a sense of grievance over the author's own burdens (which she took on voluntarily) than in any epidemiological or other necessity. It's the "Blue Lives Matter" of school-reopening rhetoric.

</comment><comment><USER15> In addition to the other concerns raised - this article seems to be glossing over the fact that nurses are given extensive training, experience and equipment in how to avoid getting infected by airborne respiratory diseases.

The relation between nurses and diseases is expected to be different from teachers and disease.

</comment><comment><USER16> What a dystopian morning read. This is what happens when leadership fails.

</comment><comment><USER17> I'm in the NJ suburbs, living outside of NY by 30 minutes. The school board recently had a debate and vote about which of a couple different plans should they adopt for the year - whether to do some in person or whether to do all remote. Of course, they did this vote over video conference. If a dozen or so grown adults can't space themselves out in a room for an hour or two and avoid transmission, I don't see how we think that many classrooms consisting of small children will be able to do the same. I agree with other commenters, that the comparisons between the demands on nurses and teachers are quite different and thus not helpful in this case.

</comment><comment><USER18> Are Teachers requesting that they be furloughed without pay or that school district taxes be refunded to tax payers? If not, it seems a bit rich to ask taxpayers to pay for a service they are not receiving.

Additionally - part of that service is not only the academic instruction, but SUPERVISED instruction, breakfast/lunch and sports. Moving classes online comes nowhere close to replacing the original services contracted for.

<comment><USER19> This comes across as callous but it's not wrong.

More to the point, the sad state of affairs is that for many children, being in school is the only time they are well fed, have social interaction, or escape an abusive household. There is a real human cost to closing schools, just as there will be a real human cost if we open them. The question should be what are the relative costs.

</comment></comment><comment><USER20> What saddens me is that she thinks so little of her abilities. Admittedly, I am not a teacher, but I am pretty sure I know as much as them as far as health and infection diseases go. (which is pretty much none) Have nurses and doctors been put at an unnecessary risk through all of this? Absolutely. We should have treated them better, given them better equipment, etc., but that is not the point of this article. What I do know is their knowledge of controlling dangerous diseases and such is vastly superior to mine. They know how to handle themselves to minimize risk way better than teachers or myself do. For one of them to say, "everyone else should just suck it up," greatly diminishes the understanding they have superior knowledge in the field of health and medicine.

<comment><USER21> Nurses acquire a halo effect by their proximity to other medical professionals. Their training doesn't prepare them for processing or understanding the science that underlies their profession, it involves teaching procedures and protocols. Medical professionals in my family have complained about rampant antivaxxism, religiosity (belief in faith healing, etc) and other superstitions in the nurses they work with.

</comment></comment><comment><USER22> Do teachers takes oaths? Do nurses? I was under the impression the medical profession was held to a much higher standard on ethics, assistance, and duty?

<comment><USER23> One of the phrases that's used around this is "duty of care", and teachers (and other members of the educational profession) definitely have one towards their students[1]. It's not a trivial thing, regardless of how (or even if) the two are ordered.

[1] [https://www2.education.vic.gov.au/pal/duty-of- care/policy](https://www2.education.vic.gov.au/pal/duty-of-care/policy)

</comment></comment><comment><USER24> How is this a comparison in risk?? It's literally her job to deal with potentially dangerous situations from sick people.

Most elementary and high schools are underfunded, overcrowded, and probably half full of people who do not take COVID seriously at all.

"But kids can't get it!!" Being asymptomatic != not getting it. The fact that kids are often asymptomatic makes it WORSE not better. Kids are just going to unknowingly spread amongst themselves, amongst their families, and their communities.

Opening the schools is a good way to make her job a lot harder for a lot longer.

</comment><comment><USER25> here in Australia we had home schooling with the support of the teachers. it sucked but it was do-able and it worked.

Much of the US could do that as well, but the real problem i see is that in the US, School is how many children get the only meal of the day they'll get.

that is fucked. the Us let their children and future down in the name of cost cutting and individual responsibility years and years ago.

<comment><USER26> I don't think food is why people want schools to re-open. I'd guess the two reasons are not believing that kids are learning remotely and wanting to be able to go to work.

<comment><USER27> >I don't think food is why people want schools to re-open

It is absolutely one reason.

</comment></comment></comment><comment><USER28> Meh, childcare and education really need to be decoupled. By combining them we have something that effectively provides neither.

Teaching is something that absolutely can be done remotely, the Australians have been doing it forever.

</comment><comment><USER27> Regardless of how quickly we should open schools, this article is thoughtless, immoral, and makes a wildly fallacious analogy.</comment>


Flirting with Elixir - <AUTHOR> http://eng.localytics.com/flirting-with-elixir/ <comment><USER2> I've been "obsessed" with Elixir lately, and it truly is a breath of fresh air in the current programming language landscape.

I've started with C, built a career with backend Python services/dashboards, and spent some time on the "fringe" learning about Lisp, Scheme, Haskell, Clojure. And once you rewire your brain with functional programming constructs or immutability, it is really hard to go back to Python, using large libraries feels too much like magic (if you ever used Django, raise your hands if you've ever had to delve into the source code to understand what is going on).

I've had a fling with Go, I really like some of its ideas, namely static linking, native compilation, no exceptions, easy deploy (I wrote a huge Django 1.6 app shipped as RPM for RHEL 5 enterprise servers, and that was truly the definition of pain). I disliked the lack of functional constructs such as map, reduce, filter, and it felt a step back from the "fringe" languages I've been studying.

Then I discovered Elixir.

It's a mix between Haskell without purity and types and Clojure without parens, with a Ruby-style syntax and a battle-tested framework for concurrency and distributed computing.

It's like an immutable Python. With built-in virtualenv + pip tooling. And first-class macros. And pattern matching.

Pair that with a sane standard library (unit testing? logging? documentation? We've got you covered), a REPL, a LINQ-style lightweight ORM, and a very interesting web framework built around modern tech (websockets, JSON APIs, ES6).

And binary compatible with the most robust concurrency and supervision system, Erlang/OTP.

I know I talk like a fanboy, but, man, programming feels like joy again.

<comment> vezzy-fnord _Haskell without purity and types_

I'm getting quite tired of this "Every functional language I can't precisely describe is like Haskell" sentiment. It's the "tastes like chicken" of programming languages. Then again, the original article is remarkably devoid of content, so I suppose it's only fitting.

Interestingly, avoidance of excessive magic is a large reason why I stick to vanilla Erlang.

<comment><USER2> I agree that the comparison with Haskell is ill fitting.

The sentiment I wanted to express is that Elixir, like Haskell, is built around function (or module) composition, is immutable, and state is idiomatically handled separately (with separate processes and message passing, instead of monads).

<comment> vezzy-fnord Fallacy of composition. You're saying that any language with HOFs, immutability and "idiomatic way to contain state" is ergo Haskell-like, which is insane. None of these are even properties of Elixir, but of Erlang, which Elixir inherits. Erlang is self-evidently not Haskell-like. At best such a language would be merely functional. The actor model isn't even about anything analogous to monads, it's a concurrency model that happens to simplify concurrency control through isolation.

<comment><USER3> > insane

Rather than sling around heavy duty words like "insanity", you might try putting yourself in their shoes: perhaps their only exposure to a functional language is Haskell. Elixir is going to look a lot more like that, than, say, C++.

<comment> vezzy-fnord Irrelevant. Ignorance does not make inapt comparisons retroactively correct.

<comment><USER3> In technical terms, you are of course correct, and it's helpful to point that out where people are wrong. But being wrong is not "insane" \- that's incorrect in and of itself :-)

</comment></comment></comment></comment></comment></comment></comment><comment><USER3> I've been using Erlang on and off since 2003, and used it heavily at the last place I worked to build a pretty cool product, so I'm a fan. That said, this article is a little bit hypey, although it's all correct as far as I can see.

* I'd still build most products in Rails, because there is _so_ much ecosystem that lets you get something up and running quickly. The exception being if I absolutely knew that the system had to aim for really big numbers from the get-go (which is not the kind of market I'm particularly even interested in these days), or had to be super-reliable, or some kind of semi-embedded system like what I did in the last place I worked. I loved Joe Armstrong's answer here: [http://erlang.org/pipermail/erlang-questions/2015-October/08...](http://erlang.org/pipermail/erlang-questions/2015-October/086379.html) \- "My goal would be to get something up and running as soon as possible and get users - and not worry about implementation details."

* By the same token, if you _know_ you need something with raw computing speed, Erlang isn't it either, as the article mentions. Although it'd certainly be possible for Erlang to farm out work to something faster, if the additional architectural complexity isn't a problem.

<comment><USER4> (SRE at Localytics here.)

I think one of the biggest things for us is that, primarily, we run Rails on the frontend and Scala on the backend. Elixir is exciting because we could potentially replace a lot of our frontend stuff with it, while not being terribly far from Ruby syntax. It's "approachable". On the flipside, it's potentially taking our Ruby code and making it more functional, getting closer to our Scala side of things. It's a very nice middle ground.

In that regard, a lot of us here do feel very excited about Elixir, and so I think that comes through as a lot of hype. We're looking at it through the lens of what it could do for us, and we're naturally excited about that. :)

</comment></comment><comment><USER5> I can highly recommend David Thomas' book Programming Elixir, I found it complete to get a good grip and also a great introduction into functional programming overall

[https://pragprog.com/book/elixir/programming- elixir](https://pragprog.com/book/elixir/programming-elixir)

<comment><USER6> Just got the confirmation that Programming Elixir and Metaprogramming Elixir shipped. They can't get here fast enough.

</comment></comment><comment><USER7> I love Elixir. I come from a Ruby background, and while I prefer Elixir now, learning it has made all my code better.

LearnElixir.tv is another great place to learn it, if video screencasts are your thing.

[https://www.learnelixir.tv/](https://www.learnelixir.tv/)

</comment><comment><USER8> My good friend's company is hiring engineer(s) with Elixir knowledge if anyone is interested. [https://discordapp.com/company#join](https://discordapp.com/company#join)

</comment><comment><USER9> Are macros useful in a web development context? I don't feel like I've been missing them in Django, but maybe I've just forgotten because it's been a long time since I wrote anything substantial in Scheme. (Are Elixir macros similar to Scheme macros?)

<comment><USER10> Macros are the most powerful tool for making DSLs, which means they pop up in a lot of "specialized" niches, like web dev. You can make DSLs in other ways, but without the ability to inspect and decompose code at the per-token level, there are limitations to what can be done.

Elixir macros are like Scheme macros; they're fully hygienic (no variable namespace issues), and they evaluate at compile time. The main difference is that Scheme's main syntax construction is the linked list, and Elixir uses a richer data structure, almost equivalent to JSON. Aside from the particular structure the macro's manipulating, the concepts are the same.

Elixir macros are also used idiomatically to allow "smart" loading of modules, e.g. specifying additional code to run in the caller's context rather than the callee's. They fit nicely for this purpose.

<comment><USER11> Elixir is great, and I would loosely say it not homoiconic as Robert Virding, one of the original Erlang team and creator of LFE (Lisp Flavored Erlang), posits in an exchange with Jose Valim, creator of Elixir here[1]. In terms of qualifying a JSON-equivalent data structure as richer, compared to lists in Scheme or Lisp, I would disagree. I think you lose the code-as-data (down to the languages fundamentals) win in Scheme. Devin Torres makes the statement that Elixir is 'strongly homoiconic' [2], but his reference's definition does not fit Elixir [3]. You cannot add new constructs or operators in Elixir. I would say 'weakly homoiconic' if you are going to prefix an adverb on a page that invents terms, which I still think is like 'a little bit pregnant' \- not logically consistent. I do not code for a living, so I can choose things on an interest basis, not a popularity or job market index. I am learning both Elixir and LFE, and Erlang by default, but I am gravitating towards LFE. I think LFE on the BEAM and Clojure on the JVM, makes for a good argument for me to stay in the Lisp world, and not the Ruby, ROR, or Elixir one.

[1] [https://groups.google.com/forum/#!topic/lisp-flavoured- erlan...](https://groups.google.com/forum/#!topic/lisp-flavoured- erlang/ensAkzcEDQQ)

[2] [http://devintorr.es/blog/2013/06/11/elixir-its-not-about- syn...](http://devintorr.es/blog/2013/06/11/elixir-its-not-about-syntax/)

[3] [http://c2.com/cgi/wiki?HomoiconicLanguages](http://c2.com/cgi/wiki?HomoiconicLanguages)

<comment><USER10> Thanks for the reply! I read the "[1]" link you posted, and the word "homoiconic" doesn't appear anywhere. Elixir code and data share the same native data structures, ergo Elixir is homoiconic. Virding's point is that Elixir lacks reader macros. For real-world usage, I consider that more of a strength than a weakness. :)</comment></comment></comment></comment>


Ask HN: How do I improve my memory? - <AUTHOR> I feel like my lack of discipline over the years has gotten me to a point where both my short term memory and my long term memory have suffered greatly. I have trouble focusing and holding pieces of non trivial systems in my head. Sometimes, at the end of the day, I barely remember any of the interesting things I've read during the day. A day after watching a technical presentation, I barely remember the main points it addressed.<p>I'm not looking for quick solutions, but rather what exercises or life style changes should I adopt to improve my memory? <comment><USER2> Journal writing. Spend ten (or 30) minutes each evening writing about what you learned that day. This will (a) get you in the habit of noticing things that you want to remember ("huh, must note that in my journal"), (b) have you spend time reviewing each day, helping to embed it in your memory and (c) practice the art of recall. Bonus points if you then do a weekly summary journal entry.

</comment><comment><USER3> The first memory booster I found was a tea from the local herb store called "An Elephant Never Forgets".

Anything that improves the brain's ability to burn sugar - that is, optimizes brain's metabolism - is good for memory.</comment>


Tarsnap Mastery - <AUTHOR> https://www.michaelwlucas.com/nonfiction/tarsnap

<comment><USER2> I don't know if anyone will see this comment, but for the record Michael wrote a really fantastic book here.

</comment><comment><USER3> It's a shame this didn't get any traction. You might try posting again with a more descriptive title.</comment>


DOJ Closing Bank Accounts for "undesirable" but legal businesses/employees - <AUTHOR> http://www.outsidethebeltway.com/chase-closing-porn-stars-bank-accounts/

<comment><USER2> Actual headline from source article: "Chase Closing Porn Star's Bank Accounts"

First line of text (emphasis added): "Chase Bank has been closing the accounts of porn stars and others affiliated with the adult film industry, and the Federal Government _may_ have something to do with it"

Then later it points to articles about Operation Choke Point that have already been discussed here recently.</comment>


I Pay for News; Why Do I Still See Intrusive Ads? (2017) - <AUTHOR> https://www.kirkville.com/i-pay-for-news-why-do-i-still-see-ads/ <comment><USER3> The answer may not be pleasing, but it's true: because "paid subscribers" represent a valuable advertising demographic/segment. They are nearly certain you are human traffic, and you have enough disposable income that you pay for news.

<comment><USER4> You can pretty much make this argument for everything - Ferraris should be plastered by LCDs with ads then. Business class airplanes filled with blinking video ads. Entrances to highend butiques crowded with people pushing ad leaflets into rich peoples hands....

Why is it acceptable on the web?

<comment><USER3> This does happen in other places. Do you ever notice that your in-flight magazine has ads? You've already paid for the flight. Your in-theater movie kicks off with trailers and previews -- you have already paid for the movie ticket. And so on.

<comment><USER5> > Do you ever notice that your in-flight magazine has ads?

Yes. And on a recent trip to India, it got even worse. SpiceJet (domestic airlines) has ads on the back of the headrest of EVERY SEAT.

Physical paper printed Ads!

So you are staring at it for the entirety of your trip. I kid you not.

<comment><USER6> Wait until screens get cheap enough... you'll have 4k ads rolling on each screen that are tailored from your name in your ticket.

<comment><USER7> This happens in the back of cabs in a lot of places I seem to remember and it's incredibly difficult to switch off... we essentially are heading for some super weird dystopian sci-fi film right now. It's terrifying.

<comment><USER8> The adverts are why I et uber in New York rather than taxis.

<comment><USER9> I've been in an Uber that had a iPad rigged up to play ads to the passengers in the back seat.

Good thing you get to rate at the end of the trip, which would (hopefully) put a stop to that.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> This seems to be a re-occuring pattern: have ads on a free/cheap service, introduce a paid service, place ads on the paid service, then hope if you hold out long enough people will forget there was a time when your paid service was ad free.

Prime example: Cable tv

[https://www.nytimes.com/1981/07/26/arts/will-cable-tv-be- inv...](https://www.nytimes.com/1981/07/26/arts/will-cable-tv-be-invaded-by- commercials.html)

<comment><USER11> Newspapers and magazines have always included ads along with the subscription price. Difference is more that online ads are way more trashy and distracting and terrible for privacy so there's more reason for pushback.

</comment></comment><comment><USER12> If you're a subscriber, you're the most valuable advertising target. You've shown a willingness to pay for stuff on the internet. Furthermore, advertisers are targeting people who read those publications regularly. Subscribers are those people.

If you wanted an ad-free subscription, it would cost substantially more than you currently pay to made up for the lost advertising revenue.

<comment><USER13> Even if, let's say, you WERE to pay substantially more than what you currently pay, the vendor might see fit to extract the maximum amount of value from you, so serve you adds they will. The only way I think they would not serve you adds is if they would lose more money (customers) if they were to serve adds.

But people have proven they are mostly OK with ads, they don't mind them (since so many services online are fueled by them and people use them).

<comment><USER14> > _But people have proven they are mostly OK with ads, they don 't mind them > (since so many services online are fueled by them and people use them)._

Let's remember that people generally have zero choice in the matter.

<comment><USER15> That's absolutely not true. You could just not use the service. I think what you mean is that you have no way to get the service without the ads, so you're willing to put up with the ads to get the service. Which is the whole point.

<comment><USER14> > _I think what you mean is that you have no way to get the service without > the ads, so you 're willing to put up with the ads to get the service. Which > is the whole point._

Well, that's what I mean. You often can't get the service without ads, as competitors show the same amount of ads.

Hell, these days you can't do anything, be it on-line or in meatspace, without being exposed to a steady stream of ads. There is no choice for ad-free life, unless you take the word "choice" so literally you accept moving to some remote location and living off land as a viable option for regular people.

</comment></comment></comment></comment></comment><comment><USER16> There are ads in the paper newspaper I subscribe to as well. Real reporting and quality writing don't come cheaply, and that hasn't changed just because the delivery method did. Probably neither the author nor I would be willing to pay for a subscription without ad subsidies.

<comment><USER17> Out of curiosity, does anyone have a ballpark estimate for what a no-ad online subscription would cost if we assume the parent is true?

<comment><USER15> According to the New York Times latest earnings call, subscriptions account for 2/3 of their revenue. So ballpark roughly 50% more than the current subscription price would be necessary to maintain revenue at the same subscriber count sans other revenue streams.

<comment><USER18> Don't think that's quite the right calculation.

Revenue = subscriber revenue + ad revenue from ads shown to subscribers + ad revenue from ads shown to non-subscribers

The suggestions was to eliminate the middle piece and increase the subscription price to make up for it in the first piece. That's still leaves the last piece.

<comment><USER15> No. The times only allows readers to read 5 articles before signing up, meaning they're effectively subscribers only.

<comment><USER18> As I understand it there are a whole lot of leaks in that paywall. In fact, doesn't HN have a built in workaround?

<comment><USER15> This argument is getting really tired, it's true of literally every service online. Yes there are loopholes, no they don't matter. The barrier is just high enough that a great many people just pay up.

</comment></comment></comment></comment></comment></comment></comment><comment><USER19> Some numbers for perspective [1]:

Digital-only subscription revenue in 2017: $340 million

Digital advertising revenue in 2017: $238 million

Obviously some digital advertising is shown to print subscribers logging in too... but if we ignore that for simplicity, without ads your NYT digital subscription would be 70% more expensive.

At $195/yr. for digital-only, it's already my most expensive subscription by a significant amount. If it were 70% more, or $331.50/yr, I imagine subscriptions would drop by a lot -- that's a _lot_ of money for news.

So... that's presumably why there are still ads. Gotta pay the reporters somehow.

On the other hand, the New Yorker bugging you to subscribe is just lazy programming, and I hate it too.

[1] [https://www.nytimes.com/2018/02/08/business/new-york- times-c...](https://www.nytimes.com/2018/02/08/business/new-york-times- company-earnings.html)

<comment><USER20> Here are some more recent numbers [1]:

Quarter 1 2018:

$414m total revenue

$260m subscription revenue (62% of total)

$154m non-subscription revenue (38% of total)

$46.7m digital advertising revenue (37% of total advertising revenue)

$126.2m total advertising revenue

If you cut digital advertising completely, not just for subscribers, you could make it up by increasing subscription price by around 10%, assuming 100% of subscribers would bear the new price.

The interesting statistic that we don't have is how much digital advertising revenue comes from paid vs unpaid readers.

[1] [https://www.nytimes.com/2018/05/03/business/media/new- york-t...](https://www.nytimes.com/2018/05/03/business/media/new-york-times- earnings.html)

<comment><USER19> Not sure I follow. If you're using 46.7/260 that's an 18% increase (not 10%), but that's _all_ subscribers (including print), not just digital.

So a yearly print subscription would go from $422.50 to $500 here in New York.

I'm not sure print subscribers would want to subsidize digital readers like that, especially when their own print edition is already chock-full of ads.

<comment><USER20> Now that I look back at it, I have no idea how I came up with that percentage.

</comment></comment></comment></comment><comment><USER21> You know the old saw about "if you don't pay for the product, you are the product"? It's not "if and only if".

</comment><comment><USER22> They ruined any trust between advertisers and consumers through deceptive, bad faith tactics, and reduced the entire equation to pure game theory. If an advertiser can figure out how to get their ad copy past my sophisticated filtering attempts and get into my mind in a memorable way, then more power to them. Otherwise they don't have any "right" to exist and make money off stealing my time and resources, both mental and compute.

</comment><comment><USER23> I subbed to the nytimes for a single month before I realized they did not disable ads for paid subscribers. So dumb and toxic.

Edit: typo

</comment><comment><USER24> It's the problem with news websites/magazines/paper. They live because there are ads in it.

And so would they criticize companies that put a lot of cash on them ? Perhaps. May be not.

In France, we have a news website [0] which is totally independent, and only accessible for paying subscribers. It took them a few years and now they are earning money.

You might or might not agree with their editorial line, but the fact is that they can investigate any company without hesitation.

It's hard, but I think it's the only way to have an independent information.

[0] [https://www.mediapart.fr](https://www.mediapart.fr)

</comment><comment><USER25> So much for "if you're not paying you're the product". Seems like if you're paying, you're still the product.

</comment><comment><USER26> When I was young my family paid for cable TV when the rest of the neighborhood still had antennas on their roofs because pay TV didn't have commercials.

Now I pay for cable TV _and_ it's jammed full of commercials.

The idea that free online services aren't really free because we pay with our attention and with our data is only half true.

Paid online services also take our data and increasingly interrupt us with advertisements, just like cable TV.

<comment><USER27> And we have TV shows with built-in ads (esp sports), and channels running promos in the bottom right corner.

I guess were not saturated quite yet...

</comment></comment><comment><USER28> I want to know, how much does it truly cost for the same content without ads. What would the actual pricetag be, if we built in the overhead added by advertising and marketing into the fee for the product or service itself?

<comment><USER8> Peanuts. I don't subscribe to sky tv in the uk for £30 a month because they also get £5 a month extra from 30% of the time showing ads.

The same subscription with out adverts would be £35 a month, basically the same price.

</comment></comment><comment><USER29> > Why do I still see ads?

Because you haven't installed an ad blocker yet. Get uBlock Origin, enable all the filters and don't look back.

</comment><comment><USER30> Because not showing you ads would be "leaving money on the table" and that just won't do.

If not showing ads wasn't part of the deal, ads will be shown. If not harvesting your personal data wasn't part of the deal, personal data will be harvested.

That you paid money is irrelevant.

</comment><comment><USER31> The restriction on the number of articles is how the news publishers incentivize subscriptions -- subscribing unlocks more articles per week/month/whatever. They are going to advertise either way.

Paper newspapers always had ads too. Subscribers didn't get a different version of the paper without the ads. Ads have been a deeply ingrained part of the news business for over 100 years and they aren't going to stop now.

</comment><comment><USER32> As said: "The fact that you pay for subscription, doesn't mean you aren't the product for publishers to advertisers"

</comment><comment><USER33> I had to close two pop ups to read this article. So there's that.

<comment><USER14> Advertising really is a cancer on society.

<comment><USER34> ...or is it capitalism?

</comment></comment></comment><comment><USER35> In a nutshell: Because they make more money that way.

</comment><comment><USER36> What rights does paying for something ever give you?

<comment><USER14> None. But the common view is that people have to view ads in lieu of paying. Turns out that even if you pay, you'll still be exploited.

</comment></comment><comment><USER37> If newspapers could have a woeking business model without advertising I'm sure many would. The theory on the web is that if you take away ads for paid subscribers you'll not be able to ever add them back. Personally a cheaper subscription with an ad-lite, or tracking-free(GDPR opt out style) experience and a full price subscription for no ads seems like a fair deal. Thoughts? Disclosure: I work at a comscore 50 publisher. We are currently ad only and designing a subscription product so feedback is very welcome and timely.

</comment><comment><USER38> Hulu, to me, has the perfect model: limited content for free, full content with ads for a subscription fee, full content with no ads for a (slightly) higher subscription fee.

<comment><USER39> I thought Hulu quit free streams a few years ago?

</comment></comment><comment><USER40> You're paying for content not ad free. Maybe they will make us pay twice. Once for the service, then next level to remove ad.

</comment><comment><USER41> To everyone making the obvious point: yes, obviously, there is potentially money to be made from this richer demographic. But that doesn't explain why they have to make the ads so intrusive or site-breaking.

Remember, something stops Ferrari from blanketing the dash with ads. Why doesn't that same dynamic apply here?

</comment><comment><USER42> This type of thing is the thumbprint of management by sociopathy. "Why does nobody subscribe to us and leave us so ad dependent!" They cry. Just like complaints about lack of employee loyalty after they do stuff like layoffs to inflate quarterly earnings and look at pension funds as piggy banks and refuse to give raises. Then complain about people leaving for career advancement when they won't even give Cost of Living raises. The same pattern regardless - <USER2> something for short term gain that creates a long term problem and try to pass the buck. And it wasn't their fault because they were entitled to the short term gains. They are incapable of understanding why trying to get paid twice for the same thing is a bad thing or why you should never trust anyone who attempts that. To them trust is something they are entitled by position to regardless of how they mistreat people.

In my opinion the best thing to do with them in response is banish them. Don't invest in them or patronize them as much as possible as they are clearly out to screw you over. If you are in management of a position to do so oust them as soon as possible. Sadly they are a goddamn plague and hard to oust.

<comment><USER14> We have a systemic problem though. This kind of sociopathy is pretty much legitimized, and being specialized in it is treated as respectable occupation.

</comment></comment><comment><USER43> Because you are still paying for news even though you are seeing intrusive ads.

</comment><comment><USER44> (2017)

<comment><USER45> Added. Thanks!

</comment></comment><comment><USER46> Because free markets don't always produce ideal outcomes for consumers.

</comment><comment><USER47> > Of course, you only get a limited number of free articles per month if you > don't subscribe.

Wait until the author learns about clearing cookies.

<comment><USER34> ...or even better: Cookie AutoDelete

</comment></comment><comment><USER48> What if your paid subscription is only covering a portion of the service and the full price is subsidized by the ads?

<comment><USER14> It's still sad that those companies can't offer the most basic, ethical option - providing value in exchange for money. No, the choice is only between getting crap shoved at you for free, and getting the same amount of crap for money.

</comment></comment><comment><USER49> Imagine a pair of augmented reality glasses, capable to filter all ads shown to you. A layer to end all layers.

</comment><comment><USER50> I pay for nyt. They still played annoying video ads. So I removed their app; I access it via Firefox.

</comment><comment><USER51> Shareholder's demand insane growth every quarter. Can't leave money on the table.

</comment><comment><USER52> I pay for Ars Technica, definitely wouldn't if paying didn't disable the ads.

<comment><USER53> The articles are ads.

Eg. [https://twitter.com/arstechnica/status/1051475468199833600](https://twitter.com/arstechnica/status/1051475468199833600)

<comment><USER54> That's a car review, not an advertisement. If you actually read it, they don't even like it much.

>Meh. All-in-all, the Lexus NX 300h is an uninspiring car. If you like hybrids and want to drive one with a luxury badge, the NX 300h is worth looking at. I would have liked the option to suck the battery dry before the internal combustion engine kicks in (à la the plug-in Chrysler Pacifica hybrid). Instead, EV Mode in the NX 300h is limited to low speeds.

</comment></comment></comment><comment><USER55> The very publication you're subscribing to also shows ads to it's print subscribers. I don't think ther was ever an implicit promise that subscriptions remove ads, I'm not even sure why you'd expect that from a publication that's been doing it that way for decades...

</comment><comment><USER56> "By the way if anyone here is in advertising or marketing…kill yourself. It's just a little thought; I'm just trying to plant seeds. Maybe one day they'll take root – I don't know. You try, you do what you can." \--Bill Hicks

</comment><comment><USER57> Why do you still pay for that stupidity?

<comment><USER45> We've asked you repeatedly to stop posting unsubstantive comments to Hacker News. If you can't or won't stop, we're going to have to ban your account, so please fix this.</comment></comment>


Graph Coloring, or Proof by Crayon - <AUTHOR> http://jeremykun.wordpress.com/2011/07/14/graph-coloring-or-proof-by-crayon/ <comment><USER7> My dad was a mathemetician ("was" as in he died in 2001, otherwise I'd be sending this to him to comment on). I never understood most of what he did, but I know that some of the work he did was based on or related to the four- color proof referenced here. I once had a slightly less math intensive book (but still very academic) mainly about the four color theorem that referenced one of his papers as well, but alas I don't have it handy to find the relevant quote. I don't know where my copy went, but I bet my mom still has one.

I don't know that I have a point to this really other than to say that this post reminded me of my Dad, and all the things I haven't been able to send him links to for the last 11 years.

</comment><comment><USER8> I find it amazing that people with such a deep and detailed grasp of mathematics such as this person are able to also express very advanced concepts in layman's terms through real-world examples and practical applications.

I'm only a semi-advanced secondary school student, so many of the concepts are way over my head at this point. Things like this article serve as catalysts to curiosity and are inspirations to pursue the study of the mathematics.

<comment><USER9> That's pretty much what I came to post here, but way more eloquent than when I would've written it :)

Articles like this make me realize that what was the most boring subject in school 10 years ago, is now quickly becoming my favorite tool in the world. Gotta love mathematics.

</comment></comment><comment><USER10> If people want more like this, _Introductory Graph Theory_ by Chartrand is an enjoying and easy read. In fact it looks like Dover has all kinds of short treatments of math subjects suitable to the layperson. And if you don't know about Martin Gardner, you really must check him out! _The Colossal Book of Mathematics_ and _The Night is Large_ are both wonderful big collections, and there are tons of smaller sets of essays.

<comment><USER11> Another enjoyable book on this topic is "The Mathematical Coloring Book" by Alexander Soifer: [http://www.amazon.com/Mathematical-Coloring-Book- Mathematics...](http://www.amazon.com/Mathematical-Coloring-Book-Mathematics- Colorful/dp/0387746404)

</comment></comment><comment><USER12> In case anyone is wondering: Paris is not 3-colourable. The proof is trivial, by looking at region 6 and its neighbours.

<comment><USER13> Specifically:

6 - <USER6>

7 - <USER3>

1 - <USER5>

15 - <USER5>

16 - <USER6>

8 - Cannot be R G or B

<comment><USER14> Is there any way to translate between this rather visual proof and the degrees of 8's neighbouring vertices?

I tried to find if there was some theory behind it but all I could really find was "saturation degree".

<comment><AUTHOR> Not really, no. There are many, many results about when something is and is not three-colorable, but in the end, graph three coloring is NP-Complete.

<comment><USER14> Thanks!

</comment></comment></comment></comment></comment><comment><USER15> _So indeed it is true! We may color every map with just four colors!_

Not true. A map of a country with four or more enclaves (e.g. late 19th century China) would not meet this condition.

<comment><USER16> Why can't you color every enclave the same color - something different from the province they're inside of?

The traditional 4-color map rule only says that each neighboring region has a different color, not that the colors are meaningful.

<comment><AUTHOR> In mapping, enclaves are usually colored the same as the "parent" country to which they belong. It's an additional restriction that's actually well catered for in the generic graph coloring context, as opposed to the "map" coloring of the original problem (which did not bother with the enclave issue).

</comment></comment></comment><comment><USER17> I don't understand why the Costa Rica example is 3-colorable. The green province in the middle touches 5 other provinces so it seems like it should be 5-colorable.

<comment><AUTHOR> Consider a pizza sliced into six pieces. Each piece touches only their neighbor on each side, so you can color them alternately red and blue. Now suppose someone carved an island in the middle around an olive that no one wants. That touches all six, but can still be colored green, so we use only three colors in total, despite the middle "region" having six neighbors.

</comment></comment><comment><USER18> I don't know Paris specifically, but but nautilusy spiral happens (in anthropology, and also biology) when new growth happens that the position closest to the center, which is a natural goal when proximity is a desirable feature (minimized construction costs, maximize access to community, minimize outer perimeter for defense, etc)

<comment><USER19> I'm not sure this case can actually be said to be nautilusy rather than simply uneven concentric circles.</comment></comment>


On being the maintainer and sole developer of SPITBOL (2012) - <AUTHOR> http://daveshields.me/2012/09/02/on-being-the-maintainer-sole-developer-and-probably-the-sole-active-user-of-the-programming-language-spitbol/ <comment><USER2> This is from 2012.

He's wrong of course about being the only user.

I love this software, along with k/q. I admire the work Mr. Shields has put into this project. I especially like the use of musl and provision of static binaries.

I do not use Perl, Java, Python, Javascript, Go, Rust, Closure, etc., etc. Whatever the majority of people are recommending, that is generally not what I use. It just does not appeal to me.

I guess I am stubborn and stupid: I like assembly languages, SPITBOL, k/q, and stuff written by djb. Keep it terse. Ignore the critics.

Yet this is now on the front page of HN. Maybe because it is the weekend? I really doubt that the software I like with ever become popular. But who knows? Maybe 10 years from now I will look at this post and marvel at how things turned out.

There is no "structured programming" with spitbol. No curly braces. Gotos get the job done. Personally, I do not mind gotos. It feels closer to the reality of how a computer operates.

Would be nice if spitbol was ported to BSD in additon to Linux and OSX. As with k/q I settle for Linux emulation under BSD.

<comment><USER3> Fascinating, I'm curious, what do you do with such languages and tools? I'm not trolling or trying to start a flame war, I'm genuinely curious as to the best use of these tools. Also - are you doing it as a hobbit, or commercially (or both)? How did you discover this tech?

<comment><USER4> > are you doing it as a hobbit

Thanks for that typo, I laughed immediately after drinking some tea and now it's all over my monitor :(

<comment><USER5> Bilbo Bugends

</comment></comment></comment></comment><comment><USER6> The first programming language I used was WATFIV, a Waterloo FORTRAN implementation. It seemed straightforward, and if that's all there was to programming, I probably would have dropped it in 1974 to play more D&D. FORTRAN felt like the same arithmetic I already knew how to use. It was obviously way more powerful to use a program to do calculations, but it was all stuff I could have done by hand or with a calculator.

But one day, as I waited for a keypunch to make some changes to some program or other I was writing, my eye fell upon a copy of the Green Book left behind by some other programmer. I started reading it, and my little mind was completely blown.

SNOBOL was something else, it forced me to think about programs in a completely different way. It wasn't about specifying steps to be taken one by one, it was about designing a way to pattern match.

And more than in the obvious, RegExp way, but you could do things as the pattern was matching, and thus you were writing a kind of program where the control flow was determined my backtracking and success or failure of matches.

To this day, my programming is highly influenced by one feature of SNOBOL, I guess it "imprinted" on me: Patterns are first-class values (like regular expressions in other languages), but they are also composable, there is an arithmetic of patterns. To this day I favour designs where things can be composed and decomposed at will rather than used as opaque, monolithic entities.

I'm not saying SNOBOL was better than the FP and OOP and multi-paradigm languages that dominate today, but the experience of learning a new way to think was intoxicating, and once a year or so I re-read the Green Book and think about thinking differently.

If you are interested, I highly recommend you read the whole book. If you see "pattern matching" and think "Regular Expressions," you will miss the forest for the trees. I'm not sure that anybody needs to _know_ SNOBOL (or its descendants), but I think that it's a valuable exercise to learn it once.

"A language that doesn't affect the way you think about programming, is not worth knowing."

\--Alan Perlis

<comment><AUTHOR> The Green Book you mention is available for download on the Google Code page for SPITBOL:

[https://code.google.com/p/spitbol/downloads/list](https://code.google.com/p/spitbol/downloads/list)

</comment></comment><comment><USER7> I love SNOBOL4/SPITBOL. It was a completely bizarre and original language that was quite powerful.

In the late 70s, I took two compiler courses with RBK Dewar, one of the creators of SPITBOL. Those courses were wonderful. He mentioned SPITBOL occasionally, and I remember one story in particular. The implementation was done in assembler, (if I'm remembering correctly), and it took 20 runs to get a working system, (I guess that means a basic suite of tests running successfully). That style of working is completely alien today, and arguably less effective.

Dewar also spent some time talking about his work on the SETL language (for processing sets). Flow analysis for global optimization could be expressed extremely concisely, and was of course applied to SETL itself.

<comment><USER8> I took some undergrad courses with Prof Dewar in the 90s and all he talked about was Ada and Assembly (using an assembler he wrote). Never heard of SPITBOL. His class was great.

<comment><USER7> Forgot to mention it in my original comment, but in the grad-level compiler course, we actually wrote a compiler in SPITBOL. I don't remember if the language choice was optional or mandatory, but I did enjoy it.

</comment></comment></comment><comment><USER9> Since this is all about obscure languages, it maybe worth pointing out here that the original INTERCAL compiler was written in SPITBOL.

On one or two occasions I asked Don Woods to clarify some feature of the language that was incompletely described in the original INTERCAL document, and he dug out the original SPITBOL code in order to answer my question.

<comment><USER10> I was project manager over a FORTRAN project in the early 1980's. I remember very clearly how our team's productivity went up as well as satisfaction when the developers starting using the Ratfor (Rational Fortran) preprocessor. [https://en.wikipedia.org/wiki/Ratfor](https://en.wikipedia.org/wiki/Ratfor)

At the time I did not realize that Brian Kernighan created Ratfor. Ratfor changed my thinking about program structure and coding style more than any other single event in my professional life.

</comment></comment><comment><USER11> If you're searching for examples, search instead for SNOBOL.

From Wikipedia: > SPITBOL (Speedy Implementation of SNOBOL) is a compiled implementation of the SNOBOL4 language.

Also from wikipedia SNOBOL page shows some examples: [https://en.wikipedia.org/wiki/SNOBOL](https://en.wikipedia.org/wiki/SNOBOL)

And C2 talks about it as well: [http://c2.com/cgi/wiki?SnobolLanguage](http://c2.com/cgi/wiki?SnobolLanguage)

</comment><comment><USER12> [https://github.com/spitbol/x64/blob/master/demos/sentenc.sbl](https://github.com/spitbol/x64/blob/master/demos/sentenc.sbl)

In Python, you would probably use regex for the pattern matching. In SPITBOL, you can accomplish the task at the language level. I doubt the pattern matching is as capable as regex but that's a useful feature to have (edit: based on braythwayt's comment, it sounds like the pattern matching is more capable than regex). It might be better suited to NLP tasks. According to the developer, "SPITBOL is unique in the power it provides to manipulate strings and text. I've yet to see anything else come close."

See Zuider's comment for more information.

I hope all-caps-keywords is optional.

<comment><USER13> Wikipedia says that the parsing can handle CFGs, which means it is strictly more powerful than regex.

"SNOBOL4 patterns subsume BNF grammars, which are equivalent to context-free grammars and more powerful than regular expressions." \- [https://en.wikipedia.org/wiki/SNOBOL](https://en.wikipedia.org/wiki/SNOBOL)

</comment></comment><comment><USER14> > Can you name a widely-used contemporary programming language that still uses > the 60's software technology of reference counts to manage storage?

As opposed to the 50's software technology of garbage collection?

What an off-putting remark to include.

<comment><USER15> Yes, age here is irrelevant.

At the very least, Objective-C, Swift and PHP still use reference counting.

<comment><USER16> And C++11 just got reference counting as an official library option.

Reference counting is _better_ than mark-and-sweep GC for several use cases:

* Real time code where you don't _ever_ want a GC to steal cycles. I know that a lot of research has been done to decrease the amount of time stolen, but it's always non-zero.

* Immediate, deterministic clean-up of resources as soon as they are no longer referenced: If you have a limited number of file handles, for instance, you want them closed ASAP, and not when some GC decides it's time.

* No performance penalty for having weak references. I use this in asset management: A map of asset handles to weak references to currently loaded assets. If an asset is no longer used, it's deallocated immediately. Having weak references in a GC system can increase processing complexity.

<comment><USER17> Reference counting in C++ can be done really well even in the absence of language support.

For example, with the Qt library you can pass objects around by value, yet behind the scenes everything is reference counted with automatic copy-on- write. It's the best of all worlds. You get easy, value-based coding (no pointers), speed (because deep down everything is a reference), and deterministic destruction (no GC). [http://doc.qt.io/qt-5/implicit- sharing.html](http://doc.qt.io/qt-5/implicit-sharing.html)

I'm curious if any languages have adopted a Qt-style approach natively.

<comment><USER18> I know for sure the K (of the J / K / APL) family does, and I suspect they all do.

</comment></comment></comment></comment></comment><comment><USER19> A few years back, Dr. Dobb's posted a pretty great series of articles on some of the techniques RBK Dewar employed when building the original SPITBOL compiler: [http://www.drdobbs.com/cpp/some-programs-are-poorly- designed...](http://www.drdobbs.com/cpp/some-programs-are-poorly-designed-on- pur/232300070)

(I was lucky enough to study compilers under Prof. Dewar when I was a grad student at NYU - I still have my notes on SPITBOL's architecture, somewhere…)

<comment><USER20> Excellent article, very clever optimizations given the tradeoffs. From the article:

> We were talking about students' tendency to let the compiler substitute for > thinking

This is actually why I use OCaml. Not going to comment on whether useful error messages are a detriment to pedagogy, but offloading thinking to the compiler is a lifesaver.

<comment><USER21> Definitely. It doesn't prevent, say, off-by-one errors (and in general, errors when you manipulate several items of the same type), but if you structure your program correctly, you can be very confident about your code.

Though OCaml's errors are not always the most explicit or nicely written.

</comment></comment></comment><comment><USER22> I first encountered SNOBOL when I was 15, running an implementation on an old IBM 360 at university. It was the 3rd language I mastered (after Fortran and an early T/S version of Basic...both on the same 360) and the first I completely fell in love with.

It awoken me to just how different and amazing a programming language could be and bent my mind around something very different than what I'd been doing with Fortran. It was an entirely new way to think about designing solutions.

Years later when I was introduced to Prolog, everything thing felt very much at home...Prolog's backtracking algorithm being very much like SNOBOL's pattern matching system.

Of all the languages I've worked with over the years, SNOBOL and FORTH are in class by themselves for how they informed my thinking about problem solving...lessons I carried with me in work done in many other languages.

It's a shame that both languages have passed into history...they each had subtle things to teach a developer just learning their craft...

</comment><comment><USER23> I think parser combinator libraries are pretty similar. In Haskell, people often use Parsec instead of regular expressions.

</comment><comment><USER24> _> SPITBOL is unique in the power it provides to manipulate strings and text. I've yet to see anything else come close._

Can anyone elaborate on this?

<comment><AUTHOR> From Wikipedia entry on SNOBOL/SPITBOL

'SNOBOL4 stands apart from most programming languages by having patterns as a first-class data type (i.e. a data type whose values can be manipulated in all ways permitted to any other data type in the programming language) and by providing operators for pattern concatenation and alternation. Strings generated during execution can be treated as programs and executed.'

By contrast, other languages such favor the use of regular expressions.

I am not so sure about the claim to uniquness. Ralph Griswald went on to develop the Icon language which included this feature. The Unicon language, a superset of Icon also has this distinction.

<comment><USER24> I'm having a hard time understanding the parenthetical. If you grok it, and could take a moment to explain it in your own words -- or give an example of its use -- I'd very much appreciate it. Thanks!

<comment><USER6> If you have a pattern that matches FIRSTNAME and another that matches LASTNAME, roughly:

        FULLNAME = FIRSTNAME LASTNAME

Whitespace is a catenation operator, and catenating two patterns gives you a new pattern that matches a string matching the first and the second pattern.

Maybe you want to handle old-school people like raganwald:

        OLDSCHOOLNAME = LASTNAME ', ' FIRSTNAME

Or both:

        ANYNAME = FULLNAME | OLDSCHOOLNAME

The vertical bar is an alternate operator.

Regular expressions work the same way, but in most languages, the regular expression language is really a DSL embedded in the syntax for a regular expression literal. Whereas in SNOBOL, all those operators are ordinary language operators and you can use them anywhere.

So you can manipulate patterns programatically.

<comment><USER25> How does that differ from a parser combinator library beyond that it's baked into the language? It took a few decades for other languages to catch up, but patterns being first-class objects that can be combined in various ways isn't that unusual. For example, in Lua with LPeg those examples would be:

        full_name = first_name * last_name
        old_school_name = last_name * P', ' * first_name
        any_name = full_name + old_school_name

        (* is sequence, + is or, P is a function that converts a string to a pattern)

<comment><USER26> While I don't remember enough Snobol to say, in Icon _every_ expression may participate in the pattern-matching search process. For example, `a < b` doesn't produce a boolean value, it either fails (cutting off the current branch of the search) or succeeds (producing b's value as its value, so you can write `a < b < c` with the conventional meaning without any special handling of that form of comparison).

That's the kind of way that patterns are more deeply baked into these languages.

</comment></comment></comment></comment></comment></comment><comment><USER27> This makes me think of a generic assembler I wrote at one point (in C++ I think, I should put it on github). The idea was that you could define the instruction set right in the assembly source. It included a backtracking BNF parser to support it with these pseudo ops:

       .rule name value pattern  ; Define a syntax rule

       .insn pattern    ; Define an instruction
           ...            ; Macro expanded on pattern match
       .end

       "pattern" contains literal characters, whitespace and
       references to other rules with "<rule-name>" or <expr>
       for a math expression.

       "value" is a comma separated list of expressions which
       can contain "argN" to reference the Nth value from the
       pattern (as returned by embedded rules).

        For example, this is how you could construct the
        instructions "lda <expr>", "lda #<expr>", "ldb <expr>",
        and "ldb #<expr>":

       .rule dual 0x01 lda
       .rule dual 0x02 ldb
       .rule mode 0xf8,arg1 <expr>
       .rule mode 0xfa,arg1 #<expr>

       .insn <dual> <mode>
          .byte arg1|arg2  ; Emit op-code
          .word arg3       ; Emit argument
       .end

SNOBOL4 itself is not an assembler, but I think you could make one like this from it.

<comment><USER28> This is a very interesting idea, and I have been finding inspiration in it. New machine architectures by way of #include files! Or cat! I've been thinking that maybe the right compile-time programming model is something like term- rewriting (more or less like C++ templates or Prolog or Aardappel) rather than textual substitution. I wrote some more thoughts on the matter at [https://lobste.rs/s/kfpsou/what_is_everyone_working_on_this_...](https://lobste.rs/s/kfpsou/what_is_everyone_working_on_this_week/comments/sfij7y#c_sfij7y) but I still haven't gotten very far on it.

</comment></comment><comment><USER29> Just found this on wikipedia: SnoPy, snobol pattern matching for python.

[http://snopy.sourceforge.net/user- guide.html](http://snopy.sourceforge.net/user-guide.html)

</comment><comment><AUTHOR> SPITBOL is an enhanced version of the SNOBOL language.

From Wikipedia:

SNOBOL (StriNg Oriented and symBOlic Language) is a series of computer programming languages developed between 1962 and 1967 at AT&T Bell Laboratories by David J. Farber, Ralph E. Griswold and Ivan P. Polonsky, culminating in SNOBOL4.

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

TkS*LIDE is a Tcl/Tk based IDE for SPITBOL (along with SNOBOL4). Binaries for SNOBOL4 and SPITBOL are included with the IDE, along with a tutorial and sample programs.

[http://rms.republika.pl/slide.html](http://rms.republika.pl/slide.html)

SNOBOL is also distinguished by being described in Guy Steele & Richard Gabriel: 50 in 50 speech as one of the three languages worth knowing:

[https://vimeo.com/25958308](https://vimeo.com/25958308)

</comment><comment><USER30> > I have several reasons to push on:

> SPITBOL is unique in the power it provides to manipulate strings and text. > I've yet to see anything else come close.

I would be interested to know more about what features SPITBOL offers for string processing. I'm going to take a look at the "Green Book" [1] Dave mentions, but if anyone else has relevant focused resources on that topic I'd love to give them a look.

[1] [https://code.google.com/p/spitbol/downloads/detail?name=Gree...](https://code.google.com/p/spitbol/downloads/detail?name=Green%20Book.pdf&can=2&q=)

</comment><comment><USER7> I was thinking about why I liked SNOBOL4/SPITBOL so much. The bizarre syntax and control structures appealed to me for some reason. If you haven't used the language, each statement can succeed or fail. At the end of the statement, you can optionally specify a goto target for success and for failure. There are no higher level control structures that I remember (except for functions), so indenting is not something you (OK, I) normally did. This resulted in very clean looking source code, for some reason. I just remember that impression very strongly. But that doesn't really explain the appeal completely.

The string processing is fantastic -- extremely powerful. I think regexes have a lot of the same power, but I always found SNOBOL4 more readable after the fact, when I had to go back and read and fix my own code. But that's not it either.

I think the main reason I liked SNOBOL4 so much was that it was the first dynamic language I used. Values have types, variables do not. That was a big revelation. I don't think I actually exploited it very often, but it was a cool new idea. And the absence of type declarations also contributed to the sense that the code looked clean. Automatic memory management was also very nice. I had spent a lot of time dealing with memory management in C. I must have in Pascal also. And I really don't remember what Algol-W did for memory management -- a free or delete statement maybe? And of course in FORTRAN, COBOL, and BASIC, there was no dynamically allocated memory at all, so you had to guess high, keep track, etc. Not having to worry about tracking memory was a nice change.

</comment><comment><USER31> It's unfortunate the article doesn't have any examples to show off SPITBOL's expressiveness, or have any benchmarks to show how fast it is compared to solutions in other languages. Reading the comments here, it seems like it could have some decent benefits.

Would be interested to know what built-in types are currently available. I wonder also whether this language would also be a good fit for test case writing.

</comment><comment><USER32> On the subject of SNOBOL descendants still in use, there is also Snowball, designed and used exclusively for writing stemming algorithms:

[http://snowball.tartarus.org/](http://snowball.tartarus.org/)

</comment><comment><USER33> I used SNOBOL4 in the 80s. It was beautiful for parsing.

</comment><comment><USER30> > If you know of anyone else who is maintaining an open-source implemenation > of a programming language that has only one user, please let me know [...]

The author of HolyC and TempleOS, Terry Davis, might be in a similar position:

[http://www.templeos.org/Wb/Doc/HolyC.html](http://www.templeos.org/Wb/Doc/HolyC.html)

Though I imagine with the exposure it's gotten over the years, Terry might not be the sole user (probably sole regular user).</comment>