Ursula K. Le Guin: By the Book - <AUTHOR> http://www.nytimes.com/2015/08/09/books/review/ursula-k-le-guin-by-the-book.html

<comment><USER2> BBC's Radio 4 did a feature to celebrate her 85th birthday back in April this year:

[http://www.bbc.co.uk/programmes/b05pkmyg](http://www.bbc.co.uk/programmes/b05pkmyg)

</comment><comment><USER3> That may be the worst author interview I've ever read.

<comment><USER4> And sadly, such a wasted opportunity with such a terrific author. Of all the interesting question the columnist could have asked, sigh.

</comment></comment><comment><USER5> fun times.

</comment><comment><USER6> Good god that was uninteresting.

</comment><comment><USER7> If you really want to botch an interview and bend over backwards to not ask any pertaining (or even interesting) question, this is the way to go. NYT, I want my time back.

</comment><comment><USER8> What a cringe-worthy interview. It's clear the interviewer is asking from a set list of (stunningly boring) questions, and despite Le Guin answering nearly every question with "please ask a more interesting question", the interviewer doesn't waver.

<comment><USER9> Pretty sure it was a standard list of questions - perhaps emailed.

Still, she is one of my favorite writers so it's interesting to read what she likes reading.

<comment><USER10> I would like to think it was certainly emailed because I can't imagine a live interviewer getting those kind of answers and continuing in that vein; I really want to assume the only way that could have happened was if there was no real back-and-forth between the interviewer and the interviewed.

<comment><USER11> It's a standard thing NYT does and it's pretty obvious that the questions are pre-written and sent as a batch.

[http://www.nytimes.com/column/by-the-book](http://www.nytimes.com/column/by- the-book)

<comment><USER8> Alas, what a lazy approach. An opportunity wasted.

<comment><USER11> I don't think that's fair. It's one of several standard types of interview, and legit in its own right, as long as one doesn't confuse it with the others. It's not like Ursula Le Guin hasn't done plenty of face-to-face interviews too.

<comment><USER10> > It's one of several standard types of interview

Except it's not actually an interview. Call it a Q&A or something if you like, but "interview" implies back-and-forth conversation.

<comment><USER11> That's fair enough re my usage of the word, but the article never calls itself an interview, and the point that this is a well-known standard format holds. Let's not dismiss things for shallow reasons.</comment></comment></comment></comment></comment></comment></comment></comment>


What are the best uses of document stores? - <AUTHOR> http://stackoverflow.com/questions/3376636

<comment><USER2> CouchDB's killer feature (not mentioned on the linked page) is of course, offline replication. So you can take a copy of the database with you, work in disconnected mode, and synchronize later. And this can be done with any number of users, all writing and synchronizing independently.

<comment><USER3> People keep mentioning this. What are some real-world uses for this feature? Who is using CouchDB in this fashion, and what are they doing with it?

<comment><USER2> Here's a CouchApp that (with a non-demo dataset) we use internally for TODO management. I have a copy running on my laptop, on my MacMini at home, on the office server, in the cloud, and of course, on my Android phone. I synchronize them when I feel like it (but I could configure it to continuously synchronize in the background).

[http://couchapp.couchone.com/focus/_design/focus/index.html#...](http://couchapp.couchone.com/focus/_design/focus/index.html#/focus)

For more info on the method of serving HTML5 apps directly from CouchDB's web- server: <http://couchapp.org/page/what-is-couchapp>

</comment></comment></comment><comment><USER4> I am using MongoDB for Cheméo[1]. It is a chemical component properties search engine. The document store is very nice as I can easily store in one document all the data related to a given component (all the properties, the source of the information, etc.).

I keep PostgreSQL for many things, but the "business related" data are stored in Mongo. This is running pretty well and it makes the agile part of the development easy, as one have nearly no impedance miss match between the code and the storage (the MongoDB drivers return ordered dictionaries and lists and I can access them from Python and PHP easily).

I was definitely faster from "idea to market" with Mongo.

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

</comment><comment><USER5> typically when you need arbitrary many-to-many relationships or multiple range queries, it's hard to use a document database.

<comment><USER6> True, I have run into these limits with CouchDB. Anyways this is a cool storage and I found workarounds like pre- and post filtering or multiple-step lookups.

<comment><USER5> oh yeah I love couchdb and document databases in general, it's a wonderful and fundamental tech... it's just a certain amount of effort to stuff a particular problem into a btree format, so sometimes it's easier to work with something like postgres

</comment></comment></comment><comment><USER7> Structured logging

<comment><USER6> This will be my next project. You can also use map/reduce for many interesting statistics right in the DB.</comment></comment>


Deep Learning 101 - <AUTHOR> http://markus.com/deep-learning-101/ <comment><USER2> Personally, I've found that I don't retain much of this sort of material without working through exercises. If you learn the same way, you might want to check out the series of progressive exercises from Andrew Ng here: [http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial](http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial)

For reference, I have a copy of my solutions here: [https://github.com/danluu/UFLDL-tutorial](https://github.com/danluu/UFLDL- tutorial). Debugging broken learning algorithms can be tedious in a way that's not particularly educational, so I tried to find a reference I could compare against when I was doing the exercises, and every copy I found had bugs. Hope having this reference helps someone.

<comment><USER3> For some more elementary material, I also recommend Andrew Ng's machine learning course on Coursera. He's a great teacher.

<comment> kot-behemoth Link for the impatient [https://www.coursera.org/course/ml](https://www.coursera.org/course/ml) Looks great indeed!

</comment></comment></comment><comment><USER4> I've followed the developments in Neural Networks somewhat, but have never applied deep learning so far. This is seems like a good place to ask a couple of question I've been having for a while.

1\. When does it make sense to apply deep learning? Could it potentially be applied successful applied to any difficult problem given enough data? Could it also be good at the type of problems that Random Forest, Gradient Boosting Machines are traditionally good at versus the problems that SVMs are traditionally good at (Computer Vision, NLP)? [1]

2\. How much data is enough?

3\. What degree of tuning is required to make it work? Are we at the point yet where deep learning works more or less out the box?

4\. Is it fair to say that dropout and maxout always work better in practice? [2]

5\. What is the computational effort? How long e.g. does it take to classify an ImageNet image (on a CPU / GPU)? How long does it take train a model like that?

6\. How on earth does this fit into memory? Say in ImageNet your have (256 pixels * 256 pixels) * (10,000 classes) * 4 bytes = 2.4 GB, for a NN without any hidden layers.

[1] I am overgeneralizing somewhat, I know. It's my way to avoid overfitting.

[2] My lunch today was free.

<comment><USER5> I don't have great answers to the other questions, though I too am interested in them.

#5) [1] has a some python code and timings mixed in to the docs. One such example (stacked denoising autoencoders on MNIST):

        By default the code runs 15 pre-training epochs for each layer,
        with a batch size of 1. The corruption level forthe first layer is
        0.1, for the second 0.2 and 0.3 for the third. The pretraining
        learning rate is was 0.001 and the finetuning learning rate is
        0.1. Pre-training takes 585.01 minutes, with an average of 13
        minutes per epoch. Fine-tuning is completed after 36 epochs in
        444.2 minutes, with an average of 12.34 minutes per epoch. The
        final validation score is 1.39% with a testing score of
        1.3%. These results were obtained on a machine with an Intel Xeon
        E5430 @ 2.66GHz CPU, with a single-threaded GotoBLAS.

#6) The size of the NN is not typically num_features * num_classes, but rather num_features * num_layers where num_layers is commonly 3-10 or so. If you want a (multi-class) classifier, you first feed your neural network a bunch of examples, unsupervised. Then once you've got your NN built, you feed the outputs of the NN to a classifier like SVM or SGD. The idea is that the net provides more meaningful features than you would have if you used hand crafted features or the raw input data itself.

[1] [http://deeplearning.net/tutorial/SdA.html#sda](http://deeplearning.net/tutorial/SdA.html#sda)

<comment><USER4> I understand that this unsupervised approach is out of fashion already.

[https://plus.google.com/+YannLeCunPhD/posts/UVT2fYTfoAC](https://plus.google.com/+YannLeCunPhD/posts/UVT2fYTfoAC)

</comment></comment></comment><comment><USER6> This is a cool tutorial!

It's ironic that deep neural networks have become the biggest machine learning breakthrough of 2013: they were also the biggest machine learning breakthrough of 1957. The idea dates back to the Perceptron, one of the oldest ideas in AI.

One thing to note: although there was a lot of initial excitement about Restricted Boltzman Machines, Auto-encoders, and other unsupervised approaches, the best results in the last year or so have all used conventional the back-propagation algorithm from 1974, with a few tweaks. [http://en.wikipedia.org/wiki/Backpropagation](http://en.wikipedia.org/wiki/Backpropagation)

Ben Lorica wrote a good article on the latest deep learning research from Google, and what's changed since neural networks were last popular in the 1980's: [http://strata.oreilly.com/2013/10/deep-learning-oral- traditi...](http://strata.oreilly.com/2013/10/deep-learning-oral- traditions.html)

What's old is new again.

<comment><USER7> The history of AI is really interesting. Perceptrons were extremely oversold by their inventor, Frank Rosenblatt after he introduced then in 1958. This led to a lot of funding and interest in AI and perceptrons. Then, in 1969, Marvin Minsky coauthored a book _Perceptrons_ which harshly criticized how underpowered perceptrons were. Most famously, the book proved that a perceptron could not model a simple XOR function. In other words, a technique that many had been led to believe would one day emulate human-like intelligence couldn't even emulate a dead-simple logic gate! The book was devastating and effectively led to a dark age of AI where funding and interest dried up (later, the term "AI winter" was coined).

The next big boom in AI (ignoring some logic/rules-based research in the 70s that I don't think is very interesting from an AI perspective) occurred in the 80s, when computational power increased and researchers discovered/rediscovered neural approaches, including the obscure 1974 research on backpropagation. This led to tons of press and funding from governments who dreamed of killer AI robots and what-not. But, once again, imagination raced ahead of reality and funding dried up when said robots didn't materialize. The field didn't really die off, but funding in AI went way down, leading to another major "AI winter".

I'd say the next big era of AI is the one we're in, driven largely by applied statistics that became known as "machine learning". This has been by far the most successful era, and has probably added 100s of billions of dollars to the economy (I'd argue Google is a machine learning company, for example). I think it's also the most pragmatic era, as people in the field have really learned from the past mistakes of overpromising. In fact, when I was studying "AI" in grad school, my professors warned me to always refer to what I did as machine learning because the concept of "intelligence" was such a joke to so many in the field.

<comment><USER8> Signal processing mysticism repeats itself every 20 years and has been fueled by tremendous hype since its debut 400 years ago:

1\. Linear Regression (which, admittedly, was amazing)

2\. Fourier Analysis (which is linear regression on orthonormal bases of functions. it blew people's minds)

3\. Perceptrons (which is linear regression but with a logistic loss. it went back to its old name of "logistic regression" once its insane cachet of biological plausibility faded)

4\. Neural Networks (stack of logistic regressors. popular with people who didn't know how to filter their inputs through fixed or random nonlinearities before applying linear regression)

5\. Self Organizing Maps and Recurrent Nets (which were neural nets that feed back on themselves)

6\. Fractals (which is recursion. they were useful for enticing children into math classes)

7\. Chaos (which is recursion that's hard to model. useful for movie plots)

8\. Wavelets (which is recursive Fourier analysis, and probably still way under-used)

9\. Support Vector Machines (which replaces logistic regression's smooth loss with a kink that makes it hard to use a fast optimizer. often conflated with the "kernel trick", which appealed to people who didn't want to pass their inputs through nonlinearities explicitly)

9\. Deep Nets (which are bigger neural networks. the jury's out whether they work better because they're deeper, or because they're bigger and require a lot of data to train, or because they require a programmer to spend years developing a learning algorithm for each new dataset. also whether they do actually work better).

Once this Deep Net thing blows over again, my money's on Kernelized Recurrent Deep Self Organizing Maps.

(On a serious note: MNIST is considered a trivial dataset and doesn't require the heavy machinery of deep nets. linear regression on almost any random nonlinearity applied to the data (say f(x;w,t)=cos(w'x+t) with w~N(0,I) and t~U[0,pi2/]) will get you >98% accuracy on MNIST.)

<comment><USER9> Could you explain the filtering "their inputs through fixed or random nonlinearities"? I haven't heard of this before.

<comment><USER8> you've actually probably done this yourself. it's often called "featurization". for example, instead of applying a linear learner on vectors x in R^d, you apply it to vectors f(x), where f computes a bunch of features on x. a popular choice for f are the d-th order monomials. hashing families are another good idea (Alex Smola does this). more generally, any random nonlinear function f is a good candidate (i call that analysis "Random Kitchen Sinks"). when x is structured data, f usually just returns counts in histogram bins of some kind.

</comment></comment></comment></comment></comment><comment><USER10> Google, Twitter, Netflix, Yelp, Pandora and more are speaking on Deep Learning and RecSys this Friday at MLconf in San Francisco. We're trying to get a streaming solution going as well for those who can't make it. [http://mlconf.com](http://mlconf.com)

DISCLAIMER: This is my event

<comment><AUTHOR> I'll definitely check this out if you get a stream going.

<comment><USER10> Check mlconf.com on Friday. The default will be Ustream here: [http://www.ustream.tv/search?q=mlconf](http://www.ustream.tv/search?q=mlconf)

We'll also post that and any updates to the main site on Friday.

</comment></comment></comment><comment><USER11> OT but the text selection behavior on this page is fascinating! (Or horrific if you don't want to be nice). I've never seen anything like it.

[https://www.dropbox.com/s/4k72g8b2tl3mgzt/Screenshot%202013-...](https://www.dropbox.com/s/4k72g8b2tl3mgzt/Screenshot%202013-11-13%2020.29.48.png)

<comment><AUTHOR> Ahh what are you viewing it on?

<comment><USER11> Chrome 31.0.1650.48 on OSX

<comment><USER12> 31.0.1650.48 here as well.

It appears to be a bug with a combination of the ::selected pseudoelement in conjunction with the font Georgia. My guess is it's a Chrome-on-mac bug (Firefox is fine), not a site coding error.

Disabling either the font or the selection style fixes it. Most likely a text rendering issue. At work we've noticed Chrome getting buggier in relation to that, as well as retaining DOM node properties via redraws.

</comment></comment></comment></comment><comment><USER13> What does it take to be good at machine learning such as this? In terms of mathematics, and computer science knowledge?

I know how to code through self learning, and I've pretty much solely done web development. So I barely know much CS. Also not very good at math.

So what are the essential prerequisites you would say are necessary for doing neat, useful stuff with machine learning?

<comment><USER14> Math. math. math.

Linear algebra. Bayesian statistics. MUST know these inside out, upside down.

Vector calculus. Convex optimization.

A boatload of machine learning literature. The ideas coalescing into deep learning are based more than a decade of research.

If you know nothing about math... I can't imagine getting to the point of understanding deep learning (which is a fairly rapidly evolving area) without at least 2-3 years of very hard work.

This class is a reasonable attempt to give a quick intro to one major source for DBNs [https://www.coursera.org/course/neuralnets](https://www.coursera.org/course/neuralnets) understanding this course is a good benchmark.

</comment></comment><comment><USER15> This is a really good write up. For people looking for practical experience with these types of methods, I'd also recommend checking out theano and/or pylearn2 (which is built w/ theano).

__theano:[http://deeplearning.net/tutorial/](http://deeplearning.net/tutorial/)

__pylearn2:[http://deeplearning.net/software/pylearn2/](http://deeplearning.net/software/pylearn2/)

NIPS, a big ML conference, is in December, so expect to see a large amount of new ideas and applications re: deep learning to come out of that.

<comment><AUTHOR> Thanks for putting those links up - the Theano documentation has some great tutorials for how to code these in practice.

</comment></comment><comment><USER16> Very interesting stuff written in a clear way. I'm actually finishing my master thesis on music genre recognition through machine learning, which is focused more on traditional ensemble learning, but I think that it would be nice to study deep learning in greater detail. Thanks!

<comment><AUTHOR> Awesome, do you have any demos for the music genre recognition?

<comment><USER16> not yet, I've still some work to do. One question: do you think that Optimum- Path Forests could be used also in the context of deep learning?

</comment></comment></comment><comment><USER17> Can anyone recommend a good book on the topic? And maybe other recent neural network research topics; I'm esp. also interested in recurrent networks like LSTM.

</comment><comment><USER18> This is awesome!

<comment><AUTHOR> Thanks!

</comment></comment><comment><USER19> An excellent 101 article.

<comment><AUTHOR> Thanks!</comment></comment>


The Fading Dream to Liberate Africa's Last Colony - <AUTHOR> https://newrepublic.com/article/133561/fading-dream-liberate-africas-last-colony <comment><USER2> People really need to read up about the alternative, The polisario Militia is not exactly a step forward for the Saharan population.

Mohamed Abdelaziz their Secretary General, is in power since 1976 (when Gerald Ford was US president). Pilsario has been sending kids for indoctrination to Cuba for decades.

</comment><comment><USER3> The Sahara belongs to Morocco just as much as "Israel" belongs to Palestine (which, according to the UN, is an actual occupied territory). Besides, speaking of "Africa's Last Colony", when is Spain giving Ceuta and Melilla back to Morocco?

<comment><USER4> Ceuta and Melilla were part of Spain lomg before Morocco even existed, so no. There is nothing to return to Morocco.

<comment><USER2> Most of Spain was in Moroccan hands for even longer than Ceuta in Spanish hands, should Morocco now ask for al andalous back?

<comment><USER5> These are all ancient Roman lands, by Caesar!

</comment></comment></comment></comment><comment><USER6> "Last colony" in Africa is a strange way to describe it. what about Reunion and Mayotte?

<comment><USER7> Don't know about these so this is an outsider's view: With the people overwhelmingly voting to stay with France, Mayotte sounds less like a colony of France than Scotland is a colony of England. The much larger Reunion with no native population doesn't seem to have much of an independence movement looking at the Wikipedia page. If they're colonies, maybe they'd be worse off independent? I mean who'd really benefit from independence? I'm sure as soon as they become independent, they'd get kicked out of the euro zone...

<comment> saiya-jin as my french friends told me, these places get tons of subsidies from France for free (whatever reason there might be), they can come to work in France/EU anytime. yet they live in their tiny little paradises, far from stressful mainland. best of both worlds. why the hell would anybody want to leave? :)

<comment><USER8> A colony in the general sense is a territory that has been invaded and is permanently occupied, and where the native population does not have equal rights and cannot decide on their independence (or integration, since the idea is that they should have a choice).

Although it once was the case, it is incorrect to refer to Mayotte and Reunion as colonies. They are French departments. Their inhabitants are not "allowed to work in France", they _are_ French, if they move to metropolitan France, they're just changing department. Saying they're a colony would be like saying Alaska or New Mexico are colonies. Moreover Mayotte did not vote to "stay" in France, the referendum was about switching from one status to another (essentially, from Oversea Department to 'normal' department) and they chose the most convenient one (shocking, I know).

It is true that they receive some extra subsidies, mostly because of their isolated location (which makes the cost of life higher). Due to the high level of unemployment, they also receive social subsidies, but that's just like any other department in France (but of course you won't hear a lot of complaints about how the North-Eastern regions are costing the rest of the country a ton of money...). Moreover they also receive less government investment when it comes to infrastuctures, i.e. schools or hospitals (even though they have to contend with tropical diseases and hurricanes).

The trope about "lazy black people under the tropics" (as opposed to Fench citizens who happen to live in regions where the economy is bad) is a common dog whistle in France. Much like with American nativists, there is this thing with implying who is a 'real' French and who isn't, and it seems to upset a number of white French that there are also black French who have been part of France for longer than they themselves may have been, so depicting them as remote people who are only in it to take money is quite convenient.

To get back to the main topic, it's true that "last colony" is a bit weird. There are other more-or-less similar conflicts in Africa (Casamance, Cabinda, Chagos) where the locals could refer to themselves as colonized.

</comment></comment></comment></comment><comment><USER9> This is a decent article but it's flawed in some ways.

Some of it is simply outright wrong:

> The narrative of return and independence also presents many practical > challenges. In 1976, the Moroccan "Green March" sent 350,000 Moroccans into > the Western Sahara to settle, massively altering the demographics in the > sparsely populated region.

The Green March was a peaceful march of 350k unarmed Moroccans into the region, that pushed out the Spaniards who had colonised it. Not a single bullet was fired, and these 350k people didn't settle there at all, they went straight back home.

On the other hand, in the past 40 years people have come to settle in the region, mostly driven by business opportunities as it's being invested in by Morocco. This is changing the demographics, but very much unrelated to the Green March. It's these quite clear errors that show the author isn't doing the proper research.

Anyway what bothers me the most is that it's so one-sided. I don't mind when authors take up a position at all, and I too am empathetic with the plight of the Sahrawi's, but it's a deeply complex issue with many facets left unspoken. Like the role of Algeria, which has financed the military rebellion for decades. And not for moral reasons, because they think it's the 'right thing to do'. Morocco and Algeria had been in a cold war, one was allied to the west/us, the other to the soviet union. Algeria also had no direct access to the ocean outside of the med. sea, and wants to build a road through the western sahara to get to a free standing port. None of this is mentioned at all, we only hear of the poor human interest story of a refugee girl who's described as a perfect western hollywood story: poor but desperate to go to school etc, read it yourself it's a bit corny.

Fact is, Morocco's various dynasties have ruled over these lands a long time. The Sahrawi's are berbers, just like Moroccans (and Algerians and Tunisians btw, they're all very similar peoples). Morocco is willing to invest heavily into the region, and is looking to give large degrees of autonomy, like has been ongoing in Morocco itself (a country which has many different berber groups, who've been getting increased autonomy, respect, special educational programmes, cultural recognition etc). But Morocco is not looking to lose territory to a few hundred thousand people under the influence of Algeria. The notion that this vast piece of land, if left alone by Morocco, will be independently and without other influences (e.g. Algeria) be ruled by a few hundred thousand people, and run as a successful nation, more so than as a part of Morocco, is I think naive.

So I fully support their right to self determination, but I'm also cognisant that it's paired with a complex geopolitical story that's left unsaid in this article, and honestly I think the best and most sensible outcome is an autonomous region within Morocco.

<comment><USER5> How precisely were the Spaniards "pushed out"?

<comment><USER9> They left, because they didn't want to risk a colonial war.

See for example France and Algeria just a decade earlier, which cost between 350k and 1.5m lives depending on the estimate.

Around the 1970s essentially it was clear that everything would be decolonized before the end of the 20th century, except places where you actually had 'your' people live a long time, like in Ceuta which is effectively Spanish. The Western Sahara wasn't like that, Spaniards didn't live there, it was just a military occupation for the resources there, so they knew eventually they'd have to give it up. No reason to risk a bloodshed then.

In the 1950s or 1960s there was still a lot of resistance to various independence movements, by mid 1970s there was no real question of if colonial powers would have to withdraw, only when. It was a sensible Spanish decision, only very poorly executed.

<comment><USER5> You wrote "The Green March was a peaceful march of 350k unarmed Moroccans into the region, that pushed out the Spaniards who had colonised it"

That sounds like they were pushed out by the marching Moroccans during a few day, not that they calmly decided it was time to move to Spain.

<comment><USER9> They were pushed out because if they didn't leave there'd be bloodshed. How hard is that to imagine?

At the same time, they calmly left. These two things are not mutually exclusive.

i.e. if a squatter goes to my house while I'm on vacation and lives there, for personal safety reasons he has a gun as do I, and I come home and make it clear it's not going to end well for either of us if he's going to stay, and the squatter makes the sensible choice to leave behind what is not his peacefully and go back to where he came from, you can say that he was pushed out by my presence on the scene. After all, if I hadn't been there he'd likely have stayed.

That's the best analogy I can think of to explain it to you.

Decolonisation was rarely peaceful, in this case it was. But even if it was peaceful, it doesn't mean Spain left for no reason. They were pressured to leave my hundreds of thousands of civilians descending on a piece of land that wasn't theirs with the support of the country. That showed them, if they wanted to keep the land, there'd be a colonial war. And if the 50s and 60s taught the world anything, it's that colonial powers always lose their stake in the end, but not before hundreds of thousands of unnecessary lives get ruined. Further, it creates animosity that lasts for many decades. Algerians and French for example still have deep wounds that need to heal, this was a post WWII war that saw massive death, destruction, torture, assassinations etc, it was quite brutal. Spain made a more sensible choice in this particular territory.

</comment></comment></comment></comment></comment><comment><USER5> You can think of eastern Ethiopia as the last African colonies, since the Ethiopian Empire grabbed a lot of it during the "Scramble for Africa".

</comment><comment><USER10> This particular international dispute is news to me, but based on this article I hope the Saharawi people will have their land returned to them without having to rely on force. It's sad that diplomacy can result in stalemate for so long and that conflict is the means by which we seem to have to fall back on to inject some urgency into finding a resolution.

<comment> saiya-jin basically this is a single-hand decision of Moroccan royalty, they do it because they can, and maybe also they don't want to lose their face while losing half of Morocco territory. If you travel there, you'll clearly see even people look completely different in those regions - Moroccans are arabs, these people are africans. their cultures are worlds apart and they really have little in common. one were conquered by the other, recently, and the world just stood and didn't care (at least it didn't end up in usual african civil war with hundreds of thousands dead and millions driven out).

this place is so far not worth any fight for anybody in the west and morocco is playing nice & easy with europe/us.

<comment><USER11> >Moroccans are arabs Thats a wide generalisation. There are Moroccans who speak arabic and Moroccans who speak berber, just because they speak arabic doesnt mean that they are Arabs.

</comment></comment></comment><comment><USER12> "facts on the ground" \- that anodyne term that whitewashes over occupation, dispossession and suppression the world over.

</comment><comment><USER13> A pile of hypocricy. Why on Earth if you are so much about self-determination of Saharawi, you force them to learn English in a soft game of neocolonialism, instead of putting money into development of their local industry and culture? Because you want these people to convert to mobile workforce, seduce them to leave and get resources from their land.

<comment><USER14> Force them to learn English? It is the defacto language of science and technology. For a population of less than 500,000 they're not going to develop locally created curriculum for, for example, masters degrees in electrical engineering and medical sciences in the Berber language.

<comment><USER15> Icelanders have both those things in their own language at a current population of 350,000, and have had it since before they were less than 250,000.

<comment><USER16> Iceland has never consisted of 165000 people living in tents in a desert refugee camp who never had a single culture or dialect in the first place, and doesn't rely on dealing with foreign NGOs for things as basic as their water supply.

As far as I'm aware, the indigenously-developed Icelandic curriculum also teaches native Icelanders to speak English to a good standard, which they rely on heavily when interacting with the outside world without consider having to do so a terrible colonialist imposition.

<comment><USER13> it did. in the 12th century. but self esteem of the bonds was so hogh, that they managed just ok.

</comment></comment></comment></comment></comment><comment><USER17> Bullshit article.

How about Cabinda?

[https://en.wikipedia.org/wiki/Cabinda_Province#Ethnic_ground...](https://en.wikipedia.org/wiki/Cabinda_Province#Ethnic_grounds_for_self- determination)</comment>


CurrentC: The Big Retailers' Clunky Attempt to Kill Apple Pay and Credit Card Fees - <AUTHOR> http://techcrunch.com/2014/10/25/currentc/ <comment><USER2> This is so bad it makes me angry, so I'm sorry for ranting, but, seriously WTF? Did Walmart just think, 'Blast those Visa and Mastercard scum with their excessive fees! Lets create our own eWallet and save that 2%...'

      He also that found that its Terms Of Service leaves high
      liability for fraud to the user if someone else is able to get
      access to a user's phone and make CurrentC payments.

Wait, what? What do you mean consumers don't want to be on the hook for the full charges if their phone/wallet is stolen and nobody at Best Buy cared to check ID on that $10,000 electronics purchase? But sure glad we're saving those interchange fees though.

I'm pretty sure they didn't actually _intend_ for this to be a badly timed Aprils fools joke, but come on. QR code based, no fraud protection, built in spyware, loose integration with any kind of platform security, collecting health information. Introducing CurrentC -- all the safety of carrying your entire bank account balance in large bills in your pocket, all the privacy of HTTP over Verizon LTE.

It's so easy to use, just unlock your phone, open the app, click to active the QR scanner, hope that it scans (but don't worry you can type in the QR data by hand if you need to). The bit about paying at the gas pump had me facepalming like Picard.

I can't even imagine how much they would have to pay me to use this. They take away my free 30+ days of float, my fraud protection, take away the firewall between my bank account and the world. Take away the chargeback defense against a misbehaving merchant. Not to mention a dozen other perks of credit cards, like the cash back rewards, purchase protection / extended warranty, price protection, etc.

I guess Apple couldn't have asked for a better counterpoint to demonstrate the difference between building a product to serve your customers versus building a product to serve yourself. Apple is trying to make credit cards more secure and more convenient, building on top of the existing system, and rent-seeking to the tune of whatever costs they can wring out of the system. Kudos and good luck to them. This CurrentC abomination on the other hand... how did this even see the light of beta?

Edit: In a few months the credit card networks will start to see the difference in fraud and chargeback levels for Apple Pay purchases. I'm really interested to see if there's a significant difference, and what implications that holds for merchants which don't adopt or actively block Apple Pay.

<comment><USER3> Here is some perspective: Walmart's margins are approx. 3% according to [1]

\- most if not all of their income comes from transactions/sales. \- some significant % of their transactions are paid with credit cards.

With those two things in mind, 2% of a retail transaction might mean a lot more than you think.

Do _I_ think it's a good idea? no.

Do I think a WalMart executive walked through the same chain of logic and found an extra billion? probably.

[1] [http://ycharts.com/companies/WMT/profit_margin](http://ycharts.com/companies/WMT/profit_margin)

<comment><USER4> It's obvious what retailers get out of it. Credit card fees are a significant amount of money to them.

It's not obvious is what consumers get out of it. What incentive do customers have to use this form of payment? After taking credit card rewards into account, credit cards fees end up making everything <1% more expensive for consumers. That's a small price to pay for the consumer protections that you would give up by using CurrentC instead of a credit card.

<comment><USER3> oh, it's clearly anti-consumer

they're just banking on the idea that they will make more money saving transaction fees than losing some customers because of incompatible payment methods.

</comment></comment></comment></comment><comment><USER5> What a disastrously bad user experience.

But I have to say, I feel sympathy for the guys who designed it. Just like the conventional wisdom tech entrepreneurs are taught -- "take a problem you encounter in your daily life, solve it, build the solution, and sell it" \-- this seems like the same thing happening on the corporate side.

Mike Cook and the retailers have a problem -- they don't like paying 1.5-3% to the credit card companies. And I can't blame them -- there's a huge financial incentive to solve problems like that, and if you're the guy who saved WalMart 2% a year, well, you're getting a big bonus, massive internal recognition, and likely a nice promotion. So I commend this group of retailers for trying to solve a problem they have.

But - man, what a terrible solution. And they've made the huge (and common, and classic) mistake of thinking that by solving THEIR problem, they're also solving our problem. The thing is, we love our credit cards, and now we're loving ApplePay (which genuinely improves on the credit card experience), but there seems to be very little to love about CurrentC.

<comment><USER6> Why would I care about Apple Pay? I love my credit card. It rewards me for using it. Besides, if you ever lose or damage your phone, you're screwed.

<comment><USER7> Apple Pay is just a wrapper on your credit cards - if you damage or lose your phone you still have those dinosaur plastic cards to fall back on.

<comment><USER6> Oh ok, well thats kinda convenient. I thought it was trying to go the way of a phone as credit card approach. Oh well, I'm not invested in the Apple landscape so I didn't care to learn anything about it.

</comment></comment></comment></comment><comment><USER8> CurrentC has no chance of catching on because it's not CurrentC vs Apple Pay, it's CurrentC vs legacy credit cards.

From a user's perspective, the current user experience around credit cards is pretty good. You get a tangible, color coded interface and a tactile interaction mechanism. Swipes work pretty reliably and the time it takes to pull out a credit card is very small.

When you're competing with a solution like this, even minor differences in UX can be dealbreakers. One thing I didn't see much talk about with the iPhone 6 launch was that Apple were the first phone makers (AFAICT) who managed to put NFC on the edge of a device rather than the center. I've tried paying with Google Wallet before and mashing a giant phone against a tiny contactless reader was error prone, frustrating and made you feel like a dork doing it. I tried it 2 or 3 times and then went back to credit cards.

I can't imagine how much worse this CurrentC solution is going to be in real life and how hard it will fail.

<comment><USER9> The other thing is that if retailers disable the NFC reader then contactless cards won't work...

I'm not sure what adoption is like in the US, but in Australia pretty much every single plastic credit card (and Visa/MasterCard debit) supports contactless payments, which is an awesome user experience. You literally just pull out the card and touch it to the machine, and some places it's approved in less than a second.

It only works for payments under $100 (for security reasons) - otherwise you chip and pin.

I don't see CurrenC being able to compete with that, chip and pin, or Apple pay...

<comment><USER10> Contactless was a thing here in the US, but at least in my experience, it's going away. I've had a few credit cards replaced over the past couple of months (one Chase, one Amex) and while they've gained an EMV chip, they've also lost contactless functionality (which went by Blink and ExpressPay respectively).

<comment><USER9> That's interesting, because in Australia they're really popular and both EMV and PayPass/PayWave came in at the same time and use the same chip in the card. You can actually see the RFID antenna terminating in the EMV chip in one of my cards which is semi-transparent.

</comment></comment></comment></comment><comment><USER11> CurrentC is doomed. The premise is that retailers will leverage the ACH rails to bypass the fees charged by the card brands (MC, Visa, Amex and Discover).

This is making the huge assumption that these same retailers who couldn't keep their customers' credit card numbers secure can somehow do a better job with their bank accounts. And for what? So we can get a free cup of Starbucks or a couple percent off a fill up?

The more retailers that get breached (Staples was the latest this week) the harder a sell that is going to be for the MCX cartel members.

A consumer who signs over their bank accounts to MCX is giving up all the protections that they currently have with their credit cards.

<comment><USER12> 1) Your bank account number is relatively public anyway - afterall it's printed on all of your checks.

2) It's relatively easy to reverse an ACH debit. Which protections would I have to give up?

<comment><USER13> It's not hard to reverse an ACH debit _if you notice it within two months_. After that, it's impossible. (And business accounts only get two days.) Also, the credit card companies are actively trying to prevent fraud and will notify you of unusual transactions; with ACH, there's no-one looking out for you but yourself.

</comment></comment></comment><comment><USER10> These guys ask for your Driver's License and Social Security Number during the on-boarding process: [https://twitter.com/hasanahmad80/status/526551322523623424/p...](https://twitter.com/hasanahmad80/status/526551322523623424/photo/1)

They say the information isn't stored on your phone like that's a good thing.

</comment><comment><USER14> This really pisses me off and makes me not want to shop at the stores involved and or associated with it! Also, they want me to give them my account number, Target even???

Whether it's Google Wallet or Apple Pay users all these stores just ticked off thousands and thousands of early adopters/their customers!

ON a different note I have seen this topic appear yesterday on Hacker News. It quickly was at the top of the page then quickly demoted. This needs and I hope it goes to the top of HN and stays there for a long time! These retailers need their hand forced for their own sake due to a possible PR/consumer backlash.

</comment><comment><USER15> The problem with using ACH is that you can't prevent overdrawing your account. Unless this has the ability to query your bank account and ensure you don't accidentally overdraw, then using a credit card is far superior. At least you will get an error message immediately as opposed to a day or two later.

</comment><comment><USER16> What a shitshow.. I pitched the same technology around the time bitcoin was being developed, 2009. I must have talked to the wrong VC's because they thought ACH over QR was a horrible idea.

Needless to say I've since moved on to bitcoin.

</comment><comment><USER17> While CurrentC sucks, it's hard to blame retailers. When you use your credit cards, _you_ are the one paying that extra 2% for the privilege to use a piece of plastic because every single merchants simply transfer that cost on to you. Apple Pay only makes getting rid of whole evil of credit cards harder.

Credit cards are drag on consumers and invisible tax created by banking system. They are effortless machines that generates profits without producing anything or adding a significant value. Before you make a case that credit cards protects against frauds, you should know that less than 1/700 of each dollar of credit card transactions are lost due to fraud. So in essence, 99.93% of your transaction fees goes in to bank and other middleman's pockets for no apparent value add. A small part of this CC companies throws at you as "reward" breadcrumbs. Also credit cards are hardly useful as debt instruments because of exorbitant interest rates most of them carry.

What we need is _not_ another mechanism to use credit cards more easily but eliminate them completely. So if we can build a mechanism that identifies you, debits some sort of spending account directly and provide fraud insurance at the rate of 0.07% of your annual charges then we can get rid of all these fat middlemans who are essentially leaching on consumers without a value add. CurrentC doesn't seem like perfect contender yet but it's step in right direction where retailers are fighting back.

</comment><comment><USER18> 1\. CurrentC's UX is worse than using a credit card. 2\. CurrentC's UX is worse than using a debit card (and mis-keying your PIN). 3\. CurrentC's UX is worse than Apple Pay's UX (near as I can tell). 4\. CurrentC's UX is worse than using _cash_.

All of the above, I can complete in fewer steps than I can using CurrentC. Also, I don't have to give up my health information or join a loyalty program.

If you want to make an alternative to Apple Pay, make something easier to use.

</comment><comment><USER19> _Former Walmart CEO Lee Scott reportedly once said "I don't know that MCX will succeed, and I don't care. As long as Visa suffers."_

I want Visa to suffer, too. So, I'll likely use this. It's not clear to me if it is point of sale only, or if it'll work in an online context. The QR code thing would be an intolerably bad experience online, of course (and it's a pretty clumsy experience offline)...but, if the payment network is not intimately tied to the method of verifying the owner of the account, I could see it being possible to handle payments without the QR code.

And, if the people implementing this stuff aren't entirely incompetent, I'd be surprised if they don't implement a non-QR code method in the future, including NFC. The end user app _really_ isn't the hard part of this equation.

</comment><comment><USER20> Canadian here. We have NFC built into our CC's already. I look forward to our neighbours to the south getting the same technology.

I'm extremely happy with my iPhone 6, but Apple Pay/CurrentC both seem DOA to me -- I already have it and I don't have to worry about charging my credit cards.

As a side note, I never realized how terrible CC transactions were before we had paypass everywhere. Canadians had to swipe+pin before PayPass. Whenever I'm at a store without PayPass I feel like an animal having to type my pin into the pad.

</comment><comment> T-A Reading this, I am reminded of [http://shouldiuseaqrcode.com/](http://shouldiuseaqrcode.com/)

</comment><comment><USER21> does anyone care to help retailers save 3%? and, do they know the money still comes out of a credit card company and that they can change their rules whenever they want? no wonder why it isn't a startup but a bunch of mad corporations

</comment><comment><USER22> Apple Pay charges 0.15% and the credit cards 2 to 3%. If the costs were really revealed to the consumers, I wonder how many of them will opt for the convenience versus entering a PIN with a debit card, use a check or pay cash.

<comment><USER23> Well, if you shop for it, a cardholder can get a minimum of 1% rebated back to them, more in cases of special promotions.

But yeah, it's a stupid way to run a payments system.

You would think Starbucks would give you a free cup or something if you filled up your Starbucks stored-value card by EFT instead of credit card. (You would also think Starbucks wouldn't make me accept the wifi TOS every goddamn day, when they have an app/loyalty card relationship with me.)

You would also think that maybe Apple is leaving their options open in the future to 1) link up with retailers' loyalty programs and 2) help retailers bypass Mastercard and Visa and share in the savings.

<comment><USER24> > Well, if you shop for it, a cardholder can get a minimum of 1% rebated back > to them, more in cases of special promotions.

The reward level is set by the card issuer and the merchant pays that, too, as part of the interchange fee.

In Australia legislation was passed that enabled merchants to add a surcharge for credit card use. The result was that 'rewards' disappeared from the market.

<comment><USER25> Merchants can offer cash discounts in the US. Few do and credit card rewards are the strongest they've ever been. 2% on everything is easy, bigger discounts are available if you work for it.

</comment></comment></comment></comment><comment><USER26> There's an advantage here people don't think of: credit cards are, in their current form, a danger to society. It encourages people to spend money they don't have and creates debt that doesn't create new value. You could say that credit cards raise consumption and so on but at the end of the day the interest actually decreases your consumption ability.</comment>


Playing battleships over BGP (2018) - <AUTHOR> https://blog.benjojo.co.uk/post/bgp-battleships <comment><USER2> Reminds me of the BGP nyancat[1]. Does anyone have another creative (ab)use of a network protocol?

[https://stat.ripe.net/widget/routing- history?pk_vid=09869001...](https://stat.ripe.net/widget/routing- history?pk_vid=09869001725611011572892632274cf0#w.resource=as15562&w.starttime=2017-01-15T00%3A00%3A00&w.endtime=2017-06-23T00%3A00%3A00&show=Maxmized)

</comment><comment><USER3> Hmmm. I think we're in a timewarp. [https://news.ycombinator.com/item?id=17117896](https://news.ycombinator.com/item?id=17117896)

</comment><comment><USER4> Url changed from [https://github.com/benjojo/bgp- battleships](https://github.com/benjojo/bgp-battleships), which points to this.</comment>


What are good group communication apps/sites? - <AUTHOR>

Platform: web or mobile
Value props: can be any of the following
- small/closed groups (groupme, skype, what'sapp ...)
- interest-based/open groups (hackernews, reddit...)
- local groups (circle..)
What are some of the good ones to really learn from? <comment><USER2> For small/closed groups, the popular ones are Hipchat and Flowdock. Flowdock gets a lot of great reviews because of how it organizes and threads conversations.

Another good one that I've actually used is Slack ([https://slack.com/](https://slack.com/)). You can invite people by email, or set it up so that anyone with an email address at a specific domain gets automatically added to your organization. So if you had a company called FooBar, with @foobar.com emails, you would get a sub-domain like "foobar.slack.com" and everyone with a verifiable @foobar.com email address will be added to that organization.

Then within slack, you see everyone logged in (from your team), can create public channels (it's made to look like IRC 3.0), and also create private channels. Images are displayed in-line, links to web-sites give you a preview or the page. It's a cross-platform browser-based system, with apps for Windows, Mac, Android and Apple iOS.

There's also an API, so you can have systems in your company posting to various channels (or you can connect up something like Hubot to do this). It's kind of nice seeing when a jenkins job runs, code is commited, or an issue is updated in jira.

Personally, I have been waiting for an open-source persistent chat server that is API-based, federation capable, and uses http(s) for transport. I'd like this system to have configurable levels of security (including unauthenticated/anonymous). Then there would be "adapters" made so that you could connect either XMPP clients or IRC clients into the system. Such a system would be fairly killer.</comment>


Ask HN: Please review our startup - timzon.com - <AUTHOR>

Dear HN,
We went live a little while ago with http://timzon.com, a site currently focused on private collaboration using video.  The concept is to enable threaded asynchronous video discussions between a group of individuals.
<elevator_pitch> The office is virtual yet effective working relationships require knowing each other.  While face-to-face time is ideal, companies are cutting down on travel... business challenges and complexity have outgrown traditional collaboration like email, phone and video conferencing.  Phones can't show the subject matter of a discussion.  Email is impersonal and easy to misinterpret (an emoticon doesn't get the message across) and business video communication is only real-time which doesn't solve the time zone challenge.
However, since showing or demonstrating something is often the only way to successfully collaborate, a better solution is required. </elevator_pitch>
You'll notice that it's entirely free at the moment; we're on the freemium plan and are working on the "mium" part.
Any and all feedback on http://timzon.com is highly appreciated.
Thank you!
Tony and Jerome (TimZon) <comment><USER2> I'm not sure why this is, but when I first get to your site, i don't know what to look at. My eyes are being dragged all over the place, and I had to concentrate to read a single heading/paragraph.

You'd think with the big lettering you've used, and the layout (which is good), this wouldn't be an issue.

The 'call to action' isn't clear enough. Could be that I'm just having a strange day, but it isn't exactly clear to me what I'm supposed to do (and yes, I see the (ready to begin/sign-up), but something about your overall layout/design just isn't sitting right with me.

Sorry, wish I could explain exactly why.

<comment><AUTHOR> Thank you for the feedback. I'm not sure how to interpret it... but it probably means that we need to do some more work on the 'call to action' and clean up the design a little bit. Thanks again.

</comment></comment><comment><USER3> The link for direct clicking: <http://timzon.com>

<comment><AUTHOR> Thank you.

</comment></comment><comment><USER4> Site looks cool. Don't like the iframe, makes it difficult to bookmark and post links. Also the inside scrollbar is a bad idea.

<comment><AUTHOR> The site is actually mostly one big Javascript (built using GWT). For easier bookmarking, we will add special URLs to go directly to a specific video or discussion. Thank you for the feedback, those are good suggestions.

</comment></comment><comment><USER5> When I'm on the "About Us" page, I couldn't find my way back home. The logo image doesn't take me home.

<comment><USER6> Thank you very much for the catch. Fixed.</comment></comment>


Soylent crowdfunding campaigns attracts $755K so people can survive without food - <AUTHOR> http://venturebeat.com/2013/06/21/soylent-crowdfunding-campaign-attracts-755k-so-people-can-survive-without-food/

<comment><USER2> Even if, medically and biologically, this diet is compatible with humans, do people really want to give up eating food for taste? The "spice of life" in a literal sense.

<comment><USER3> This question is asked every time Soylent comes up, and the response is always the same: no one is suggesting that you never eat regular food again. Just that with Soylent (or other food replacements) you have a healthy and cheap option for those times when you eat fast food because you don't have the time or energy to cook something healthy.</comment></comment>


(λove (print (eval (read)))) - <AUTHOR> http://readevalprintlove.fogus.me/# <comment><USER2> Here is my brief review of the articles as a whole. As a little background, I've been writing Lisp professionally for a while at many companies, both start ups and top-tier tech companies.

I like writing about Lisp[1], and have been so far as to write blog posts ranging from why parentheses are a good thing to what kinds of data types Common Lisp has. I think there is still a place for writing about Lisp, but I don't think this e-zine accomplished the task to make it interesting.

Lisp unfortunately attracts a lot of fluff writing. Writing about how wonderful, deep, rich, or sophisticated it is. Writing about how it completely blows one's mind and takes you to this baroque, fluid land of programming literacy. I must admit that I've even been sucked into the vortex at a point in my Lisp career.

Then there are particular topics that get rehashed over and over again: what makes a Lisp? which is the best Lisp? which is the most practical? lisp-1 vs. lisp-2? was r6rs a failure? why are macros so great? why does Lisp subsume every programming language ever?

I found in this e-zine—whose title I can't repeat without bloating the paragraphs I write—that I didn't really gain anything after reading it all. What did I learn about T? I just learned that it was some language with interesting concepts, backed up with a paltry offering of examples. What did I learn about Apple? To me, it seemed like an opinion: Since Apple isn't doing wacky Lisp things, it no longer is catering to those with ideas. (This is something I disagree with.)

Regarding topics, I also found this e-zine to be somewhat haphazard in its arrangement. Maybe it's just the visual layout, but the topics didn't really flow, and it read more like a long blog post with randomly selected topics interjected with philosophical ideas about categorization.

I have a hard time really seeing, after reading, who this e-zine is for. It doesn't seem like it'd interest the general programming enthusiast, because it's just about a class of languages that few people actually use. It constantly shows code and uses jargon that the general programmer probably isn't accustomed with. It barely seems to appeal to veteran Lisp programmers because there's little depth and lots of the aforementioned fluff. The only group I can think it appeals to are people who have casually brushed next to Lisp at a previous time and wish to be re-injected with a shot of apparent beauty and mysticism they once saw, but never had time time or patience to fully reach.

My suggestion for future articles: Instead of trying to talk about all Lisps all the time, and talk about beaten-to-death topics that pop up on Usenet everyday, talk about something more technical and be comprehensive. What is something really interesting about Common Lisp? Though not exactly in the format I'd have for a magazine article, I wrote about "linear random access sequences" in Lisp here:

[http://symbo1ics.com/blog/?p=1845](http://symbo1ics.com/blog/?p=1845)

What about an overview of how the object system in T works? How about examples of how Lisp has solved problems in the industry that people _don 't_ know about (i.e., people know about ITA, the space probe, Jak & Dexter game, etc. because they're the examples that continue to propagate)?

How about where Lisp falls short? Lisp is a language that was ahead of its time, but there are language features now that seem beyond Lisp's grasp. Where has it failed?

All in all, I was somewhat disappointed, especially given the well qualified and articulate author. I think there's potential, but I don't think Read-Eval- Print-Love has successfully converged to what it should or could be.

I do wish Code Quarterly[2] was successful. Fogus even seemed to contribute to it with an interview with Rich Hickey. But, as outlined here[3], there wasn't enough motivation from the writers to make it successful.

[1] [http://symbo1ics.com/blog/?cat=10](http://symbo1ics.com/blog/?cat=10)

[2] [http://www.codequarterly.com/](http://www.codequarterly.com/)

[3] [http://gigamonkeys.wordpress.com/2011/10/17/end-of-the- line-...](http://gigamonkeys.wordpress.com/2011/10/17/end-of-the-line-for- code-quarterly/)

<comment><USER3> Lisp's literary cannon, like R&B, cop shows, and Buddhist monk anecdotes has a traditional forms. The love song is foremost among them - and the newsletter's title is more than fair warning.

In the end, any piece may be dead to a reader, but writing without passion will almost certainly be stillborn.

<comment><USER4> > Lisp's literary cannon ...

A firearm that shoots books? Or did you by chance mean "canon"?

[http://dictionary.reference.com/browse/canon](http://dictionary.reference.com/browse/canon) : "the body of rules, principles, or standards accepted as axiomatic and universally binding in a field of study or art"

[http://dictionary.reference.com/browse/cannon](http://dictionary.reference.com/browse/cannon) : "a mounted gun for firing heavy projectiles; a gun, howitzer, or mortar"

<comment><USER3> A device useful for firing up small caliber pendants?

<comment><USER4> > A device useful for firing up small caliber pendants?

Did you mean pedants by chance?

[http://dictionary.reference.com/browse/pedant](http://dictionary.reference.com/browse/pedant) : "a person who makes an excessive or inappropriate display of learning."

[http://dictionary.reference.com/browse/pendant?s=t](http://dictionary.reference.com/browse/pendant?s=t) : "a hanging ornament, as an earring or the main piece suspended from a necklace."

<comment><USER3> Fires soft balls, to.

<comment><USER4> Did you by chance mean "too"?

<comment><USER5> Thanks for the LMAO IRL, guys. This was the funniest exchange I've read in a couple of days (including on reddit. :P )

<comment><USER4> You're most ... welcome (bows from the waist). :)

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> Shen/Qi was the first Fluchtpunktish lisp I ever spent time with, and I had not used any typing system outside of Typed Racket and some other hand-made implementations. I remember being amazed that the Shen type system isn't more widely used across more domains. Once you start using it, you feel like the type problem is 'solved' in Shen. The author is right on about this language offering something special--Shen is one of those addictive hammers that you will want to hit all the nails with. More importantly it's a type system that can be used in conjunction with existing systems or even implemented in a different language. A good test for how powerful a new means of abstraction actually is, is to try using it outside of its original implementation.

<comment><USER7> I agree. In my opinion the whole notion of a baked-in "type system" is silly. Type systems themselves aren't silly, but including one in the language proper seems to be stopping at the wrong abstraction.

Let's say we see:

        int add_two(int a, int b)

We're so used to seeing those "ints" as types, but why? There's a better abstraction here, mainly one of:

        ensure_conforms_to(int) add_two(ensure_conforms_to(int, a), ensure_conforms_to(int, b))

I'm not arguing for that horrific syntax, I'm saying that type systems are just another part of your program running at a separate time. There's a LOT more you can do with that concept than just enforcing and deducing the tags and acceptable conversions that go with values. Contracts, powerful dispatch mechanisms, ad-hoc optimization strategies, complex lambda cube stuff like dependent types... all of these things can be served with the right abstraction.

And there is no reason that your editors, documentation browsers, code completion engines, syntax highlighters, debuggers, and every other part of your environment can't use it!

Shen seems to get that.

<comment><USER8> > ensure_conforms_to(int)

Why int? What about adding floats? complex numbers? rationals? quaternions? matrices? dimensional quantities? etc. etc. etc.

<comment><USER7> That was, of course, just an example. I'm also assuming that any "real" type system implemented this way would do this with something like typeclasses or higher kinds or something else.

The larger point is that baked-in type system see the word "int" as a type, but what that's hiding is the higher abstraction: that what we're really doing is specifying a function which should be run when determining the validity of the program.

<comment><USER8> But that was exactly my point: what IS this "higher abstraction" to which you allude? What are you actually advocating here? Typeclasses? Sequent calculus? Something else? Details matter.

<comment><USER7> I'm advocating something that typeclasses, sequent calculus, contracts, etc. could be built on. Sure, the language may have some standard libraries that would do much the same things that these do in other languages, but those libraries could be improved, removed, or replaced by the programmer.

What exactly is the _point_ of a type system? I think there are really two big ones: program verification and metadata tagging. To simplify, the former is why Haskellers love types, and the latter seems to be the main reason that F#'s type providers exist (and why C# programmers love creating lots of little types rather than using typeless object literals a la Ruby).

Intellisense is an incredibly seductive thing, and many programmers in the enterprise world would argue that any language that can't show you that little "box" after you press Ctrl+Space is dead on arrival.

But both of those things are a subset of the things you COULD do if the phases of compilation were in your control. Maybe you want a function that says "throw an error at compile time if someone uses this deprecated parameter on this API call", or maybe you'd like to have a function where if you call it with a hard-coded URL, the program fails at compile time if the URL can't be reached.

These are obviously a bit silly, but the point is that, to many of us, WHENEVER a compiler is doing something with our AST, that should be fully exposed and not a black box. Another example: why is Idris[1] its own language? Why isn't it just a Haskell library? Granted that also gets into programmable syntax and editor support thereof, but that's part of my larger point as well.

[1] [http://www.idris-lang.org/](http://www.idris-lang.org/)

<comment><USER9> One reason why Idris is its own language is that you can't just lie dependent types atop a language---that's the whole point, the types interact with the values and the values the types. This blurs the boundary between compiler phases.

Sometimes you get type erasure, but for really interesting programs to arise (the kind that I'm sure Idris is aiming at, though I don't know for certain) you really want to operate in that blurry divide.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> Author here. The announcement with some preliminaries can be found at [http://blog.fogus.me/2013/09/09/read-eval- print-%CE%BBove-v0...](http://blog.fogus.me/2013/09/09/read-eval- print-%CE%BBove-v001-sakura/)

Enjoy.

<comment><USER11> Hi fogus, I really enjoyed the article. I just want to point out a couple of typos: a) s/tern/term/ in footnote 9; b) in German nouns are always capitalized, so it should be "der Fluchtpunkt".

</comment></comment><comment><USER7> Can anyone here defend Lisp-2? Any time I read about it I seem to instinctively recoil in disgust. To me, the hygiene argument doesn't make up for the extra characters and loss of generality.

<comment><USER12> Erik Naggum had an impassioned defense of Lisp-2: [https://groups.google.com/forum/#!msg/comp.lang.lisp/04rR3_j...](https://groups.google.com/forum/#!msg/comp.lang.lisp/04rR3_jcuyY/cc6P0ECzU3QJ)

I don't buy it, but I can understand the reasoning.

<comment><USER13> I find the reasoning specious. In particular, files and programs are the same in MS-DOS and Unix. You can, for instance, ls the ls command or cat the cat command. He's also completely ignoring the superiority of the file system's namespacing (by directory) to just having two global buckets like in elisp.

The execute bit comparison is especially specious. If I try to execute a non- executable file, it fails. It doesn't go look for an executable file with the same name. Same as if I try to invoke 0 in Clojure. e.g. (0)

He's right that the symbol resolution of the first entry has different rules but ignores the fact that the shell isn't very good at higher order commands. Which is probably okay for a shell but not much use for a modern programming language.

Finally, he's right that multiple namespaces are a good idea, but that's Accepted Truth these days. It's just that we think namespacing should be under the control of the dev, not dependent on the type of the variable.

<comment><USER14> > In particular, files and programs are the same in MS-DOS and Unix. You can, > for instance, ls the ls command or cat the cat command.

Uh, no you cant:

      $ ls ls
      ls: cannot access ls: No such file or directory
      $ cat cat
      cat: cat: No such file or directory

<comment><USER15>
        $ ls $(which ls)
        $ cat $(which cat)

<comment><USER16> looks just like (funcall #'funcall ... ;)

<comment><USER17> Its more like

      ls /bin/ls

you can simply cat cat or ls ls by cd-ing to /bin first... with the caveat that some distros have moved them to /usr/bin or somewhere, hence the 'which'

<comment><USER13> Exactly. File systems resemble modern namespaces, not namespacing by type. You can put an executable and a data file in the same directory, or not. Your choice.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER18> I really like how the very first link leads to "[http://www- formal.stanford.edu/jmc/lisp20th.html)"](http://www- formal.stanford.edu/jmc/lisp20th.html\)")

Truly, this is a Lisp article.

</comment><comment><USER19> This really is a fantastic newsletter/post. Was excited to see it in my mailbox, and am enjoying it (taking some detours to look at the referenced articles).

</comment><comment><USER20> One nit: in T (object ...) doesn't create an anonymous class, it creates an object implementing the given operations, just as lambda creates a procedure. I agree that it's a lovely feature worth highlighting.

</comment><comment><USER21> Would a homoiconic Haskell be a lisp?

<comment><USER7> Many languages claim to be "lisps" for various reasons, and there's _always_ someone who disagrees.

Also, what exactly do you mean by "homoiconic"? People love this word because it sounds fancy and marks them as someone who geeks out on programming, but the fact is that this word is, if not ambiguous, at least prone to abuse. Let me give a specific example.

The new language Julia has a macro system and Julia's designers claim that the language is homoiconic. Is it? It has a way to quote expressions such that

        a + b

is just the result of a + b whereas

        :(a + b)

returns the expression tree for a + b. This can then be modified, eval'd, and otherwise sliced and diced. But what does that expression tree look like? When you print it in Julia, you get something like:

        head: call
        args:
            [0] symbol(:+)
            [1] symbol(:a)
            [2] symbol(:b)
        type: any

Question: does that look like a normal snippet of Julia code you could paste into your test editor and eval? No. The "real" syntax for that code is something like:

        {:call, {:+, :a, :b}, Any}

(Julia-ish pseudocode, not precise)

In any event, while you CAN write a Julia program using the literal syntax for the data structures that represent Julia programs, people usually don't do that.

So what does homoiconic mean? Does it mean that you can get to the data structure representing your code and then manipulate it at will? Or does it mean that PLUS the fact that programs in your language always take exactly the form of the data structure that represents that code?

If the former, then a lot of languages (including C# with its expression trees) can claim to be partially or fully homoiconic. If the latter, then the list is much smaller.

So would a homoiconic Haskell be a lisp? I think what you'd end up with after taking things far enough wouldn't be Haskell at all. It'd be a lisp with a REALLY good type system.

After all, things like monads and morphisms and applicative functors aren't Haskell, they're mathematics.

<comment><USER22> _Also, what exactly do you mean by "homoiconic"?_

Yeah, the word is admittedly a bit problematic. If one wanted to be overly pedantic, any language with strings might be called homoiconic. The better answer is to ask how commonly-used are the data structures for storing the expressions. What makes Lisp so powerful is that these data structures are lists and lists are used all the time; this enables a large amount of code sharing between macros and regular functions.

Now this makes it very straightforward to evaluate the usefulness of Julia's claim of homoiconicity: how often would you expect to use the data structures Julia uses to represent its expression trees? If the answer is _not very often_ , then the language suffers for it because you're going to have to write special-purpose code for macros instead of reusing the libraries you'd use anyway.

</comment></comment></comment><comment><USER9> This was a great first print and has made me quite interested in taking a look at Land of Lisp sometime.

... But instead I think I'm more likely to take a look at that T manual.

<comment><USER7> The Land of Lisp is a fantastic book. Absolutely fantastic. I am not a Common Lisp fan AT ALL, but if you want to learn Lisp without feeling like you're trying to gain admission to some Hacker Buddhist Monastery high in the mountains where a bearded guy named Master Foo may just condemn you forever to Visual Basic if you so much as ask the wrong question, then it's a great start. :)

<comment><USER23> What I really found helpful was learning Racket.

Common Lisp is a little less straight-forward and a little more complex, so Racket is awesome for learning the patterns you'll use to program with.

I'm starting to move into Common Lisp now, because it has more useful tools and libraries available for making 'proper' programming easier.

</comment></comment></comment><comment><USER24> Title should have been (-> read eval print λove) :)

</comment><comment><USER25> Great job, fogus. Thank you so much.

</comment><comment><USER26> @fogus this is brilliant! thanks for sharing.

</comment><comment><USER27> This is sweeeet, thank you, fogus!

</comment><comment><USER28> FYI, I didn't click the link to look at flower paintings, so I left. If you're trying to pull people into a tech article, it might help to start off with some text.

<comment><USER10> Probably for the best -- I have a strong impression that you wouldn't like the rest either.</comment></comment>


It's Official: Apple Just Killed the Laptop - <AUTHOR> https://www.inc.com/john-brandon/its-official-apple-just-killed-laptop.html <comment><USER2> Is it possible to do any reasonable amount of development work on a tablet? IPad or android

<comment><USER3> I think it will make a place with some people, but not replace devices with larger screens.

<comment><USER4> I'm so used to having two large monitors that even working on a laptop is sometimes frustrating for me. There's no way I could use an iPad exclusively.</comment></comment></comment>


Today Everything Is Called AI. Like This AI Based Cat Shelter. Is It AI? - <AUTHOR> https://radiichina.com/baidu-has-built-an-ai-cat-shelter-to-care-for-strays/ <comment><AUTHOR> My point is, that in some ways it looks like a new bubble for me. Or at least many mediocre companies will also jump on this bandwagon.</comment>


Ask HN: How many open tabs do you have and when does it become a problem? - <AUTHOR>

A friend of mine visited me, looked at my browser and said 'Julian, we need to talk about your tabs... '. So... I have 63 tabs open and can't see the favicons. Do I need to see a shrink?<p>How many tabs do you have open? <comment><USER3> At work i force myself to shutdown Chrome daily to prevent tab bloat.

Home is another story. I've got two instances of chrome open, split screened on my 24" monitor. I constantly bounce back and forth between the two while pages are loading or watching youtube in one while surfing in the other. I haven't seen favicons in weeks and frequently resort to Ctrl+Tab and Shift+Ctrl+Tab for navigating because the tabs are so small.

It's bad, some of them are for things I read two months ago and wanted to reference to code something but then lost interest. Can't stand to close them though cause I might just find the interest and time again and then wonder where that page was.

Bookmarks are never looked at, i have a very strong out of sight out of mind mentality.

I cry on the occasions that Chrome crashes and for whatever reasons the session can't be restored. But I purposely don't have any extension to save tabs. It's my forest fire, a destructive but necessary part of the process.

<comment><USER4> Alternative solution is to use pinboard extension, save tabs from one window as a tab set, give it a meaningful name including todays date and feel good about closing it because you can always get the context back. In reality I guess you will never returning to it though ;-)

</comment></comment><comment><USER5> right now I have 326 open across 6 windows.

I started using Readability to add things that I wanted to read later.

Chrome is currently using 6.3GB of RAM

EDIT: I use CMD + OPT + Left/Right Arrow to navigate through the tabs

EDIT 2: Chrome handles this. I have never been able to accomplish this in Safari and/or Firefox. Even Chrome has issues with this type of abuse.

Edit 3: Doing a quick look over misc tabs it is mostly articles I wanted to read, Cocos2d-X and other programming documentation, e-mail, calendar, Readability a few Tumblr's I follow, SO, etc.

<comment><USER4> > EDIT 2: Chrome handles this. I have never been able to accomplish this in > Safari and/or Firefox.

I heard this a few times. I don't know what I'm doing "wrong" but for me FF easily handles a couple of hundred tabs, no questions asked.

Is it because I often use flashblock and mostly consume boring (work-related) pages? As far as I remember that used to be the case on Mac as well.

<comment><USER5> Yeah, I dont play any Flash and I have an extension for Chrome that doesn't auto-play YouTube. (new, I had to find something as after a crash all the movies start to play after a relaunch.)

</comment></comment></comment><comment><USER6> This is a shameless self-plug, but it's relevant to tab hoarding. A while back I created a Chrome extension called Tab Flow to deal with my own troubles with this. Grab it from the Chrome store and feel free to hit me up with feedback/suggestions if you can think of a case it doesn't cover.

[https://chrome.google.com/webstore/detail/tab- flow/pfhnncnie...](https://chrome.google.com/webstore/detail/tab- flow/pfhnncnieignceheeojlnpfhkblicdjd?hl=en)

</comment><comment><USER7> In chrome, the "Tab Count" extension gives you a quick way to find the answer.

[https://chrome.google.com/webstore/detail/tab- count/cfokcacd...](https://chrome.google.com/webstore/detail/tab- count/cfokcacdaonnckdmopmcgeanhkebeaio)

In my case, 82. When the favicons start to disappear I open another window.

</comment><comment><USER8> I have three different instances of Chrome open. Each with about 30+ tabs, each for different research and problem sets.

Since it's Friday, I'm going to try and close everything by the end of day. I'll do this by grabbing the URLs of the important things, save them to a text file and write a sentence on why I need to open that link again. For example, if I'm researching something on say, OAuth, I'll have about 15 tabs open, stuff scattered everywhere. I'll eventually close them all and have some cohesive notes on the topic that I can either act upon, or ignore. Regardless, the tabs will be closed and my mind/task freed.

Edit: in addition to my own notes, some of the tabs I'll add to a read it later service, and some I'll add to Springpad (things like libraries that I have categories for, etc.)

</comment><comment><USER9> Tabs are an extremely poor way of managing your space. In this case, your space is your screen.

The issue with tabs is that once you are past 10, you are significantly degrading the readability of your content. In order to reference 'x' material, you have to parse through all your tabs until you find the right one. This is a valuable waste of time and energy.

Over the last year I've slowly moved towards finding a solution to the tabbing dilemma, and how to actually have a huge number of different windows open, and I found it's already been solved. Workspaces.

If you've used a Macbook, you probably found out about 4 finger swiping, which switches between different 'workspaces', different, full-sized screens.

Similarly, on Linux distros, workspaces are usually enabled by default, and accessed via CTRL+ALT+ARROW_KEY.

On Windows, I found the free program Dexpot to be similarly as useful, except that the swapping is definitely not as smooth as on Linux/Mac.

The main benefit of workspaces is literally to section off your activities according to workspaces. For example, I will have a text editor open in one workspace, and a terminal open in another. I swap to one to compile, I swap to another to write.

I will then have several workspaces of pure reference material. C++ documentation, other specific documentation, random .pdf files, stackoverflow on Chrome and similar things.

And finally I'll have another workspace that's more of a play/irrelevant to activity theme. This way, tabs don't really build up (30+) unless I explicitly ignore the way my workflow is designed. This has been part of my evolution from Bookmarks to Hotkeys to now, efficient workspaces. I'm working on Macros.

However, for casual business, I'll usually have 20+ tabs open. :p

</comment><comment><USER10> A couple of months ago I switched to Firefox for my daily browsing needs because of its smarter handling of tabs. The following two features made it worth it:

       /1/ Tab groups -- I have a tab group for my work,
           another for general comms, and yet another
           which serves as a "to read" buffer.
           https://support.mozilla.org/en-US/kb/tab-groups-organize-tabs
           The default shortcut is command+shift+E

       /2/ Tab unloading. Firefox is smart about unloading
           from RAM tabs which have not been used recently.
           Upon focusing on the tab it comes back to life
           as it was before.

Thanks to /2/, my Internet addiction can go on unabated for much longer periods now despite the fact that I have only 4G of RAM. With Chrome I used to "max out" at 20-30 tabs, but with Firefox I can go to 50+ tabs, especially if they are in a tab group that hasn't been unloaded from RAM.

I still use Chrome for web dev though. The developer console, and tools are superior.

update: I HIGHLY recommend y'all try out this tab group thing. Here is a screenshot of what it looks like: [http://gigaom2.files.wordpress.com/2011/03/firefox-tab- group...](http://gigaom2.files.wordpress.com/2011/03/firefox-tab-groups.png)

</comment><comment><AUTHOR> Biggest gainer of tabs is what I call 'stackoverflow' explosions. I have a problem, then I find 10 interesting entries to be read later, but want to return to the IDE. But I also have 30 tabs on the left that I always want to get down to reading one day. Basically I never return to my bookmarks so I use tabs instead.

<comment><USER11> I'm the same way with 150+ tabs open just now. Bookmarks just don't work for me..

Every so often I go through the tabs and bookmark anything still relevant, not that it ever helps me find it again.

</comment></comment><comment><USER12> After 5 it becomes unmanageable for me. I typically have a little more than that. My remedy is similar to my data management strategy: If its junk deal with it now. Delete/close the tab now rather than filter through it later. Anything I think I might need later gets tagged into Delicious.

</comment><comment><USER13> I used to use bookmarks when they were simple to use.

I'd find a page and click `add bookmark' and then I would go back to it later. Somehow bookmarks regressed even though they were fine as they were. If I bookmark a page now, it just goes somewhere.

If I click the `Bookmarks' menu, _I don 't see any bookmarks_. I don't understand what happened, all I see are a bunch of folders of stuff I never added and don't care about.

Anyway, since bookmarks are worthless now, I just have like 50 tabs open at all times now. I periodically go through them and get any code snippets I want or just close them if I read what I wanted.

<comment><USER14> What browser are you using?

</comment></comment><comment><USER15> Back in 2004, I had 200 sites open in Opera. Worked fine on my Pentium II except for closing Opera, which took 15 minutes.

Nowadays I use Chrome, Firefox and Safari on two different machines, and they all have multiple open windows each with dozens of open tabs. I'm pretty good at bringing any machine to its knees.

My biggest problem was when Safari gave up and decided not to remember what was actually in those tabs. That sucked. Or at least, it felt sucky at the time. I have no idea what was in them either, so I don't really miss them. I suspect it means there's something on the Internet that I haven't read.

</comment><comment><USER16> I only have 52 today, but I recently went through a closed a bunch. I call it "Tab Hoarding".

*edit: I also have probably close to 1000 open on Chrome on my iPhone (they're hard to go through)

</comment><comment><USER17> Currently I have 267 tabs loaded in Firefox and in any given day I might load 50-100 tabs which I devote around 2 hours in a day to reducing down to around the 250 mark. I had about 420 tabs but in the last couple of weeks I have actively reduced them to the essential 'must-read' one day. [http://imgur.com/1K4s6MP](http://imgur.com/1K4s6MP) (this was a couple of days into my drive to reduce my tabs). Oh and I use firefox on linux. Hands down the best browser I have ever used.

</comment><comment><USER18> I used to do 30 - 50 tabs. Now I'm better: [http://i.imgur.com/xhLmt2A.png](http://i.imgur.com/xhLmt2A.png) \- almost all are work related (except those with that orange Y favicon)

I discovered that 30-50 tabs wasn't conducive to working environment.

If there can be a solution - it's this: if a tab has been open for more than say 3 hours and it's been untouched (focus has not gone to it), it needs to be closed. I currently do this manually

</comment><comment><USER19> I typically peak out at 30 or so, but never keep more than 10 or so open for long periods of time.

My wife, on the other hand, regularly consumes 2-3 gigs of memory with her Chrome usage. Sometimes, when I'm doing some heavy lifting in R, I have to log into her account and close her browser windows, just so I don't hit swap.

</comment><comment><USER4> I sometimes have up to a few hundreds.

Pinboard extension lets me stash away sets of tabs and treetabs adds structure. Firefox lets me find back to tabs by typing in the (awesome) address bar.

Hardware ranging from 6y.o. hp laptop to 6 core desktop w/ssd.

</comment><comment><USER20> I use Great Suspender extension for Chrome, which allows me to unload the tab, so it doesn't tax the memory. Then I can selectively open the tab when I'm ready to read. Otherwise, my 100+ tabs will create havoc, and slow down the Chrome to a crawl.

</comment><comment><USER21> Something like 60 or so, but Chrome handles it all without missing a beat. It's only if I have 40+ tabs running flash that there's a problem, and even then its only that flash might crash.

</comment><comment><USER22> I can have fifty tabs open at any given time. Don't worry about it

</comment><comment><USER23> We are working on a solution for that, feel free to register if interested [http://listboard.it/](http://listboard.it/)

</comment><comment><USER24> When I can't see the icons on the tab, and can't see if it's reloading - <USER2> becomes a problem, on my screen its probably 30+

</comment><comment><USER25> Normally around 10, hardly ever over 20, never over 30.

Drives me crazy having loads open, I kind of treat them like a to-do list...

</comment><comment><USER26> I used to have over 200 in Chrome until I discovered OneTab. Now I have 289 tabs in OneTab plus 20 regular tabs.

</comment><comment><USER27> I frequently go up to 50+. It only (somewhat) becomes a problem when you have to reboot.

</comment><comment><USER28> sometimes it gets crazy. I try to keep it at 4-5 though.</comment>


Webhooks 2.0 – the way they should have been - <AUTHOR> https://tomasz.janczuk.org/2015/07/extensibility-through-http-with-webtasks.html <comment><USER2> Your article is helpful, Thanks for share with us</comment>


LLVM 7.0.0 released - <AUTHOR> http://releases.llvm.org/7.0.0/docs/ReleaseNotes.html <comment><USER2> Release announcement: [http://lists.llvm.org/pipermail/llvm- announce/2018-September...](http://lists.llvm.org/pipermail/llvm- announce/2018-September/000080.html)

Sub-project release notes:

[https://llvm.org/releases/7.0.0/tools/clang/docs/ReleaseNote...](https://llvm.org/releases/7.0.0/tools/clang/docs/ReleaseNotes.html)

[https://llvm.org/releases/7.0.0/tools/clang/tools/extra/docs...](https://llvm.org/releases/7.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html)

[https://llvm.org/releases/7.0.0/tools/lld/docs/ReleaseNotes....](https://llvm.org/releases/7.0.0/tools/lld/docs/ReleaseNotes.html)

</comment><comment><USER3> Under "External Open Source Projects Using LLVM 7":

> Zig is an open-source programming language designed for robustness, > optimality, and clarity. Zig is an alternative to C, providing high level > features such as generics, compile time function execution, partial > evaluation, and LLVM-based coroutines, while exposing low level LLVM IR > features such as aliases and intrinsics. Zig uses Clang to provide automatic > import of .h symbols - even inline functions and macros. Zig uses LLD > combined with lazily building compiler-rt to provide out-of-the-box cross- > compiling for all supported targets.

Nice shout out :)

<comment><USER4> Zig needs a Wikipedia page!

It seems like a competitor for Go or Rust? I've been looking into these languages a lot lately, but Zig looks interesting... I wish the website was better at showing off examples and the big features for the language though.

<comment><USER5> I never view Go as a competitor to C, and Rust is more of an competitor to C++.

Zig reads to me as something actually trying to displace C. Or C with no corner cases and some modern features.

<comment><USER6> Go is definitely a competitor to C, but only in places where you can tolerate a garbage collector. Zig seems to be a competitor to C in places where you can't.

<comment><USER7> I disagree, Go ignores errors by default. No sane C dev would accept that as an "upgrade".

<comment><USER8> What do you mean? Error checking for C is very inconsistent (sentinel values and errno), so surely that's worse?

<comment><USER9> I think they mean that C coders have wrestled so much with the language's terrible error handling mechanics (or lack thereof) that it's probably one of the first thing they'd want fix when "upgrading" languages. I would tend to agree.

<comment><USER7> Upgrading error handling is great, but Go has the worst approach on doing it.

<comment><USER8> Worse than checked exceptions (Java)? How about unchecked exceptions?

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Is there anything of particular interest to Rust? I'm know Rust is built on LLVM (for both good and ill but mostly good).

<comment><USER11> Rust updates LLVM more commonly than LLVM does stable releases, so it has been using a version somewhere between LLVM 6 and LLVM 7 for a while already.

I think one of the main areas that improved in LLVM 7 relative to LLVM 6 that Rust cares about is better support for WASM in LLD.

<comment><USER12> We also had to turn off noalias for &mut T for a while, due to bugs, and that was fixed fairly recently, and we turned it back on. I _think_ that was post LLVM 6, but I can't quite remember.

<comment><USER13> Looks like it was as of LLVM 6: [https://github.com/rust- lang/rust/pull/50744](https://github.com/rust-lang/rust/pull/50744)

</comment></comment></comment></comment><comment><USER14> Too bad RISC-V didn't manage to be included yet. Even GCC already supports it. A rare case when LLVM behind GCC on architecture support.

<comment><USER15> Rust has been able to target RISC-V for half a year, so LLVM must have been able to target it for even longer...

<comment><USER16> IIRC it has been considered experimental since version 6. Many people were hoping it would be upgraded to fully supported in version 7.

</comment></comment></comment><comment><USER17> Is there a reason that the libraries have been renamed from 7.0 to 7?

<comment><USER18> LLVM adopted a new version scheme which made the minor version redundant. IIRC someone suggested to remove it and nobody objected.

[http://blog.llvm.org/2016/12/llvms-new-versioning- scheme.htm...](http://blog.llvm.org/2016/12/llvms-new-versioning-scheme.html)

<comment><USER19> Does this page explain the parent's question? It specifically mentions _keeping_ the minor version more than once.

</comment></comment></comment><comment><USER20> Does anyone know where the re-licensing effort stands?

<comment><USER21> The last update I saw was from July:

[http://lists.llvm.org/pipermail/llvm- foundation/2018-July/00...](http://lists.llvm.org/pipermail/llvm- foundation/2018-July/000162.html)

</comment></comment><comment><USER22> What are the main new features and why are they important? E.g. what's "function multiversioning"?

<comment><USER23> [https://gcc.gnu.org/onlinedocs/gcc/Function- Multiversioning....](https://gcc.gnu.org/onlinedocs/gcc/Function- Multiversioning.html)</comment></comment>


Ronald Sullivan Fired for Being Harvey Weinstein's Lawyer - <AUTHOR> https://reason.com/2019/05/12/ronald-sullivan-harvard-fired-student-mob/ <comment> who-knows95 what a bad precedent to set, if you ever have to defend a accused criminal, does that make you a criminal.</comment>