HN user
10-6
This is exactly right. A lot of posts regarding loading times or bundle sizes for frameworks/libraries forget that there are trade-offs when it comes to building an application.
The correct way to frame this is: use a slow/clunky/large/etc framework vs. build everything from scratch (which comes with its own costs).
Sure, you can optimize parts of your application to speed up the JS portion or even remote it completely [1], but it's not always as simple as "your framework is making your application slow so you should think about ditching it."
This article actually ends with a very reasonable conclusion in the section "Are Frameworks Evil?" but I've seen plenty of articles where the author doesn't offer an alternative to some library/framework [2].
[1] https://twitter.com/netflixuie/status/923374215041912833?lan...
[2] https://dev.to/gypsydave5/why-you-shouldnt-use-a-web-framewo...
The author explains a few problems with the current state of the Web under the section The Five Lacks:
- "On the closed social web... We lack freedom, innovation, trust, respect, and transparency."
- "Innovation on these platforms is dying."
- "And there’s little transparency. All of the data is locked up or rate limited to a prohibitive degree."
While some of these may or not even be true (innovation dying, really?), I think the author makes a large leap from his premises to the conclusion. So just because the author claims there are issues with the current state of the web, that doesn't mean the solution is to completely ditch "the tech giants in control suppress our freedom" and remove yourself from the current web platform and applications (e.g. fb, google, etc.)
The best way to determine whether this is a viable and useful solution, and whether or not some of the apps are actually something people want and find useful is to see how many people ditch applications from the "tech giants" start using these new apps built for the social web.
A lot of ideas sounds great in theory, but then don't hold up years down the line. Plenty of new applications and social networks have been created over the years with great explanations and a "Our Philosophy" section, but what actually matters is whether or not people change their habits and start using these new applications.
The problems the author listed in The Five Lacks section are completely real problems on a lot of the applications on the Web, but I don't think any of these social web apps listed in the article are the solution.
So for beginner/intermediate alg/data structures challenges with explanations and solutions I would recommend the following resources:
1. Read the Algorithm Design Manual.
2. Practice coding simple and then more advanced algorithms on sites like Coderbyte (aimed at beginners -> intermediate) and HackerRank (a bit more mathy).
3. Read as many algorithm explanations and code examples as you can on GeeksforGeeks.
4. Try and implement basic algorithms yourself like: shortest path, minimum spanning tree, DFS/BFS, tree traversals, different sorting algs, min/max heap, etc. and learn their running times.
* Also this article may be helpful for you: https://medium.com/coderbyte/how-to-get-good-at-algorithms-d...
Some more I actually should have mentioned:
https://flexboxfroggy.com (CSS)
https://www.datacamp.com (data science challenges)
https://www.codingame.com/start (learn to code via fun games)
https://screeps.com (cool MMO AI game w/ JS coding)
Ah yeah I forgot to mention screeps which is awesome!
Coding/Math:
https://projecteuler.net (more mathy)
https://www.topcoder.com/challenges
https://halite.io (machine learning + game)
https://www.enki.com (coding challenges on mobile)
This report by IEEE is actually a very good collection of topics and research currently being done in this field. They discuss specific problems and topics like the neocortex, IIF [1], neuromorphic engineering [2], pose cells, SLAM [3], and more.
For anyone interested in research being done in AI, ML, consciousness, etc., these are great articles written by actual scientists and researchers who are doing the work (as opposed to the hyperbolic articles or tweets you see online these days about AI).
[1] https://en.wikipedia.org/wiki/Integrated_information_theory
[2] https://spectrum.ieee.org/semiconductors/design/neuromorphic...
[3] https://spectrum.ieee.org/robotics/robotics-software/why-rat...
This reminds me of "What Is it Like to Be a Bat?" by Nagel.
https://en.wikipedia.org/wiki/What_Is_it_Like_to_Be_a_Bat%3F
this is great, the docs/tutorial are pretty clear as well. shameless plug: I made a js library [0] for creating and playing board games a while ago. It allows you to focus on gameplay and logic without worrying about the user interface so much. It allows you to create games like chess [1] and simulations like game of life [2] pretty easily.
[0] https://github.com/danielborowski/jsboard
[1] https://danielborowski.github.io/site/jsboard/demo/demo8/
[2] https://danielborowski.github.io/site/jsboard/demo/demo9/
shameless plug: I loved project euler and topcoder when I in high school. In 2011, there weren't really any nice, easy-to-use, interactive websites that allowed me to solve coding/algorithms challenges online easily, so that winter break my first year of college I made coderbyte.com for people to solve challenges online. Been running it ever since, but now there are like 20 similar websites as well.
I really enjoyed you recap, nice job. I think vue.js, GraphQL, and wasm will become more popular in 2018. We'll see though :)
I agree with what you said at the beginning of your comment, and what I think you're getting at is something like panpsychism [1], where consciousness is an inherent property in the universe, as opposed to an emergent view where at some point there is no consciousness in a given system and once it becomes complex enough consciousness emerges or develops.
I don't necessarily have an argument for either of them right now. But you asked me "why believe in the line at all?" -- I'm not making an argument for what consciousness is, I'm only claiming that the current state of the art algorithms we have developed and AI we currently build have nothing to do with topics like self-awareness, consciousness, theory of mind, etc. One day we'll get there I'm sure.
current state of the art
I'm not arguing for a soul or any sort of emergent properties of self-awareness or consciousness even, I just believe that in our current state of AI/ML/neural networks/deep learning, all of these techniques and algorithms simply optimize for some goal (or reward function like the author stated). Maybe one day we'll build a self-aware AI within a "hard metal-machine" but in my opinion we're far off from that.
If we build something one day that acts like a philosophical zombie [1] for example, then yes topics like self-awareness, consciousness, theory of mind will all be at the forefront of conversations regarding AI. But right now all we have are algorithms that optimize towards a goal and we have journalists jumping in on the hype talking about robots inventing languages, the desires these robots have, and robots teaming up to destroy humans [2].
[1] https://en.wikipedia.org/wiki/Philosophical_zombie
[2] https://www.maxim.com/news/elon-musk-artificial-intelligence...
that statement I made may apply to the human mind and our thoughts, but it also may not some would argue: https://en.wikipedia.org/wiki/Computational_theory_of_mind#C...
So if someone were to disagree with the view of CTOM, then they can argue that no, consciousness must be something else.
"I understand that a machine could kill people. But will a machine want to kill people? That seems to go back to that philosophical notion of consciousness."
This is exactly the issue with a lot of journalists and people talking about AI/ML. There is no WANT or DESIRES from the programs, there is no self-awareness where the programs ask themselves if what they are doing is right or wrong. They are doing exactly what they were programmed to do.
With his example of adversarial networks, one network is learning to detect fake news and other other is generating fake news--they are working towards their reward functions and optimizing the weights to reach the goal. It's math, that's all it is. It's so silly to bring up consciousness, desires, awareness, fears, etc. in these AI programs.
I've never seen that comic on the oatmeal, it's amazing, thanks for sharing
I agree, a lot of chatbot projects seem to be built because of the hype + the team also gets to dabble with some "AI/ML." I think there are very few conversational agents or chatbots today that people use regularly, and of those I honestly don't think many people enjoy using them.
"Your chatbot should be purposeful, reflective of your product’s voice, and simpatico with your users. One helpful design exercise is to produce an assistant persona and personality:"
For a business, a "chatbot" or any feature similar to it needs to do one thing and that is solve the users problem(s). If the user wants to do X within the app or learn about Y, the chatbot needs to help the user with that efficiently and better than a human can for the feature to be successful. The "chatbot having a personality" comes second to "solve the users problem."
If the users are completely happy with whatever chatbot they are using, then sure adding in some "personality" might be a good idea and increase engagement slightly, but a poorly-performing chatbot that can't help the user but has a personality isn't going to help the business at all.
"it can freeze its Go-playing part and learn to do something else to perfection"
People like Elon Musk will write sentences like this but hidden away in it is a subtle reference to an AI program understanding what it's doing. An AI program cannot jump from mastery of Go (with its neural networks and weighted matrices) to all of a sudden decide to figure out what the best course of action is to stop global warming or find a cure for cancer.
Humans write AI programs to learn how to perform a specific task via optimization, neural networks, deep learning, and all sorts of other algorithms. One of the authors main arguments is that "learning and optimization" that AI programs do today does not mean they are close to achieving "general AI" which the author also thinks is not possible:
"Decades later, the concept of an “intelligence explosion” — leading to the sudden rise of “superintelligence” and the accidental end of the human race — has taken hold in the AI community. Famous business leaders are casting it as a major risk, greater than nuclear war or climate change."
"The whole statement is also wrong. Of course you can increase intelligence by optimizing the process of learning."
One of the author's main points is that "intelligence" in the way you mentioned, learning and optimization, is simply one aspect of the human mind. So we could optimize our minds (or an AI program) to beat anyone at the game of Go and play perfectly, but that's all it is optimized to do. It can understand "the given problem" but there is FAR MORE to our minds than optimizing and learning how to solve a task.
Proponents of "build a general AI system that will surpass humans at everything" don't seem to understand this.
The author makes several points about AI/intelligence and recursive systems that I think a lot of people who think "AI will take over the world and replace" humans [1][2][3] don't understand.
He argues that general intelligence by itself is not really something that exists, our brains exist within a broader system (environment, culture, bodies, etc.) which is something you can read more about in embodied cognition: https://blogs.scientificamerican.com/guest-blog/a-brief-guid...
He also argues that the public debate about "AI regulation" is misleading because it's impossible for a "seed AI" to start designing smarter AI's that will surpass the intelligence of humans which is what a lot of people today think will happen with AI. Automation of jobs and tasks is very real, but completely replacing humans and potentially destroying us all is a joke and only the people who no nothing about AI/brains think this.
[1] https://www.vanityfair.com/news/2017/03/elon-musk-billion-do...
[2] https://www.cnbc.com/2017/07/17/elon-musk-robots-will-be-abl...
[3] https://www.npr.org/sections/thetwo-way/2017/07/17/537686649...
This article was written in 2011, and I think since then with the "learn to code" movement becoming so popular and coding bootcamps promising to help people get software development jobs, things have changed a bit--at least for edtech companies teaching programming skills.
There are a ton of popular websites that teach people coding/software development/design skills online now that have grown incredibly over the last few years, but still not really getting to mainstream status. Treehouse, Code School, DataCamp, Udemy, Frontend Masters, Udacity, Thinkful, Codecademy are just a few popular websites where people can learn to code today and all of them have a subscription plan. I don't think any of these have reached "mainstream" status, but there are definitely a lot more websites and applications today teaching people to code via subscription plans than there were 6 years ago.
Whatever your thoughts are on the whole "learn to code" movement, it's clear that the landscape for edtech companies teaching programming/software development has changed since 2011. Will any of these companies teaching people to code ever reach "mainstream" status, I don't know.
I actually tried to do something similar to the SHRDLU project in JavaScript. It was a few years ago and I thought it would be fun to see how much I could accomplish over a weekend, and I slowly realized just how hard this type of project (NLP/NLU) is.
The weird flicker/initial empty page (might) be because all the components are being mounted synchronously on page load. The new version of react introduced async rendering of new components: https://medium.com/behind-the-screens/dont-load-all-your-web...
For those of you who like solving coding challenges online either for fun, practice, or to prepare for interviews, here's a list of popular sites:
https://medium.freecodecamp.org/the-10-most-popular-coding-c...
I also recently put this list of resources together about Algorithms practice which I think can help out anyone who's preparing for an interview soon:
https://medium.com/coderbyte/how-to-get-good-at-algorithms-d...