I would really really encourage everyone here to watch Alan Kay's recent talks on how poorly we understand systems and why it's critical we get better at managing them.
Some people have strong opinions about Alan Kay's CS / programming work and I'd really encourage them to put them aside and deeply understand his points + context. The programming parts aren't ever the point, he's deeply interested in how as humans we improve our ability to collaboratively manage systems.
For similar reasons, I highly recommend a book called Capital: Critique of Political Economy. And likewise, some people may have strong opinions about the author’s work. I'd really encourage them to put them aside and deeply understand his points + context.
I would complement it with a second book about capital: Capital in the Twenty-First Century - Thomas Piketty. I am not sure neither of this books have the solutions but they were enlightening for me.
The descriptive work of he-who-shall-not-be-named is leagues ahead of his prescriptive work (not surprising -- fixing problems tends to be harder than finding them).
The problems he addresses still abound and it's really a pity we have culturally suppressed the vocabulary and arguments he put forward to talk about them.
Funny how when I replaced the big hyphenated word with the 4-letter name, it actually triggered an emotional response in me which made me dismiss the rest of your comment, even though I was fine with the comment without the substitution. Weird how human brains work.
Using certain names and terms on Reddit and Twitter (not sure about HN) does bring bots in who then try to influence the conversation with votes and propaganda comments. So J. K. Rowling made quite an accurate prediction about how society might interact with advanced technology (aka magic).
It’s very good. This guy was about 150 years ahead of the AI job loss/ singularity crowd. In Capital he doesn’t even really get into the politics that much, it’s more an analysis of automated manufacturing.
I think you've misunderstood quite a lot if you think Capital is an analysis of automated manufacturing that doesn't get into politics that much.
It doesn't get into politics the way a typical work on political theory might, but that is, I think, very much intentional. Capital centers on the problems and politics of its day, while attempting to critique and respond to them. It does this by establishing a thorough foundation for a better politics focused on achieving a very particular goal--obtaining true freedom from [social/political/economic] coercion and domination. That it seems ahead of its time is a testament to it continuing to be relevant--because the issues it focuses on continue to exist.
That Capital is so widely misunderstood--both by those who turned it into a foundation for totalitarian negation of its foundational principles, as well as those who hold that regrettable history up as an indictment of the principles themselves--is regrettable, and the world is worse off for it.
If you're interested in disabusing yourself of the notion that Capital is an analysis of automated manufacturing, and not a proper work of political theory, I'd wholeheartedly recommend the exceedingly approachable and well-cited book Marx's Inferno by William Clare Roberts. Roberts, in my opinion, gets Capital (and Marx) right--and presents an incredibly compelling argument for a literary connection that really is a first of its kind. Then I'd recommend re-reading Capital, while reminding yourself that Capital is on a mission, and that mission isn't to explain how manufacturing works. :)
It struck me that my favorite intellects usually do foremost concern themselves with “how poorly we understand systems and why it's critical we get better at managing them”. This intellect just seems most important right now.
- He hasn't shipped anything popular (he's a researcher, expanding the tree of knowledge, not an engineer optimizing for shipping)
- Smalltalk isn't as great as Alan makes it out to be (again he's a researcher)
- That the computer revolution has happened but he's stuck in the 70's
- Many, many more things
I watched a presentation on YouTube that Christopher Alexander did in 1996, talking about work he did in the 70s and it continued to amaze me at its relevance today. +1 to you for realizing there are still a lot of good, under appreciated ideas out there and that technology actually moves super slow.
FWIW: I used Smalltalk a bit in college and then for about a year professionally, about four years into a now twenty year career. I've shipped software in about five languages over my career and have never again come anywhere close to as productive as I was during that time using Smalltalk. Ironically, the work environment at that time was perhaps the worst of my career but Smalltalk just makes it so darn easy to crank out functionality and test it at the same time. So, sure it is old but there's a lot we could still learn from it.
If it’s so great, why isn’t it used in industry? Cranking out functionality is what everyone wants. As someone who has never seen or used it, I always hear about how all these languages are inspired by smalltalk but just don’t get it right or whatever. Why doesn’t somebody do a straight up port of it if it’s that great?
There’s quite a few reasons, but I suspect the largest is lack of a corporate sponsor. People use what they know of, and few things have shipped with smalltalk.
And honestly, the language itself isn’t that remarkable by today’s standards; there’s so many dialects floating around most of the features have made their way into mainstream languages. It’s the tooling that I dream of. Sadly, it’s probably also another reason why it never took off: people couldn’t easily incrementally adopt it.
I'd generally agree with what you are saying... it was the tooling more than the language itself. That said, there was something to be said for the absolute simplicity of the language. With everything being an object that receives messages and the minimal syntax, you could teach people very quickly.
Why don't you just use it, rather than waiting for the industry to adopt it and translate it for you? The industry doesn't adopt things because they are great. It adopts things because it has to.
In my little corner of the industry, we've adopted a big heap of things for entirely political reasons, and they're mostly crap in one way or another.
I think people who say other languages "just don't get it right" are living in a fantasy world. At the end of the day, Smalltalk is a pretty extreme language. The insistence that, e.g., every integer value is an object that can be sent messages, or that every code block is an object, or that every code block can introspect its caller, all lead to a pretty extreme amount of flexibility but an inability to write efficient code or do much optimization.
At the end of the day, languages that were less extreme won the popularity contest. Ruby and Python, for example, are just more accessible and full-featured.
People unfamiliar with history live in a fantasy world.
Smalltalk or more specifically one of it's dialects, Self (an even more "extreme" Smalltalk), made huge advances in JIT compilation. Advances which later ended up in the Java HotSpot virtual machine. Some benchmarks hit half the performance of optimized C. That was in the late 90s.
I believe the Squeak/Pharo VMs are much faster than the Python and Ruby interpreters. There are other tricks - an Int maybe be an object, but a special one that fits in a register.
The part that other languages don’t get is it’s the Smalltalk environment that makes it special, and there is just nothing like it in our modern tooling.
History is really important here. When Smalltalk systems first spun out of Xerox PARC, they carried hefty licensing fees. The whole free software / open-source movement wasn't as ingrained in developer culture back then. Worth remembering that SUN was marketing Java everywhere for free and that made a world of difference.
Yes - you just shipped the whole image. At the time I was building desktop apps, but that made install super easy - you just dropped it onto the user's desktop. A guy a few cubes over was building server apps and that was equally easy - a self-contained deal with the vm, all the dependencies, etc that just needed to be dropped into /opt or wherever and was ready to run.
Are those criticisms in response to claims of his otherwise? Does he blame current problems programmers have on not listening to him more? Or make some other critical claims to trigger what kind of sound like ad hominem* responses?
I will google these questions also, but am always interested the HN crowd's take. Like the original question I didn't know he'd ruffled any feathers.
Edit: top hit was Alan Kay himself addressing criticism on a Quora question: https://www.quora.com/Has-anyone-criticized-Alan-Kay, but on further read it obliquely addresses criticisms other than his role in developing OOP.
What did he mean at 1:09:22 (https://youtu.be/R1R2jH4PQEo?t=1h09m22s) when he says "nobody complains about multiplying one fraction by another because it looks reasonable, but it turns out it isn't reasonable at all"?
He explains that it was a "triumph of Greek mathematics" to prove that multiplying the top and bottom of a fraction is how you multiply two fractions. That is, we accept as true that you can multiply fractions this way, but we kind of just got lucky that it does work that way. Proving that it always works is non-trivial, but that is totally glossed over in math classes, doing a disservice to students.
This is in context of dividing two fractions where kids are taught an arbitrary rule too early in their studies and it turns them off to math overall because it's become a class of memorizing arbitrary procedures instead of learning concepts.
(That's all my summary of that segment with a little reading between the lines, not my personal view of it. Or it might be later, but have to consider it more.)
The problem with teaching math is you must give them the tools that were created last, so they have the tools to keep up with math. They then must use those tools to understand and prove what they first had to accept as true, lacking proof.
Tend to think about constructive mathematics for this particular insight.
Dividing fractions is also easy. Did you mean summing fractions? Because, yeah, summing fractions is significantly harder than multiplying fractions, simply due to pure misfortune.
This is easy to derive if you have a little algebra, but it is shoved at kids before they can derive it, so they don't understand it (which is anti-math). The dull ones go along with it, but the brighter ones often think they are stupid. I (and independently others) have worked out visual proofs of both fraction multiplication and division for younger kids.
But I mostly think that "fractions as ratios" can be left until the child is older and has more chops for derivations.
The Greeks thought about these as different ways to measure intervals, and they worked out the idea of "common measure" as a good solution to dealing with these problems.
I may be wrong, but I think the issue is: what does it mean to divide x by 1/2? It means to multiply it by 2. We can easily understand that dividing by 2 means to split something into 2 pieces. What does it mean to split something into 1/2 pieces? Why does dividing by 1/2 mean to multiply it by 2 and does it always work that way? Can you prove it?
Summation of fractions is much easier to visualise, even if it is harder to calculate.
Informally speaking, that can be visualised by asking "how many half pieces can you get if you have x pieces?" If I have two pieces I can break them down into 4 half pieces, which nets the same result as multiplying by two.
I'm pretty sure he means "it is an easy equation to memorise, but it's not trivial". People can remember the formula, but have no idea how it actually works.
I wish more math teachers would actually understand this.
The amount of crap I got for using the "wrong way" to calculate something in math class, was probably one of the major reason I never really got into it.
I remember math classes in the beginning actually being fun, I loved figuring out more convenient/to me more logical ways to calculate something, only to be constantly shut down by the teachers for using them, as he/she demanded I use the solution given by the book.
I do understand the value of getting to the same solution in different ways, I even did back then, but teachers didn't frame it like that; their insistence on the book solution just felt like an accusation against me of not understanding, telling me my way of calculating is wrong (even tho they usually proof calculated right) when to me it looked like it was them not understanding, by insisting on that one formalized, and often awkward, solution, and only that.
So as a somewhat rebellious character, it didn't take long for me to start actually despising math classes.
If I could go back I'd probably try to do it differently, I'm in my mid-30's now and consider myself "math illiterate". Sure I can do most basic stuff and even the occasional Pythagorean theorem (which fascinates me to this day, take two knowns to figure out the third unknown!), but I still feel like I missed out on something I could probably really have enjoyed.
Easiest way of visualising the pythagorean theorem is to think about it the way it was initially written: think about areas formed by tree squares.
This image[0] from wikipedia shows it all: the area of square a plus the area of square b equals the area of square c. It's just really convenient that we can use that to calculate triangle sides without resorting to trigonometry.
I consider this a tragic story. It sounds like you have the type of genuine curiosity and will to understand (not just get the answer) that would make you a really good math student, but your dopey teachers--who probably don't have your natural disposition towards math--beat it out of you.
I happen to like a little metaphor of mine; Math is like cooking: either you blindly follow a recipe (rote "learning") or you truly learn how ingredients combine together (from discovering, to understanding, to — ultimately — grokking).
Isn't a joke "alive" until the explanation? So those that 'got' the joke would've enjoyed the joke, before moving onto read the next line. So reading the explanation of the joke wouldn't interfere with their enjoyment of the joke since they already enjoyed it prior to reading the explanation.
If you're telling a joke, you don't want emotional context switching. A quick explanation, laughter might be preserved (so the above pun may or may not inhibit the execution of the original joke).
But every joke has an emotional gravity and the longer you compliment it with other emotions (e.g. intellectual explanations), eventually escape velocity is reached and you're in an entirely different emotional state.
Some good ones: - https://www.youtube.com/watch?v=R1R2jH4PQEo - https://www.youtube.com/watch?v=N9c7_8Gp7gI
Some people have strong opinions about Alan Kay's CS / programming work and I'd really encourage them to put them aside and deeply understand his points + context. The programming parts aren't ever the point, he's deeply interested in how as humans we improve our ability to collaboratively manage systems.