AlphaGo Is Not AI - <AUTHOR> http://spectrum.ieee.org/automaton/robotics/artificial-intelligence/why-alphago-is-not-ai <comment><USER3> The headline for this piece is clickbait. AlphaGo _is_ AI, it's just not strong AI. No AI is strong AI for the moment, but that doesn't mean that the AI we have is uninteresting or a dead end, as the author seems to think.

The author and his editors deliberately conflate the two terms in the headline, and clarify after about a paragraph. Sure, AlphaGo is not strong AI. And Abraham Lincoln is dead. And there are lots of other things everyone knows that don't deserve to be in the news.

Jean-Christophe Baillie wrote this piece. He has done some work in AI and computer vision, and he had the opportunity here to write a piece that reflected that expertise. Instead he made a rather facile point that is similar to saying "Graffiti isn't art." That argument won't lead anywhere interesting.

He rehashes the Chomsky-ian argument about meaning. That AI's won't understand meaning until they can connect representations to the world. Then he makes the point that this requires embodiment, that they have a physical body in space through which they connect to the world. I don't believe either of these are necessary requirements for AI.

An AI that solves a lot of problems better than humans, and transfers that learning across many problems with relative ease, is getting close to strong AI. It doesn't really matter whether the machine constructs meaning to itself or not. It doesn't have to be humanlike to be strong. Secondly, AIs can train perfectly well in virtual environments. They don't have to be embodied as robots to be considered strong. We can model the world with enough complexity to give AIs problems that, if solved, might define them as strong.

<comment><USER4> It's not clickbait. You're being pedantic. It's clear the author meant true / general / strong AI and was merely addressing the hype of some non-AI researchers.

It's a response to people who think because of AlphaGo that we are on the cusp of achieving true / strong / general AI.

> An AI that solves a lot of problems better than humans, and transfers that > learning across many problems with relative ease, is getting close to strong > AI.

We're not close. See Yann LeCun's statement on AI after AlphaGo [1] and the HN response [2]

[1] [https://www.facebook.com/yann.lecun/posts/10153426023477143](https://www.facebook.com/yann.lecun/posts/10153426023477143)

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

<comment><USER5> I have always found the idea that there's a hard line between strong and not- strong AI extremely naive. The whole thing is a long gradient of progress. Strong AI is going to creep up on most programmers like the proverbial boiling frog, and internet forums will be full of people denying its existence throughout that process.

<comment><USER4> > I have always found the idea that there's a hard line between strong and > not-strong AI extremely naive

You probably haven't studied much or any AI. In my opinion, those who haven't researched a subject don't understand the details and are likely to make more inaccurate predictions than experts.

<comment><USER5> What a randomly self-serving assumption to make.

<comment><USER6> I can't agree. If we can blur the difference between weak and strong AI, that 'transitional form' (missing link?) will be enormously important to the future of AI (and mankind).

In the past 50 years, AI has seen hundreds of small successes in narrow tasks that used to require humans. But none so far has shown the potential to scale up, generalize, and serve tasks other than the narrow one for which it was designed. Like IBM Watson, AlphaGo too is likely to be consigned to the AI scrapheap in the sky.

BUT... the deep net technique used by AlphaGo shows more promise to solve the remaining unsolved AI tasks than any AI method before it. Yes, we still don't know DL's limits, like whether it can integrate one-shot learning, or build and reuse a diverse knowledgebase, or transfer specific methods to solve new more general problems. But as of right now, it's shown greater promise to solve novel weak AI tasks than any past technique I've seen. The author overlooks that potential deliberately and provocatively, and IMO, pointlessly.

Can DL scale up into strong AI too? I think the important thing here isn't that the answer isn't obviously yes (as the author posits), but that the answer isn't obviously no. And in the 50+ year quest for strong AI, that's a first, at least for me.

</comment></comment></comment></comment></comment></comment><comment><USER7> The piece really makes the only point worth making in the beginning:

> What is AI and what is not AI is, to some extent, a matter of definition.

It is by the general and widely used definition that AlphaGo is actually an AI. It just happens to solve one very specific problem very well, making it a weak AI.

> Again, the rapid advances of deep learning and the recent success of this > kind of AI at games like Go are very good news because they could lead to > lots of really useful applications in medical research, industry, > environmental preservation, and many other areas. But this is only one part > of the problem, as I've tried to show here. I don't believe deep learning is > the silver bullet that will get us to true AI, in the sense of a machine > that is able to learn to live in the world, interact naturally with us, > understand deeply the complexity of our emotions and cultural biases, and > ultimately help us to make a better world.

The piece was written at a time when the world was much more interested in what AlphaGo was doing and once again people were perhaps getting too excited about AI, but it really doesn't hold much value today. It may have been good to extinguish some of the misguided enthusiasm people were exhibiting back then, but no one is even talking about AlphaGo at the moment and there is little to no value in discussing what it means for strong AI anymore.

<comment><USER8> Speaking as an AI researcher, almost nothing is "AI" research. In practice i feel most current AI research falls into two categories:

* Fuzzy problems -- image, sound and free text recognition. Where there is no real "true answer".

* Problems too hard to solve in a reasonable time without heuristics -- SAT, scheduling, etc. In practice NP-hard problems and further up the complexity heirachy -- AlphaGo goes here.

Once we know how to do something reliably, it stops being AI and just becomes "an algorithm" :)

<comment><USER9> is there any research into making a "generic" AI that can solve any problem without the researcher first having to know what that problem is? i.e., human style learning.

<comment><USER10> Not entirely sure that is a fair description of human-style learning. Our overall problem to solve is 'survive and reproduce'. Anything else can be seen as just a sub-problem of that. Humans are taught by other humans how to solve problems since the day they are born. Our DNA passes on a millions of generations worth of learning from our ancestors about how to solve problems.

<comment><USER11> It is a fair description. That being: able to enumerate a large number of arbitrary goals and define a large number of basic pattern classifiers/feature extractors.

When people give credit to the human designers for AlphaGo's wins, that it is really a win for humanity, I disagree. The wins are alphago's even if the design is of human ingenuity.

When You say that the outputs of human ingenuity should be credited to Evolution, I similarly disagree. You might as well credit evolution for AlphaGo's win. While it is true that Evolution invented the first AGI (and in some though not all ways, a superior intelligence to it), it still makes sense to separate the products of human learning from whatever structural priors DNA passed along. I'll also point out that compared to most animals, humans actually have weaker priors and spend a lot of their early days learning to learn.

</comment></comment></comment></comment></comment><comment><USER12> One of the co-founders of DeepMind (Shane Legg) has provided the following definition of intelligence: "Intelligence measures an agent's ability to achieve goals in a wide range of environments" in [1]. This definition has been pretty influential, and in the sense of this definition, AlphaGo is not AI. But it is a great step _towards_ AI.

[1] S. Legg, M. Hutter, Universal Intelligence: A Definition of Machine Intelligence. [https://arxiv.org/abs/0712.3329](https://arxiv.org/abs/0712.3329)

<comment><USER13> This definition has the (unintentional?) effect of defining-away human intelligence. By the time a machine can demonstrate "enough" achievement in different domains to be called intelligent, the same high bar would disqualify any actual human being. If "a machine has to master backgammon, chess _and_ poker, not just be a world champion at one of them" is a prerequisite for intelligence, then I don't think that any one human can demonstrate intelligence either.

Consider AI as a newly discovered species. If you were trying to discern if a previously unknown cetacean were intelligent, or if life discovered on a distant planet were intelligent, would you _only_ say "intelligence discovered!" after it equaled-or-surpassed human performance on _many or most_ kinds of thinking historically valued by humans? I wouldn't. I think that AI is already here and that the people waiting for artificial _general_ intelligence will keep raising the bar and shifting the goalposts long after "boring" narrow AI has economically out-competed half the human population.

<comment><USER14> I think the quote does a great job at explaining why a lot of people have been critical of labeling the recent breakthroughs in Machine learning as real intelligence. Most people define intelligence in comparison to humans. Things like being the best GO player in the world are so specialized that they don't seem very human at all.

Most people will not be impressed by a machine that can master backgammon, chess and poker, despite it being a great technical feat. They would be impressed by one that can successfully teach a 5th grade math class, even though there are hundreds of thousands of people who can do this.

This would require more than teaching the kids math, but also how to deal with the kid who loses a parent during the school year. How to deal with bullying in the class, with misbehaving students. None of it is "specialized knowledge" like playing GO. And we are nowhere even remotely close to this.

<comment><USER13> I used to think that the rarity of human mastery of games, and games' abstraction from the physical world, were what prevented most humans from perceiving machine intelligence as intelligence. Then the 2005 DARPA Grand Challenge for self-driving vehicles showed that machines could perform a task that most adult Americans can perform, that no non-human animals have ever been taught to perform, and that requires significant awareness of the physical world. But AFAICT it didn't cause a sea change in how most people think about intelligence, human and otherwise.

There has been an uptick in people pondering the economic implications of driverless vehicles and a more robotic future. That discussion seems kind of oddly isolated from re-considering the nature of intelligence, human and otherwise. It's as if after the Industrial Revolution people kept narrowly scoping the meaning of "power" to "muscle power" rather than acknowledging mechanical forms. _Oh, yes, that coal fired pump can remove water from the mine faster than I can... but it just uses clever tricks for faking power._

<comment><USER15> > a task that most adult Americans can perform, that no non-human animals have > ever been taught to perform

Woah wait what? Non-human animals successfully navigate >7 miles of mountain terrain _all the time_.

Machine intelligence doesn't seem like "real" intelligence because it just doesn't seem as generalizable. Taking the engines and hydraulics used to great effect in water pumps and applying them to construction cranes required engineering work, sure, but no new physics. But you can't just take the convolutional neural nets that are breaking new ground in computer vision and apply them to natural language processing, you need new computer science research to develop long short-term memory networks.

The cool thing about AlphaGo, from my understanding, was that it was able to train the deep learning-based heuristics for board evaluation by playing a ton of games against itself. This is especially awesome because those heuristics are (were?) our main edge over machines [1]. But in CV and NLP, playing against yourself isn't really a thing, so again, this work doesn't automatically generalize the way engines and hydraulics did.

[1]: [https://en.wikipedia.org/wiki/Anti- computer_tactics](https://en.wikipedia.org/wiki/Anti-computer_tactics)

</comment></comment></comment></comment></comment><comment><USER16> In my view, part of the fundamental problem of current AI approaches for tackling general intelligence is the inability to collate and organize different systems and algorithms together in a coherent manner.

To use a flawed but useful mode of thinking: we've succeeded at codifying crystallized intelligent systems (far beyond human means), we've made some progress on fluid intelligent systems (at worst random search), but we have not managed to make any progress on the mediator of the two. We can build a million different single purpose neural networks, but we have so few meta- classifiers for knowing which network to use at which time (and can also change track their own self-modification). Watson is possibly the closest we have at this time, but it seems to work on static information which it cannot update or improve on itself.

</comment><comment><USER17> I don't understand the critics this article receive here. It makes a very good counterpoint to all the hype the AI field is living at the moment, letting people from the general audience believe that algorithms will replace humans quite soon.

You may think it doesn't matter, but we've candidates to the presidential elections here in france building economical programs assuming "robots will do everything soon, so let's provide everybody with a universal revenue" as a likely immediate future.

It is extremely healthy to let people understand all we've been able to build so far are number crunching machines, which absolutely don't give any kind of _meaning_ to the numbers they see passing by. Meaning as : i see what this number represents, and the consequences it has in real people's context.

<comment><USER18> If the mind is that what a physical brain does, then a physical brain can in principle be simulated - by crunching numbers - to produce a mind (some have claimed that there must be more to it than that, but none have come up with a generally-accepted justification for their position.)

<comment><USER17> That's another discussion. The algorithm we're building right now aren't simulateors of consciousness or thought or anything usually attributed to intelligence. They're not even trying to, and the theoretical foundations they're built on aren't theories of consciousness, but pure statistics and signal processing.

<comment><USER18> True, but it does not follow from them being number-crunching machines; that is not a useful characterization in this context.

</comment></comment></comment></comment><comment><USER19> This is how I see it:

If the machine comes up with the decision making logic, it's AI, if it does not, it's not AI.

A sorting algorithm, in most cases, is a description of the logic to decide how to proceed at each step to accomplish the task of sorting. The computer merely executes that logic for us very very quickly.

On the other hand, self driving machine learning algorithms come up with the logic of how to base the decision of when to steer left/right, to what degree, when to accelerate and decelerate, to what degree, all by themselves. Often time, we can't even formalize the logic they use, we can only test to see how well it performs. This is AI. The computer originated intelligence, it did not simply execute it.

Within that, there is a spectrum which even human exhibit. I cannot come up with logic to solve all tasks. For most tasks, I would need a good teacher and a lot of practice before I can find on my own logic that can solve a task, even so slightly, depending on the difficulty of the task at hand.

I'd say there's only one exception to this rule. Sometimes it is useful to call something which appears intelligent AI. Like in most video games, the computer is actually simply executing the logic a programmer told it about, but to most players, you will believe as if it is coming up with it on its own. Most often, it does not and did not, a programmer came up with it, but you're fooled into thinking otherwise, and the computer appears sentient. This is not true intelligence, but being able to use logic to make decision, even if that logic did not originate from you, is probably a part of intelligence. In a sense, if I could program a machine to perform all tasks, even though it uses the logic that I came up with, that machine would appear quite useful. It would only fail when encountering a task it has never seen, or a condition in a task that's not accounted for in my logic. Machine learning would not fail at those, in that, it could re-learn from the new condition, and come up with a different way to solve the task.

</comment><comment><USER20> Relevant Hofstadter quote:

> Sometimes it seems as though each new step towards AI, rather than producing > something which everyone agrees is real intelligence, merely reveals what > real intelligence is not.

</comment><comment><USER21> I really don't understand why all this pedantic squabbling over terminology. Nobody has suggested that AlphaGo is AGI or human-level intelligence. But it is intelligent. Just like in humans or any other organism, intelligence is a spectrum. Artificial intelligence is no different. I think even the laymen understands that AlphaGo is not a sentient being inside a computer, just like people understood the same about DeepBlue.

<comment><USER22> > intelligence is a spectrum

To me, saying algorithms are on the intelligence spectrum is like saying the weather report is on the humour spectrum. It's true but ultimately meaningless, because neither algorithms nor the weather report exhibit the interesting properties of those spectrums.

</comment></comment><comment><USER23> OK, so we have AIs that are capable of solving a very specific problem. My questions is, are AI's capable of being composed? In the sense that if I have 1000 AIs that are each experts at performing their domain specific tasks, can one or more AIs be built on top of them that specialize almost exclusively in delegation? i.e. they delegate intelligently depending on the task at hand. If that's possible, then we could in theory build a generalized AI, right?

<comment><USER16> A simple decision tree could suffice. Is it a speech problem, is it an image problem? Is it a classification problem? Failing to find an acceptable answer, it does what seems closest or makes a random but plausible decision. This doesn't seem too far from what humans would be doing. Part of the problem is the meta-recognition of the problem and how to organize that within an actual system.

</comment></comment><comment><USER24> How old is the debate about what is really AI? A program called _Chess_ written in 1970s by Larry Atkin and David Slate at Northwestern did manage to win one game from David Levy. See [https://en.wikipedia.org/wiki/Chess_(Northwestern_University...](https://en.wikipedia.org/wiki/Chess_\(Northwestern_University\))

Atkin often complained about the characterization of their program being AI, saying (paraphrasing here) "It isn't AI. It is just good software engineering."

</comment><comment><USER25> If a chimp could play the game of go at the same level as humans, would we say the chimp had intelligence? When you base your definition of intelligence on sample size of 1 (humans), but can't even define within that context, you get these kinds of problems. Is platypus a mammal or not? Does the classification change the function? Are all humans intelligent or posses natural intelligence? Is there a degree of intelligence? i.e. are some humans in possession of more intelligence than others?

I look at artificial intelligence as an umbrella term which has varying meaning depending on context. If you classify a task as needing intelligence to solve and someone finds a piece of code to do it, you have an artificial intelligence there. You can keep moving the goal post but it's only nuances and definition.

<comment><USER18> There are problems where humans need to use intelligence, but which are amenable to brute-force computing - chess is an example - and that does not, in my view, make brute-force computing class as intelligence. It does not accord with what the term AI originally meant, and the first moving of the goal post was to apply it to these cases.

</comment></comment><comment><USER26> Defining AI is hard - we can agree on that. I think the best definitions are in the form of tests that match the performance against organisms that have developed intelligence through millions of years of evolution. The Turning Test is a good example of this. I think that we can all agree that an AI that passes the Turing Test is intelligent. But that is the final goal post. What about intermediate milestones? My opinion is that games just don't count.

I think that creating similar test as milestones would do more to progress the AI field. Like the Turning Test, it must test that parity with another intelligent being is achieved. Intelligence is a spectrum from "not very" to "omniscient". What are some organisms that are closer to the "not very" end of this spectrum that would be good candidates for parity tests? How would a parity test be performed?

It is in answering that question that one arrives at "There is no AI without robotics". If you want to demonstrate that your artificial cockroach is as intelligent as the real thing, then you have to build a robot. It doesn't have to be a physical robot as long as you have a simulator that can do a very accurate simulations of the physics of the environment, the AI candidate, and their interactions. That's not so easy, which is why many if not most researchers build physical robots.

Would a cockroach be a good first milestone? Too complex? How about a worm? Achieved parity with cockroach? Then move on to Jumping Spiders. When your great-grandchildren achieve that parity, my great-grandchildren will certainly celebrate with them.

</comment><comment><USER27> IMO there are only 2 problems in machine learning (ML):

1 Regression - Given a set of vector pairs Xi and Yi, find a function that maps each Xi to Yi minimizing some objective function. 2 Path Finding - <USER2> some topology (typically on some regression output) find the "best" path, given some objective function.

 __

All other problems (classification, clustering, etc) can be reposed as a combination of these two.

Viewed in this way, an "AI" system set on any reasonable test of intelligence would score super-human (defined against the average adult human) with the current set of algos, with one caveat.

If we think of operating systems in say the 90s we would mostly agree that few innovations (evolutions as opposed to revolutions) have occurred when compared to the OSs we have today. It's the development, integration, testing, tools, hardware support, etc that have taken all this time.

So, to the article's point, the AlphaGo system does these 2 things pretty well just as Windows95 did things pretty well. Yet even today I have to restart my computer every time there is the most trivial of updates.

TL;DR Super human Audio/Visual/NLP ML == AI is both here now and a long way off.

 __One could probably cut this to one but stating it would be very convoluted. Also "pathing" problems are typically non-convex and real-time whereas regression problems are typically not.

</comment><comment><USER28> One problem with defining what is and isn't AI in the current age is that as something approaching "real" AI - rather than Hollywood AI - enters the public consciousness, it is seized upon by marketers wanting to attach the new buzzword to their products, effectively diluting the term in the process.

Things that a decade ago would have been described as performing regression analysis, and just last year doing machine learning, may be described this year as being powered by AI.

</comment><comment><USER29> Margaret Boden made these points previously. [http://www.sussex.ac.uk/profiles/276](http://www.sussex.ac.uk/profiles/276)

A fun alternative strand in AI research driven by these thoughts (I think) is typified by Rosie. Rosie is the proper job.

[http://soar.eecs.umich.edu/articles/articles/videos- rosie](http://soar.eecs.umich.edu/articles/articles/videos-rosie)

There is an unseemly comment in this thread that alludes to a genuine issue with the embodied AI arguement. People with other bodies are not lesser intelligences than those who have a socially cast "typical" body or sensors. And given that one has to question this line of reasoning. The answer is that intelligence is embodied outside and beyond your physical being - it's your body, your family, your tribe and so on. I find the philosophy difficult, but to prove that there is something in this view you need to hike out to a wood somewhere and spend a couple of weeks by yourself. Things happen and who you are changes (did for me) cut yourself off or be cut off and you are as less human (autonomous cognitive agent) as one can become.

</comment><comment><USER30> While I acccept Alpha Go as 'real AI' (I watched the match with Lee in realtime, and years ago I wrote and marketed my Go playing program 'Honninbo Warrior') I agree that Alpha Go is not a general purpose AI.

Deep learning has been personally career/interests changing, but I still think that we should be building hybrid neural network / symbolic AI systems.

</comment><comment><USER31> This whole post can be (unintentionally) TL;DRed by a single Wikipedia article: [https://en.m.wikipedia.org/wiki/AI_effect](https://en.m.wikipedia.org/wiki/AI_effect)

The phenomenon of people discounting significant advances as "not AI" is not new. I'm surprised it hasn't gotten old yet.

<comment><USER32> > The phenomenon of people discounting significant advances as "not AI" is not > new. I'm surprised it hasn't gotten old yet.

It hasn't gotten old because people keep calling non-AI AI. I have so far refrained from correcting people because I see it like the word "hacker", which on Hacker News is widely understood in its correct meaning, but is commonly used to refer to computer criminals. I've given up long ago on correcting people to use the word "crackers" rather than "hackers". But since it has been brought up...

Artificial Intelligence refers to something that behaves intelligently and can adapt to new situations. I don't think human brains are magic or divine (I was surprised to learn this is not a universal opinion), so in that sense we're all "just a computation". In that sense the simplest pocket calculator is a thinking machine since it can take an almost infinite number of inputs and respond to it logically. But everyone with (artificial) intelligence understands that this is not what is meant by artificial intelligence.

The article that you link claims that every major advance is referred to as "just a computation", but I doubt that people will claim AI is "just a computation" once a computer learns to speak and can have a real conversation at the level of a 3 year old or something.

<comment><USER33> _like the word "hacker", which on Hacker News is widely understood in its correct meaning_

You'd be surprised. Here's part of just such a conversation for a couple of years ago; _I 've always thought "hacker" without qualifiers meant "person who can code"_

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

Other terms commonly used here with wildly different meanings being applied include "liberal", "feminism" and "capitalism". Screaming matches abound... :)

<comment><USER32> I was thinking the same while typing that (that due to being somewhat mainstream, "Hacker" News might not be understood for what it is). I personally use the catb.org definition[1], which is quite broad and lists 8 definitions -- if you count the 'deprecated' use of referring to 'computer criminal', which I do count as one of the popular definitions.

[1] [http://catb.org/jargon/html/H/hacker.html](http://catb.org/jargon/html/H/hacker.html)

</comment></comment></comment></comment><comment><USER34> Regarding the definition of AI, I find lecture notes for intro to AI courses in various university [1] very useful:

> Views of AI fall into four categories:

> Thinking humanly - Cognitive Modeling

> Thinking rationally - "Laws of Thought"

> Acting humanly - Turing Test

> Acting rationally - Rational Agent

> The textbook advocates "acting rationally"

Indeed most of the things we see today in AI community is solving the problem of "acting rationally" whereas the other categories have their respective fields (Cognitive Science, Cognitive Neuroscience, Philosophy) that are no longer closely related to computer science.

[1] [http://homepage.cs.uiowa.edu/~hzhang/c145/notes/m1-intro-6p....](http://homepage.cs.uiowa.edu/~hzhang/c145/notes/m1-intro-6p.pdf)

<comment><USER35> I would say that if your paradigm for studying thought cannot explain away at least two of the other three, you've got it wrong. A good theory in cognitive modeling ought to have applications to all the rest. A good theory of acting rationally ought to have applications to acting humanly or thinking rationally, and _ideally_ to thinking humanly as well.

</comment></comment><comment><USER36> AlphaGo is not AI in exactly the same way that Aldebaran robots are not robots. Seriously, what do those robots do? They are just one step above Disneyland's pre-programmed animatronics. If this dude wants me to take him seriously, he needs to show me a robot that solves a problem for somebody. Nao is just a waste of perfectly good servos. Or, alternatively, if he insists that Nao is a robot, then I think AlphaGo can be considered AI.

People have been saying "___ is not AI" since Claude Shannon built a robot mouse to solve a maze. Then Shannon's chess playing program was "not AI". Humbug.

<comment><USER4> > People have been saying "___ is not AI" since Claude Shannon built a robot > mouse to solve a maze. Then Shannon's chess playing program was "not AI". > Humbug.

AI researchers say this because they don't want the hype to lead investors putting money in the wrong places, which could cause another AI winter.

OpenAI is one example. Fortunately, that's a non-profit. If it were profit seeking and they had a large investment that went belly up, it might cause the industry to tank.

That bust will probably happen again in the future. The "scrooges" are just trying to forestall it.

</comment></comment><comment><USER37> > Culture is the essential catalyst of intelligence

I liked the article on many fronts and thought it tried to justify most of its claims. However, the quoted claim goes unsupported.

Does anyone know of justifications for the quoted claim?

</comment><comment><USER38> It wud be beneficial to take a pramagtic approach ... AI or not ... as long as the end product helps human conditions ... we just use ... similar debates happened so many times in the past ... there is really no point to divert the attention ... for the people who know, it is clear the title is a click bait ... for the people who don't know .. they find out this anyway after they click ..

</comment><comment><USER39> Its more like AlphaGo is a PIECE of strong AI. Deep learning, as its implemented today, is probably not the secret sauce of consciousness, but it is a powerful and useful subsystem. In that sense, it is a tangible step towards the eventual goal of general strong AI.

</comment><comment><USER40> There's an old AI Winter saying: "If it works, it's not AI" ;)

</comment><comment><USER41> relevant: [https://www.quantamagazine.org/20160329-why-alphago-is- reall...](https://www.quantamagazine.org/20160329-why-alphago-is-really-such- a-big-deal/)

</comment><comment><USER42> are "we" the result of hardcoded DNA or the result of learning? Our objective of survival is kind of hardcoded objective we optimize our life on. Why do we care about if we can build another "intelligence" similar to ours? Why not just build something good at jobs we don't want to do, and leave "culture" to us. I strongly believe a higher being will laugh to see we call ourself intelligent the same way we see artificial intelligence.

</comment><comment><USER43> This is a pointless argument, we all know AI is all about thought. If a person can't move does he still have intelligence?

<comment><USER44> Whilst I don't like the author's way of phrasing interaction with real world information as "fundamentally tied to robotics", humans whose range of movement is restricted to scrunching up one cheek have won Nobel prizes because even with their physiological limitations they've still had access to and assimilated information _vastly_ more complex and unstructured than board positions for the game of Go in order to be able to devise their own considerably more complex and varied end goals and means of communication to reach them. Whilst a computer which can choose hundred of legal Go positions at each turn might actually have more output channels than Stephen Hawking, it hasn't had and doesn't have the range of inputs to be in a position to contemplate alternative end goals such as dictating books on theoretical physics or ordering a cheeseburger (let alone the ability to learn how to be understood by sympathetic non-computers enough to overcome its physical limitations)

One can turn it around: if an organism has no means of assessing or communicating with the outside world bar the ability to send and receive electrical signals so simple they can be mapped to the game of Go and whose survival to the next generation depends on electrical signals combining in various rare patterns hardcoded into its DNA (which could be mapped to the win conditions for the game of Go), would we even consider the possibility of such an organism being intelligent simply because its route to achieving those patterns was incomprehensible to and could not be deactivated by counter- stimuli from the humans that studied it? Would such a theoretical organism even need to be composed of more than one cell?

</comment></comment><comment><USER45> Title: "Why AlphaGo Is Not AI"

Actual argument: "Is [AlphaGo] going to get us to full AI, in the sense of an artificial general intelligence, or AGI, machine? Not quite"

Conclusion: "the rapid advances of deep learning and the recent success of this kind of AI at games like Go"

So not only the article discusses something different from the headline, it directly contradicts the headline by calling AlphaGo a type of AI.

Bad journalism.

</comment><comment><USER46> In a hundred years, google is going to be arguing with Facebook about whether humans are intelligent.

</comment><comment><USER47> > AlphaGo Is Not AI

And the questioning article is not real writing. It fails to the standards of "real writing" that I uphold. A real article doesn't come with a clickbait title, and is better documented. I don't think the author knows what he's talking about - instead, just expressing incredulity based off his gut feelings.

</comment><comment><USER48> AlphaGo is an AI, author of this article thinks AI to understand itself and code itself and have sex then reproduce, WTF? AI is Technology and not Biology. AI and Human Brain are not the same. This is like saying AI to take birth by itself without human programming it.

</comment><comment><USER49> Of course it's not _really_ AI; it works.

</comment><comment><USER50> I guess that makes AlphaGo an _AIdiot savant_?

</comment><comment><USER51> BS. It is AI that this AI can only play Go.

</comment><comment><USER52> Good to know that quadriplegics are not intelligent, much less sentient.

<comment><USER53> Please don't make a point this way on HN.

</comment></comment><comment><USER54> this is one of those clickbaiting articles:

\- taylor swift is not really an artist

\- paulo coehlo is not really a writer

\- javascript is not really programming

\- Trump is not really human

</comment><comment><USER55> Offtopic, but why do people design websites this [1] way? The content isn't even a fourth of the page width, then the rest of the page is filled with random articles, newsletter signup and follow buttons.

The topic sounds interesting, but the presentation is incredibly off-putting.

1: [http://i.imgur.com/Obxuj9A.jpg](http://i.imgur.com/Obxuj9A.jpg)</comment>


Selfspy - Tool for Personal Data Analytics - <AUTHOR> https://github.com/gurgeh/selfspy <comment><USER2> I recently wrote a similar utility. I'll definitively take a closer look at this.

I don't know if you have these features, but here's couple of features I have in mine that you might find useful:

1) I can upload a timeline into Google calendar. I do this by chunking my day into half-hour increments, and whatever I spent the most time on in that half- hour get assigned to the half-hour. (Hey, Google, please let me set the task color through the API - thanks)

2) I also sample the title window of the foreground app, but I can override this. For example, if I go running, or do the dishes, that time will be properly tracked.

3) I assign tasks to categories. For example, emacs, shell, my IDE, are all "Development". Dishes, cooking, etc are all "Chores". I'd rather track time by these larger categories.

I wrote this utility a week ago, so I haven't been using it that long. But I am liking it. One more thing: Python absolutely ROCKS! This utility is less than 700 LOC and was a pleasure to write.

<comment><USER3> Any chance you're willing to share this code?

</comment></comment><comment><USER4> That looks absolutely amazing. You(?) even prepared packages.

> In general, try to set your programs (editors, terminals, web apps, ...) to > include information on what you are doing in the window title. This will > make it easier to search for later.

So if I'm in the terminal, Selfspy can only tell what I'm doing by the window title?

<comment><USER5> No, it's just for easier data retrieval with e.g. selfstats.py. It has a -T option that filters by window title, if I understand the docs correctly.

</comment></comment><comment><USER6> This looks awesome, but I wish there were some built in graphs and charts for my usage, most visited tabs, etc.

Otherwise, awesome stuff!

</comment><comment><USER7> Here is a fork by github user ljos that includes OSX support:

<https://github.com/ljos/selfspy>

I am actively using it, and it seems to be pretty much like the original linux version.

<comment><USER7> Actually, now I've forked this myself to streamline the installation process:

      git clone git://github.com/iandennismiller/selfspy.git
      cd selfspy && make requirements && sudo make install

<comment><USER8> I keep getting stuck at:

Traceback (most recent call last): File "/usr/bin/selfspy", line 19, in <module> from activity_store import ActivityStore File "/private/var/lib/selfspy/activity_store.py", line 9, in <module> import sniff_cocoa File "/private/var/lib/selfspy/sniff_cocoa.py", line 1, in <module> from Foundation import NSObject, NSLog ImportError: No module named Foundation

<comment><USER7> I think Foundation provided by pyobjc. I suppose it's possibly you don't have a suitable version installed in site-packages, in which case you might try running the following command globally (i.e. outside the virtual environment):

      sudo pip install pyobjc

</comment></comment></comment></comment><comment><USER9> This is very cool. I've wanted something like this for a while.

<comment><USER10> Something like this, which can also string together what I do across phone, tablet and computer would be even more interesting.

<comment><USER11> I was just thinking the same thing - potentially you could mashup Selfspy with our SnowPlow (<https://github.com/snowplow/snowplow>) project - so all your behaviour events get logged to S3 and then analysed...

</comment></comment></comment><comment><USER12> I've been using

* Karm on KDE/Linux (tracking by virtual desktop, one for each project)

* Manic Time Tracker on Windows (very much like this but with a full GUI. Only works on Windows though)

* For emergencies on Windows there is also Timesnapper which in facts documents in screenshots what happened (in case you have to "prove" it .)

this utility seems like a real improvement on the current situation though. Thanks in advance!

<comment><USER13> I'm using Timesnapper and it's great. Not only it keeps screenshots for everything, but you can also filter by application while searching for an old website you saw or data that you forgot to save. It needs a lot of storage though. In 50GB you can keep 2-3 months of screenshots.

</comment></comment><comment><USER14> This is very interesting and the first aspect what stood out to me is the possibility of such a tool being used to enable a form of ongoing user sanitation with regards to security. By that I mean opens up the possibility to collect statistics upon how a user does various tasks and qith that finger print approach enable the ability to highlight acceptions to how the user works. This could in essence provide a form of ongoing verification that the user is who they say they are. That is certainly one possibility this type of approach opens up. The ability to do ongoing user biometrics.

</comment><comment><USER15> It seems a bit violent for the HDD, doesn't it? every time I scroll the mouse wheel, I can hear that selfspy writes data! Is it really safe to use for a long time?

</comment><comment><USER16> This is an extremely interesting tool but the thought of collecting everything that I have ever typed and storing it gives me the chills, even if encrypted....

<comment><USER14> You sound like somebody who links there history file to /dev/null. In that I agree, but early days. Though the ability to have everything you typed stored in a controlled way does enable the posibility to see if anything else if collecting that same data in any way and with that opening up the possibility to identify unknown key logging. At the very least it would be another approach and opertunity to spot the bad amongst the good.

</comment></comment><comment><USER17> This is amazing, I'm worried about the possible security flaws, but I don't think that could be much of a problem.

I'll take a look tomorrow and see how it works.

</comment><comment><USER18> Glad someone found and posted this. I'd been using PyKeyLogger for the past week (<http://sourceforge.net/projects/pykeylogger/>), but this one has built- in analytics. Hopefully someone beats me to a Windows version.

Suppose I want to combine this with other personal time-series data--can anyone suggest a good tool and workflow?

</comment><comment><USER19> This is awesome. I just started building an app to track misc personal stats (a la Daytum, but with an API) and this will work great with it.

</comment><comment><USER20> If anyone is interested in collaborating on similar stuff for a commercial project (an OS X app) let me know. I'm working on an objective-c app that does some similar things.

I'm f.mischa at gmail

</comment><comment><USER21> When I first heard the title, I thought it might be an idea I had heard about for providing analytics/funnels/charts for your personal browsing history.

</comment><comment><USER22> I have tried tracking but data becomes too clumpsy to be of any use.</comment>


Simpler Programming for Multicore Computers - <AUTHOR> http://www.technologyreview.com/Infotech/18597/

<comment><USER2> Very interesting. Here's the paper [http://groups.csail.mit.edu/commit/papers/06/gordon- asplos06...](http://groups.csail.mit.edu/commit/papers/06/gordon- asplos06.pdf), which is what you really want to read. From my brief perusal, it looks inventive, but maybe not practical.

By that I mean that its (as it states in the name) a stream-oriented programming language. If you're calculating FFTs (and many people are, especially in high-performance computing), then this could be very useful. Essentially, your language would fit your coding model, which is much easier than adapting say, C, to the same task.

The possible problems I see here are 1) I haven't actually seen a parallelization graph for even something simple like linear algebra vs. number of cores and 2) there are many cases in which I can see this as being just as complicated as threading/semaphores/whatever. If the application you're using does not lend itself to concise representation in the stream metaphor then this could lead to more problems than solutions.

For two other "next-gen" languages that seek to yield an implicitly parallel solution, see Manticore (<http://manticore.cs.uchicago.edu/> University of Chicago) and Data Parallel Haskell (<http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell> mostly University of New South Wales but Peyton-Jones is putting in some time as well).

<comment><USER2> OK, so careful reading turns up this gem

 _Our compiler achieves consistent and excellent parallelization of our benchmark suite to a 16-corearchitecture, with a mean speed up of 11.2x over sequential, single-core performance._

Unfortunately, I still can't seem to find the standard Time vs. Cores graph.</comment></comment>


'We cannot tell the world Hong Kong grooms local terrorists' says gov. source - <AUTHOR> https://www.scmp.com/news/hong-kong/law-and-crime/article/3031895/we-cannot-tell-world-hong-kong-grooms-local-terrorists <comment><USER2> > Violence meets definition of 'terrorist acts' according to local and > international laws

When a populous perpetrates violence against it's own government and that government is authoritarian, then that is not a definition of terrorism, but instead and act of rebellion.

History is full of such examples.

</comment><comment><AUTHOR> From article:

> "The administration must guard the dignity of the Hong Kong passport, which > now enjoys visa-free status from 167 countries. The number would drop to 20 > if we admit to breeding domestic terrorists," the source continued."

> The sources pointed to Cap. 575 United Nations (Anti-Terrorism Measures) > Ordinance, first enacted in Hong Kong in 2002 in line with a UN resolution > after the September 11 terror attacks in the United States, that spells out > terrorism related offences.

Yesterday, protestors set a man on fire.

[https://twitter.com/DanielDumbrill/status/119376961133169868...](https://twitter.com/DanielDumbrill/status/1193769611331698688)</comment>


Cephalization - <AUTHOR> https://en.wikipedia.org/wiki/Cephalization <comment><USER2> There is that video game called robocraft where you build robots and fight with them. There I learned to put all vital stuff in one place, because when you are dead you are dead. Spreading the weak spots around a body only increases the danger. A lobster will neither survive blind, nor without mouth, nor without antenna.

<comment><USER3> Also the response time is probably better with a shorter nerve length between sense organs and the brain.</comment></comment>


Living Without Sessions - <AUTHOR> http://www.peej.co.uk/articles/no-sessions.html

<comment><USER2> "Some Web frameworks use session state to track and hold information about the user throughout their journey through the site, however they go against the RESTful principles and should really be treated as a bug."

I'll bet this guy's not fun to be in design meetings with.

</comment><comment><USER3> How do you prevent against CSRF attacks (<http://en.wikipedia.org/wiki/Cross- site_request_forgery>) if you don't maintain any state server-side?

The classic (and best) method for foiling these attacks is to store a special/randomized token in a server-side session, and require that token to be submitted from the client via a standard form, essentially making forged attacks impossible. Take away the ability to store these tokens in some sort of server-side session, and you open your site to attack?

<comment><USER4> Give a ticket with each response, require a ticket with each request. Tickets are signed with HMAC, dated, and individualized to the user login. Creating a ticket, the server forgets it. Receiving a ticket, the server checks it, creates another, and forgets that.

<comment><USER3> I don't quite understand how the server would validate the ticket if it's been forgotten. Wouldn't that just allow any forged request to generate a seemingly valid ticket and submit a request like that. Further, excuse my ignorance, but can you explain how HMAC would help in a more user-friendly language than what Wikipedia provides?

<comment><USER5> From one of the articles linked in the wiki entry:

Basically it's done like this:

1\. The server passes a random string to the client

2\. The client performs a calculation on the password and the random string

3\. The client passes the username (in plain text) and the result of the calculation to the server

4\. The server performs the same calculation as the client did and compares the output to the output of the client.

5\. If it's a match, the client is authentic.

<comment><USER4> That's a HMAC password protocol, it's different.

In the case of tickets, the one signing is "this server then" and the one checking is "this server now", with a period of amnesia (about the data, not about the password) in between.

<comment><USER5> Ahh, my bad. I think I see where you're going with this now. You're basically just remembering the last visit a particular client makes on every request, and then resetting the ticket for the next request correct?

<comment><USER4> Imagine a disposable photo-ID ticket marked "admit one authenticated client". The bouncer takes it, looks at it, looks at you, tears it in half, and lets you in. You get to make a request, and as you carry the response out of the exit door, a member of staff takes your photo and prints a fresh ticket.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> I read this and thought - why not just use sessions?

His client example is riddled with security and integrity issues. People don't like accidentally closing a tab and losing everything.

His server example is just another way of doing sessions.

<comment><USER7> Also the user loses their entire state if they switch web browsers or sit down at a different terminal. Granted they'd have to log back into your site to restore their state but at least there's something there to be restored.

</comment></comment><comment><USER8> Old, old, old idea. Even I was writing about this in 2006.

[http://www.jgc.org/blog/2006/04/stateless-web-pages-with- has...](http://www.jgc.org/blog/2006/04/stateless-web-pages-with-hashes.html)

When I wrote that Matt Sergeant posted that this idea had been around since at least 1999.

</comment><comment><USER9> What if you need state for users without username and password?

For instance let them add things to their cart and only require registraton/login once they buy.

What if you want more than one basket?

What if baskets are shared among users.

Replace "basket" with "state" for above.

How is <http://example.org/shop/users/johndoe/basket> different/better than <http://example.org/shop/users/johndoe/?sessionkey=123456> or <http://example.org/shop/baskets/123456/>

"differ from storing the cart in a user session" I never store anything but sessions in user sessions, carts go in the cart table/whatever. Carts may have a session_id they are associated with, but they are probably keyed to user instead(depends). Probably stored in a cookie(state on the client).

Not saying author is wrong, I just don't get it.

And how come rest folks don't end their resources with a '/'. like <http://example.com/users/bob/> The "root" resource ends in a slash. <http://example.com/> Having that be inconsistent with other resources always bugs me. I tend to have verbs not end in slash. <http://example.com/users/bob/delete> Very consistent and orderly to my obcom mind.

</comment><comment><USER5> I'm in full agreement with him within the frames of the shopping cart analogy/function. I'm trying to think though, of things I currently use a session state for that would suffer under this process.

The cart on client scares me when it has to do with data that isn't trivial. (ie, personal data etc) I don't have these concerns with the "cart on the server" idea, but it does create some interesting issues where devs need to be explicitly aware of who is accessing this data at any given time.

<comment><USER10> No kidding. Preventing forgery would be a nightmare.

<comment><USER8> No it isn't. You just sign the data that's on the client and check the signature when it is returned. See <http://news.ycombinator.com/item?id=325551>.

</comment></comment></comment><comment><USER11> an interesting read but one thing I didn't understand, how is one meant to save the plaintext username & password client side (so as to be able to send them with each request) without putting them in a cookie or requiring that the user's browser is set to 'remember this password' - anyone got any ideas?

<comment><USER12> I think the point is not that no session state at all should be stored client side, but that most session state should not be.

<comment><USER13> Actually, Peej is a REST fan. He's saying that if there's session state it should be on the client side. There should be none on the server side.</comment></comment></comment>


Sea urchin population soars 100x in five years - <AUTHOR> https://www.theguardian.com/environment/2019/oct/24/sea-urchins-california-oregon-population <comment><USER3> I freedive the Pacific coast on a weekly basis year-round. The little purples are actually tastier than the commercially harvested reds to me, but it's a lot less meat for just as much work. I don't see them really making this work commercially, especially as much as the states (especially California) limit commercial urchin permits.

Thing is, the environment will sort itself out. Two years ago the urchin blight was hitting SoCal extremely hard. This year isn't so bad, a lot of places have kelp coming back extremely thick, and the purples aren't creating any kind of apocalypse. While it's true that there aren't as many sea otters as there were in yesteryear there are plenty of reef fish that eat the urchins. Sheephead are very numerous and they love crunching those guys - <USER2> fact every time I gut one it's packed full of purple urchin debris. In five years I'm sure there'll be an imbalance with too many sheephead, and we'll have some other article to read and worry about.

<comment><USER4> That seems like a generalized gospel in the US : the environment will sort this out. The free market will sort this out. No worries, god's hand will sort this out. I'm genuinely curious, are you taught this at some point ?

<comment><USER5> As an environmental engineer, albeit one educated in the US, this is generally a pretty true statement provided you stop doing whatever it is that wrecked the environment to begin with.

I have seen some of the worst environmental atrocities caused by people with good intentions of "fixing it". Let it be, it's often halfway to sorting itself out if you'll just leave it alone long enough.

<comment><USER6> Even Chernobyl pretty much sorted itself out.

<comment><USER7> For a very specific and narrow definition of "sorted itself out" (I presume you mean that some wildlife has returned and some species flourish in the no- go zones) - there was a substantial amount of effort involved in minimising the ongoing harm, and people literally died as a result of the cleanup operations

To say that Chernobyl sorted itself out is to _completely_ fail to understand what happened and what was done in the decades following it.

<comment><USER8> It would still sort itself out eventually, one way or the other. We can speed up the recovery and try to minimize the impact, but even if there's no humans left life would probably continue in some form. If some species are destroyed, others would evolve into the empty niche. That's how nature works. That's literally how we and all other life got to exist on this planet in a first place, as a replacement for someone else less lucky/efficient.

<comment><USER9> In order to save time and energy, sometimes every detail isn't spelled out. "Sort itself out" presumably has a condition of not causing substantial harm to humans.

It's obvious the world will keep on spinning with or without humans, or maybe not, and it'll get eaten by the sun. But that possibility doesn't need to be addressed every time.

<comment><USER10> For a complete and total failure of an industrial facility a death toll on par with a bad bus crash is far below the threshold of "substantial harm to humans"

Normally when something containing substances hazardous to human health and/or containing a lot of energy goes pop like that it's a lot worse. Strictly by the numbers the Chernobyl is not worthy of being called a disaster. We only hear about it because it is the worst case in its particular niche.

[https://en.wikipedia.org/wiki/Dam_failure#List_of_major_dam_...](https://en.wikipedia.org/wiki/Dam_failure#List_of_major_dam_failures)

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

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> Tons of nutrient runoff into the coastline means certain beings will thrive: algae, jellyfish, and apparently urchins. We're lucky the other substances in runoff aren't doing even more damage.

The question I'd like to know is: why is uni still so expensive at sushi restaurants?

<comment><USER12> These purple urchin are a lot smaller than the commonly harvested red urchin, resulting in less uni. Even the urchin are starving due to overpopulation and loss of kelp.

<comment><USER13> "Starving due to overpopulation" can't explain the scarcity of whatever it is. It is the opposite of scarcity.

<comment><USER14> I dont think so. You can have populations that reach breeding age, overpopulate and starve. Especially where food sources are seasonal.

</comment></comment></comment></comment><comment><USER15> I'm surprised that this article didn't mention otters at all. Restoring sea otters seems like hard work, but they eat tons of urchins.

<comment><USER16> I thought the same thing after watching the recent Nature program "The Serengeti Rules"

[https://www.pbs.org/wnet/nature/the-serengeti- rules-41dfru/2...](https://www.pbs.org/wnet/nature/the-serengeti- rules-41dfru/20105/)

</comment></comment><comment><USER17> So instead of repopulating the declining starfish, the cause of the urchin boom, they will ranch urchins to fatten them to eventually sell?

I guess you do what makes money.

<comment><USER18> No one knows how to repopulate the sea stars. Marine biologists have been actively researching the causes behind the population decline for years. Some species like sun stars are now effectively extinct in the northeast Pacific ocean.

<comment><USER17> Thanks, I didn't know it was that bad.

</comment></comment></comment><comment><USER19> Seems odd that Uni is relatively expensive and rare in the US as opposed to say Japan then.

</comment><comment><USER20> At

[https://www.pbs.org/video/the-serengeti- rules-41dfru/](https://www.pbs.org/video/the-serengeti-rules-41dfru/)

is

Nature The Serengeti Rules Season 38 Episode 2 | 53m 14s

I has some NICE biology science.

The first parts are all about starfish, mussels, sea urchins, kelp, and sea otters and how they do or do not _balance_.

The researchers formulate a theory of _keystone_ species and illustrate that starfish and sea otters can be examples. Then they continue and, in fresh water lakes, count large mouth bass as a keystone species and, then, go to Africa and the Serengeti and count Wildebeest.

They propose that _keystone_ species are a general phenomenon.

The beginning of the program, the first segment, on starfish in tide pools, shows a clever biology experiment that starts to establish the _keystone_ idea. So, yes, without starfish, some mussels take over.

In the kelp forest of the ocean, without sea otters, the urchins take over, eat all the kelp, and the system ends up with only starving urchins. Looking at the video, the urchins do look purple.

Sure, for positive integer n and n species, have an n x n matrix A = [a_ij] where a_ij is the _propensity_ or some such of species i to eat species j. Then get rates of predation, start with a distribution of the n species, and then with the matrix A push the distribution forward in time. Then, as just a math problem, might identify a _keystone_ species in terms of the matrix A.

Of course, also see if the distribution converges. So, may be looking for eigenvectors with eigenvalue 1?

</comment><comment><USER21> Happy to help by eating hundreds of them per year, those things are delicious.

</comment><comment><USER22> There is one marine production which, from its importance, is worthy of a particular history. It is the kelp, or Macrocystis pyrifera.

This plant grows on every rock from low-water mark to a great depth, both on the outer coast and within the channels. I believe, during the voyages of the Adventure and Beagle, not one rock near the surface was discovered which was not buoyed by this floating weed. The good service it thus affords to vessels navigating near this stormy land is evident; and it certainly has saved many a one from being wrecked. I know few things more surprising than to see this plant growing and flourishing amidst those great breakers of the western ocean, which no mass of rock, let it be ever so hard, can long resist.

The stem is round, slimy, and smooth, and seldom has a diameter of so much as an inch. A few taken together are sufficiently strong to support the weight of the large loose stones, to which in the inland channels they grow attached; and yet some of these stones were so heavy that when drawn to the surface, they could scarcely be lifted into a boat by one person. Captain Cook, in his second voyage, says, that this plant at Kerguelen Land rises from a greater depth than twenty-four fathoms; "and as it does not grow in a perpendicular direction, but makes a very acute angle with the bottom, and much of it afterwards spreads many fathoms on the surface of the sea, I am well warranted to say that some of it grows to the length of sixty fathoms and upwards." I do not suppose the stem of any other plant attains so great a length as three hundred and sixty feet, as stated by Captain Cook. Captain Fitz Roy, moreover, found it growing up from the greater depth of forty-five fathoms. The beds of this sea-weed, even when of not great breadth, make excellent natural floating breakwaters. It is quite curious to see, in an exposed harbour, how soon the waves from the open sea, as they travel through the straggling stems, sink in height, and pass into smooth water.

The number of living creatures of all Orders, whose existence intimately depends on the kelp, is wonderful. A great volume might be written, describing the inhabitants of one of these beds of sea-weed. Almost all the leaves, excepting those that float on the surface, are so thickly incrusted with corallines as to be of a white colour. We find exquisitely delicate structures, some inhabited by simple hydra-like polypi, others by more organized kinds, and beautiful compound Ascidiae. On the leaves, also, various patelliform shells, Trochi, uncovered molluscs, and some bivalves are attached. Innumerable crustacea frequent every part of the plant. On shaking the great entangled roots, a pile of small fish, shells, cuttle-fish, crabs of all orders, sea-eggs, star-fish, beautiful Holuthuriae, Planariae, and crawling nereidous animals of a multitude of forms, all fall out together.

Often as I recurred to a branch of the kelp, I never failed to discover animals of new and curious structures. In Chiloe, where the kelp does not thrive very well, the numerous shells, corallines, and crustacea are absent; but there yet remain a few of the Flustraceae, and some compound Ascidiae; the latter, however, are of different species from those in Tierra del Fuego: we see here the fucus possessing a wider range than the animals which use it as an abode. I can only compare these great aquatic forests of the southern hemisphere with the terrestrial ones in the intertropical regions.

Yet if in any country a forest was destroyed, I do not believe nearly so many species of animals would perish as would here, from the destruction of the kelp. Amidst the leaves of this plant numerous species of fish live, which nowhere else could find food or shelter; with their destruction the many cormorants and other fishing birds, the otters, seals, and porpoises, would soon perish also

~ Charles Darwin, _The Voyage of the Beagle_ (1845)

</comment><comment><USER23> Things like this are only going to get worse, as we continue changing the climate. It's a good thing urchin roe is delicious, time to get eating.

<comment><USER24> Things are going to get different. It's only worse in the context of our preconceived notion that the natural world is unchanging.

<comment><USER25> No, it's objectively abnormal.

<comment><USER26> Which time-interval is your baseline for 'objective normality'?

<comment><USER27> The most recent where humans didn't introduce climate changing amounts of green house gases.

<comment> barry-cotter Humans have been changing the climate for longer than we've been farming. We killed off the mammoths, which turned the tundra from grasslands into taiga covered in tiny low growth forest and dramatically reduced the albedo of lots of Northern Eurasia. Humans prefer grassland over forest which is part of why eucalyptus are so prevalent in Australia, they do better with fire than other trees. It has been posited that the Little Ice Age was because when 95% of the American population died there was a great deal less land management and deliberate forest fires, resulting in more than two centuries of above average carbon sequestration and a drop in temperatures.

Humans have been changing the climate for a _long_ time.

<comment><USER28> Yes, but it is much, much, much faster now than any previous time. Plus we have the knowledge of its effects upon us directly and the ecosystem that we rely on to survive, combined with the technological knowledge & wealth in order to reduce the effects and mitigate the impact.

<comment><USER26> So you are talking about Calculus. 'Much faster' implies 2nd derivative.

What rate of change is your baseline for 'objective normality'?

<comment><USER28> You come across as somebody who's trying to fallaciously prove how smart they are, so can dismiss any argument you think isn't worthy of your esteemed intellect. It's not a good look. Your username adds to the suspicion that you're just a troll.

If you really want to, compare the past 150 years with the previous 2000: [https://www.nature.com/articles/s41586-019-1401-2](https://www.nature.com/articles/s41586-019-1401-2)

<comment><USER26> Seeming as you clicked the down-vote button and not the 'reply' button, I am going to just assume you don't know...

Congratulations. You win the argument, and the internet.

Pointing out the problems without offering solutions isn't a very useful thing to do.

<comment><USER28> I don't think I can downvote replies to my own comment on HN. But I'll take the internet crown anyway, thank you!

Edit: just tried it, I can downvote your original comment but not your replies to mine.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER29> Do the eggs taste good?

<comment><USER30> Uni is phenomenal, but unless you're a true omnivore, I'd say it could fall into the "acquired taste" category. In some sense they're also one of the foods with the highest dynamic range. When it's good, it's heavenly, but when it's not, it is truly hork-worthy.

<comment><USER31> I love it. The people that don't are usually those who get weirded out by the texture more than the flavor. It is basically goop.

<comment><USER29> I've had sea urchin eggs before, but I was wondering about these specific species. Has anyone in California or Oregon had them?

</comment></comment></comment></comment><comment><USER32> Interesting. I would've thought that Sea urchins are not that common since they are treated as a delicacy.

<comment><USER28> It's partially related to the work needed to obtain them. There's very little edible meat in each one and the processes to obtain that seem to be largely manual.

</comment></comment><comment><USER33> So this is why uni keeps getting cheaper

</comment><comment><USER34> > the species can go into a dormant state, stop reproducing and live for years > with no food

Interesting.

</comment><comment><USER35> So why does Uni remain so expensive in sushi restaurants

<comment><USER18> It's a different species of urchin.

<comment><USER36> And because that's what people are willing to pay for it.

</comment></comment></comment><comment><USER37> I watched a relevant documentary recently. It's due to global warming and overfishing. Some of the fish that's eating them are disappearing.</comment>


Taking on a New Challenge - <AUTHOR> https://www.facebook.com/permalink.php?story_fbid=2547632585471243&id=100006735798590 <comment><USER2> Same topic and seems to have more discussion: [https://news.ycombinator.com/item?id=21530860](https://news.ycombinator.com/item?id=21530860)

</comment><comment><USER3> Great, Artificial General Intelligence - brought to you by Facebook! Connect with all your friends and loved ones - whether you want to or not!

<comment><USER4> I think he said he's LEAVING fb...

<comment><USER5> He's staying as Consultant CTO for Oculus (which FB owns).

<comment><USER6> He also said he'd be working on the AGI on his own, pretty clearly not at FB.</comment></comment></comment></comment>


Show HN: The easiest 2-factor auth - <AUTHOR> https://developer.mepin.com/

<comment><USER2> How is it easier than TOTP, which is an IETF standard, and implemented by Google Authenticator (amongst others)?

<comment><AUTHOR> It's easier because you only need to tap the app to verify. No need for OTP codes, though OTP is a fallback if your device is offline.

<comment><USER3> Are you concerned that it is a lot easier to trick users into clicking a button to authorize the login?

<comment><AUTHOR> Of course user behavior has to be considered. The MePIN app does allow the user to set up a personal PIN code, so an authorization would then require the PIN code and a tap.

<comment><USER3> A PIN would do nothing to keep a user from being tricked into authorizing an attacker's login.

<comment><AUTHOR> Don't want to argue, but yes it would. It would stop the user for a second, giving time to the brain to process for a while what's going on.

<comment><USER3> If a user is willing to press the button, a PIN isn't going to stop them. Your app is decreasing security in favor of usability, which is not something look for when they are looking to implement two factor auth.

I think anyone who would blindly use your proprietary two factor solution that makes it easier for end users to authorize other people to log in would be silly.

<comment><AUTHOR> I can use similar arguments; a user can be tricked to enter an OTP to a phishing site. For that the hacker does not need to time the attack to the same second, so it's much much easier attack for the hacker.

'No 2FA' is the real silly one here. Any 2FA is so much better than no 2FA, and usability has been a big issue so far in 2FA adoption.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER4> Hate to be one of these guys, but the site is totally unreadable on Android Chrome. The left bar covers everything and won't move. Maybe offer a close or collapse button for it?

<comment><AUTHOR> This is now fixed. Thanks for the kick.

</comment></comment><comment><USER5> We use MePIN in our service and I have to say that it's working really great. Easier for the user and also more secure than Google Authenticator (for which secret key can be stolen more easily).

</comment><comment><USER6> So what happens to my users if your service ever goes down or disappears?

<comment><USER7> Apparently they offer an in-house solution.

> MePIN comes as a distributed hosted service containing simple-to-use REST > API and handy client side scripts. Hosted or in-house white label solution > is also possible, contact firstname.lastname@example.com.

<comment><USER8> Cool! I wondered the same question you are responding to after getting a 2-factor mobile app for an online service I use.

"What happens if/when these fellas implode?"

The answer in the site's case would be to fall back to SMS. Something like this that could be integrated into the site itself would be better, working in tandem with a more typical fall-back of course.

</comment></comment></comment><comment><USER3> From your home website, it looks like you are relying on users deciding if they should authorize a request based on OS, web browser, ip address, and location.

Users are going to essentially ignore ip address. OS, web browser, and location are easy to spoof. If a half competent attacker makes a request, how is the user to know if they should authorize a request.

I understand that using OTP codes can be annoying to some users, but it is MUCH harder for a user to hand that code over to someone in order to login.

<comment><AUTHOR> First; the user does not have to care about OS, browser, ip address or location. Though those can be shown to a user if the service provider wants.

Authorization requests can only be initiated at the back-end by authorized service providers and only for users who have linked their MePIN app with that specific provider. Though of course login verification could be initiated with stolen username/password, which would then alert the user for verification.

Now the added benefit here is that with MePIN the user would immediately know that her username and password is at wrong hands if she receives a login verification request while not actually performing a login.

So obviously the user should not authorize unexpected requests. You would not authorize a login if you are not actually performing a login, etc. Concerned users can additionally set up a personal PIN code in the app.

Lack of good usability is currently hampering 2FA adoption, we are working hard to fix that.

<comment><USER3> In this model, all you have to do is time the authorization request appropriately. If an attacker can time their authorization at the same time that the user is logging in, a large number of users are simply going to authorize both requests thinking that it is some sort of glitch.

With the standard OTP model, a user physically can not enter their code for another user.

<comment><AUTHOR> Unfortunately there are several cases where users have entered an OTP code for another user. The recent high profile case was with World of Warcraft's OTP.

</comment></comment></comment></comment><comment><USER9> While two-factor authentication is a good thing from a security standpoint from service providers, I can't help but worry that it's a worry from an individual's standpoint: It's nothing but serving an IP address+account <-> mobile phone number relationship on a silver tablet. Do we really want that?

<comment><AUTHOR> Note that MePIN does not collect or need user's phone number, e-mail address or any other user information. You can use MePIN fully anonymously.

</comment></comment><comment><USER10> What's with those url changes? After a while about a dozen url anchors is cycled through which effectively kills the "back" functionality. If you go past them, you can't stay on the "main" page because another ones are added.

<comment><USER11> Am I correct to assume that you have logged in? An automated setup creates the user account and other objects you need to get started. I admit that actually posting the forms is not the most elegant solution, but a hack. We did it to let you read the full contents of the MePIN Dev Portal without having to fill in any personal information.

<comment><USER10> I just clicked on the link posted here, that is [https://developer.mepin.com/](https://developer.mepin.com/).

<comment><USER11> In that case I have no idea what has happened. The only automatic redirects are related to the first time login. There are just few steps, and back button should work nicely in that flow.

I am not able to reproduce that behavior on any device or browser I have at hand. If you experience that again, Please give information about the OS, Web Browser, and the URL you end to, and we'll have a look into the issue.

</comment></comment></comment></comment><comment><USER3> What methods are you using to make sure that an authorization comes from an authorized phone?

<comment><AUTHOR> The solution is based on Public Key Infrastructure (PKI). Each authorization must be signed with the user's private key. The app is managing and protecting the keys and certificates, so user does not have to figure out key/cert management. Some info here; [https://www.mepin.com/technical- overview/](https://www.mepin.com/technical-overview/)</comment></comment>


Essential Image Optimization - <AUTHOR> https://images.guide/ <comment><USER2> Even lower hanging fruit than optimising compression, is actually choosing the right image format in the first place. Put simply (very simply I may add), if it's an illustration, use PNG, if it's a photo, use JPEG. Once we're over that hurdle, we can go onto managing compression techniques and attempting advanced formats such as SVG and WEBP.

All too often I've seen people encoding 8MP photos as PNGs and wondering why they're all 50MB in size.

Next on the hit list is outputting images at the right size. If the image is never going to be shown greater than 500px wide, save a copy that's 500px wide. WordPress has this feature built in- learn to use it if that's your flavour of CMS. Your bounce rate will go down, I guarantee it.

<comment><USER3> This is not as surprising as it sounds to a web developer. For high quality photography purposes jpeg is bordering on useless, even more so if one isn't using Mozjpeg or guetzli to get images with reduced artifacts. Even for the most basic uses like sharing a photo with friends and family this _can_ be a problem. For example I sent out an album of travel photos and a family member bought me a poster size print of one of them for Christmas ... using the 3200x2400 jpeg photo I had posted to Google Photos. So while if you're a web designer using stuff like big hero or background images jpeg makes sense, there are a lot of ways in which it simply doesn't cut it for most of us.

Fortunately, and _I can't emphasize this enough_, we're now in a situation where the major browsers support Webp or can have fast decoding support easily added. Webp is based on the I-frame encoder of VP8, and for lossy encoding represents a several-generations improvement over Jpeg. And _it 's here today_. Sure, we'll all be using Avif in a HEIF container one of these days, but that isn't relevant to people building systems today.

Use WebP! For everything! Check out some comparisons between WebP and MozJPEG here: [https://xooyoozoo.github.io/yolo-octo-bugfixes/#buenos- aires...](https://xooyoozoo.github.io/yolo-octo-bugfixes/#buenos- aires&jpg=s&webp=s)

I now upload WebP and HEIC images to Google Photos, where they are both supported.

<comment><USER4> > For high quality photography purposes jpeg is bordering on useless

> Use WebP! For everything!

Jyrki Alakuijala, one of the creators of WebP, on WebP vs JPEG [1]:

>> For high quality photography, I (and butteraugli) believe that JPEG is actually better than WebP.

>> Below JPEG quality 77 WebP lossy wins, above JPEG quality 77 JPEG wins (for photography).

>> This was based on the maximum compression artefact in an image -- averaging from 1000 images.

Better meaning here [2]:

>> Faster decode (up to around 6x faster) and less bytes needed at high quality (in comparison to butteraugli scores).

[1] [https://encode.ru/threads/2905-Diverse-third-party- ecosystem...](https://encode.ru/threads/2905-Diverse-third-party-ecosystem- for-optimization-of-webp-and-JPEG-XR-images?p=55785&viewfull=1#post55785)

[2] [https://encode.ru/threads/2905-Diverse-third-party- ecosystem...](https://encode.ru/threads/2905-Diverse-third-party-ecosystem- for-optimization-of-webp-and-JPEG-XR-images?p=55757&viewfull=1#post55757)

<comment><USER3> "For high quality photography, I (and butteraugli) believe that JPEG is actually better than WebP."

That's interesting. Of course, the subjective part of that is one person's take, and the "objective" part of it is pointless because the whole point of Guetzli (the jpeg encoder) is to try to maximize the Butteraugli score, so saying that WebP gets a lower score is not significant.

Personally, WebP looks a lot better to me in the direct tests of equal file size that I've seen. It even looks better than Pik, which is Google's experimental successor to Jpeg that also uses Butteraugli.

And it would be odd, to say the least, if a codec from the early nineties could beat a modern one on Intra-frame coding, which has been a subject of immense research over the years.

Take a look at some of these for yourself. [https://wyohknott.github.io/image- formats-comparison/](https://wyohknott.github.io/image-formats-comparison/)

<comment><USER5> Like MP3 encoders, JPEG encoders have only gotten better over the years, perhaps they've fewer bugs or compromises for compression? Also, there are newer standards for JPEG including JPEG2000 and JPEG XR, etc. Plus many other alternatives: [https://developers.google.com/web/fundamentals/performance/o...](https://developers.google.com/web/fundamentals/performance/optimizing- content-efficiency/automating-image-optimization/#how-far-have-we-come-from- the-jpeg)

So my advice is encode in multiple formats to achieve the broadest browser support and the best image quality/size trade off that you're willing to allow. That said... it does sort of bug me that every couple years we have to revisit which codecs we're using because the implementations keep marching on...

</comment></comment></comment></comment></comment><comment><USER6> One thing people don't think about with some of these optimizers is that it will strip color profile and all metadata. The caveat here is that you can lose color accuracy/range for the former, and vital licensing information for the later.

</comment><comment><USER7> Off topic, but what a great site and source repo. Some highlights for me:

\- use of `<details>` and `<summary>` elements for native web dropdown (see Table of Contents)

\- works/looks just as great with js disabled

\- package.json: {..., "main": "index.md", ...}

\- very informative README, including notes on how he builds the site, [https://github.com/GoogleChrome/essential-image- optimization...](https://github.com/GoogleChrome/essential-image- optimization#additional-repo-details)

<comment><USER8> All of Addy Osmani's stuff is well-coded and/or well-written, I've been reading his front-end stuff for almost a decade now:

[https://addyosmani.com/blog/large-scale- jquery/](https://addyosmani.com/blog/large-scale-jquery/)

</comment></comment><comment><USER9> Nice article. I am a manual image optimiser, but this made me see if Hugo has something built in. And it does - [https://gohugo.io/content-management/image- processing/](https://gohugo.io/content-management/image-processing/). Awesome!

</comment><comment><USER10> A little bit of self-promotion:

I wrote and maintain imagemin-webpack-plugin for optimizing images during the build process for webpack-based javascript projects. It works using imagemin and the various plugins for it, which themselves are just small wrappers around most image optimizers.

[https://github.com/Klathmon/imagemin-webpack- plugin](https://github.com/Klathmon/imagemin-webpack-plugin)

</comment><comment><USER11> I had a landing page with 37 high quality images spread across 5 pages. Used Squash at first to bring down the aggregated size of the images from ~550MB to ~320MB and voila my bounce rates started going down. A few months later i tried out Cloudinary and the conversion rates improved since the biggest bottleneck of the landing page was the images and they were loading smoothly. IMHO one of the low hanging fruits that is worth solving.

<comment><USER12> 320MB is still high going by third world internet standards

<comment><USER3> It's high by any standards. A 60 MB webpage would take 5 seconds to load on a 100 Mbps home broadband connection, which is well above the median in the United States. On most mobile connections a 60 MB webpage is going to be borderline unusable.

</comment></comment></comment><comment><USER13> Firefox 65 added native WebP support.

<comment><USER14> And you can use a WebAssembly build of libwebp to support WebP in Safari:

[https://webmproject.github.io/libwebp- demo/webp_wasm/index.h...](https://webmproject.github.io/libwebp- demo/webp_wasm/index.html)

WebAssembly is a nice way to add support for image containers and formats which don't have browser support yet.

<comment><USER15> This is really impressive actually. The thought didn't cross my mind to just use webassembly for webp decoding.

<comment><USER16> It's maybe not a "good" thought, but it brings to mind the idea of using this technique for a proprietary format (webp with a header change, say) to make images only work on your own website.

Typical users wouldn't be able to view downloaded images; they could only see them through your site.

I'm not sure on the details of web assembly, but if you can obturate the workings then this technique becomes stronger, can web assembly be delivered compiled?

</comment></comment></comment></comment><comment><USER17> This is a must-read for any web developer. Image optimization on the web is the low hanging fruit when it comes to reducing load times.

</comment><comment><USER18> > The ability for PJPEGs to offer low-resolution 'previews' of an image as it > loads improves perceived performance – users can feel like the image is > loading faster compared to adaptive images.

My understanding was that progressive JPEG actually feels slower, since users are less sure when the image has finished loading, and are thus best avoided in most cases.

</comment><comment><USER19> This is an excellent guide! A must read for web developers.

I am really glad we invested in automated image optimization where I work. We run a couple of large real-estate websites and we store tens of millions of images and process thousands a day. Optimizing all of them from the start was one of the best things we did.

When an image gets uploaded, we re-encode it with MozJPEG and WebP and then create thumbnails in five different sizes and upload them all to S3. They get served through a CDN. We initially did the re-encoding and scaling on the fly and then cache them forever. But MozJPEG is really slow so we changed the system to pre-process everything.

When we first implemented this two years ago, Chrome was the only browser that supported WebP. This investment really paid off as all major browsers now support WebP. The website loads really quickly and images rarely give us problems.

<comment><USER12> does this process all happen on aws?

<comment><USER19> Sort of. We run on Heroku, so we indirectly run on AWS.

We're heavy users of Python and we're using the excellent Pillow-SIMD [1] library to do most of the heavy lifting. We made our own builds to link it to MozJPEG instead of libjpeg and include libwebp.

[1] [https://github.com/uploadcare/pillow- simd](https://github.com/uploadcare/pillow-simd)

<comment><USER20> btw Uploadcare is also doing image processing on the fly for you :)

</comment></comment></comment></comment><comment><USER4> I have been making Optimage which is currently the only tool that can automatically optimize images without ruining visual quality [1]. It is also the new state of the art in lossless PNG compression.

I have raised a number of issues [2] with this guide. It's been over a year and they still have not been addressed [3].

[1] [https://getoptimage.com/benchmark](https://getoptimage.com/benchmark)

[2] [https://github.com/GoogleChrome/essential-image- optimization...](https://github.com/GoogleChrome/essential-image- optimization/issues/55)

[3] [https://twitter.com/addyosmani/status/914207017589288960](https://twitter.com/addyosmani/status/914207017589288960)

<comment><USER3> Your benchmark is not a legitimate comparison because it does not compare files of equal size. See [https://kornel.ski/en/faircomparison](https://kornel.ski/en/faircomparison) for an explanation of the problems with your methodology. The files your closed source tool generates in this benchmark are 56% larger than those created by ImageOptim! Have your program generate smaller files and then post the results.

<comment><USER4> > 56% larger than those created by ImageOptim!

And noticeably degraded if you compare those images with the originals. Optimage does apply chroma subsampling, the major winner here, when it makes sense.

My goal is automatic image optimization with predictable visual quality, i.e. images have to remain authentic to originals.

> your closed source tool

FYI, ImageOptim API is closed source and way more expensive if that was your point.

> Your benchmark is not a legitimate comparison

If you have a better one,

> then post the results

I did post mine. Just why are you taking them out of context and missing others, e.g. lossless compression results?

</comment></comment></comment><comment><USER21> ImageOptim is great. The amount of bytes it has saved me over the years is staggering.

</comment><comment><USER22> Please note that this guide mostly deals with optimizing for network transfer size. As is almost always the case with optimization, there are multiple axes you should be aware of. In this case, a lot of the techniques presented negatively impact CPU usage and, by extension, battery life on mobile devices.

See [https://twitter.com/nothings/status/1102726407744978944](https://twitter.com/nothings/status/1102726407744978944) for some concrete examples.

<comment><USER23> The article mentions that progressive jpegs are slower to decode.

</comment></comment><comment><USER24> This looks like dupe of [https://developers.google.com/web/fundamentals/performance/o...](https://developers.google.com/web/fundamentals/performance/optimizing- content-efficiency/automating-image-optimization/)

EDIT: I am not an expert on licensing but it does look like everything is in order from a licensing perspective (the original content is CCA3 and to me it looks like things are credited properly).

<comment><AUTHOR> Indeed. I'm the one who posted it and I had 0 idea.

Should I reach out to an admin to get this removed?

<comment><USER3> I don't think it's an issue actually - the author is the same, Addy Osmani. See the contributors on the Github page linked by images.guide.

</comment></comment></comment><comment><USER25> Would like to add a practice that may be helpful for someone: I store an uploaded image as an array of objects in the DB. Each object contains format (jpeg, webp, etc.), name, size, hash and other pieces of information about the transformed image. Frontend app chooses which one to render according to a browser (use webp in Chrome for example.) and UI element.

</comment><comment><USER26> Recently I've tested just compressing images as 1 frame in an av1 video with ffmpeg and it seems to work surprisingly well. Browsers seem to automatically display the first frame of the video without needing to play.

</comment><comment><USER27> [https://www.gumlet.com](https://www.gumlet.com) is one of the service which takes all of this into account and makes all essential image optimisations available via nice and tidy API.

<comment><USER19> This looks nice! Judging by your comment history, you are the founder of Gumlet, or an employee.

Why should I pick Gumlet over alternatives? There are a lot of competitors such as kraken.io

<comment><USER27> I am indeed founder of Gumlet. Here are few reasons which makes it superior.

\- cheaper pricing and no minimum monthly payments

\- global image processing locations - ensures lowest latency regardless of location of your users

\- no lock-in and wide variety of cloud storage support including DigitalOcean Spaces

\- prompt support - less than 8 hour response time for all users

\- GIF support

\- especially compared to kraken, we charge only $0.1 per GB compared to their lowest pricing of $1 per GB

\- strong enterprise focus - lot of features planned for enterprise support.

<comment><USER19> Thanks for the straightforward reply!

Are there plans for a self-hosted option? Some business might be scared of being so dependent on Gumlet's uptime for their mission critical image processing.

Gumlet seems to cater towards processing images on the fly, which is what a lot of your competitors also do. It might be interested to also cater towards using Gumlet as a service to pre-process images as part of a pipeline.

I am just thinking aloud, I have no real basis for these ideas at the moment. Just my two cents.

I wish you the best of luck and I'll keep Gumlet in mind, the homepage looks very sleek.

<comment><USER27> That's a good idea. We will consider it if we find appropriate customers for the same. Meanwhile, for uptime, we provide 99.9% uptime SLA which we have been able to maintain since our launch.

</comment></comment></comment></comment></comment><comment><USER28> I'm curious, how would the HN community tackle optimizing (and/or re- optimizing) ~200k images sitting in an S3 bucket?

<comment><USER29> I would think about using Cloudinary to process these on demand as needed if your usage can support this

Cloudinary Fetch pulls images from your S3, caches them, and serves the size and format you request all without touching the original files

<comment><USER28> Cloudinary is nice, but it gets expensive really fast on a high traffic site that's image heavy and bandwidth optimized. For example, a single image might have 5-6 versions on top of the original -- low quality thumbnail, high quality thumbnail, default, default 2x retina, default 3x retina. Then activate their webp service and perhaps offer another image aspect ratio. Each is a conversion that counts against your quota. Now you've got 15+ (con)versions and you're shelling out hundreds of dollars a month.

<comment><USER20> Cloudinary, Imgix, Uploadcare (which I' working for) and others save you money because you don't have to develop and maintain these moving parts. You have to constantly check what's happening with browsers, what formats/encoders are available and which are the best etc.

It's classic build vs. buy dilemma. In majority of cases it's much more cost effective to buy.

BTW, Uploadcare doesn't charge for file processing at all, only for CDN traffic. So you can create as much image variants as you need.</comment></comment></comment></comment>


Debugging Lisp Part 2: Inspecting - <AUTHOR> http://malisper.me/2015/07/14/debugging-lisp-part-2-inspecting/

<comment><USER2> I am following this series like my favorite TV show! Eagerly waiting for the next ones. If the author writes a book on it, I'll buy for sure.

<comment><USER3> Likewise. This is exactly what I need to continue with Lisp. Up until now, I have been writing 10 to 20 line programs and rosetta code copies. This really firms up my understanding on how to actually use Slime effectively and understand a bit more of what Lisp/slime has to offer.

<comment><USER4> I'm doing the Google/lisp-koans ([https://github.com/google/lisp- koans](https://github.com/google/lisp-koans)), and I do agree, these articles are great on learning the innerworks of the tools and the language itself. Great stuff.

<comment><USER5> The CL community on exercism.io is small but top-notch and very helpful. Even after something like 7 years of CL hobby programming I learned something new having experienced Lispers review my code.

</comment></comment></comment></comment><comment><USER6> Can anyone kindly let me know how did he create those mini videos (or those animated videos that shows steps?

Thanks in advance.

<comment><USER7> They are gifs. I used Open Broadcaster Software to record the videos and then used ezgif.com to convert those videos into gifs.

<comment><USER6> Thank you. I am learning Scheme using Dr. Scheme, are you aware of any such debugging tools for Scheme as well? Kindly let me know.

Keep up the good work, you've a very good blog.

<comment><USER7> I'm afraid I don't know that much about debugging with Scheme. I've never built anything large enough with it that I would need to extensively learn how to use the debugger.</comment></comment></comment></comment>