seeing-theory has a new link ig https://seeing-theory.brown.edu/
HN user
rottc0dd
I really loved Pynchon's introduction to 1984[1] in new Penguin edition.
[1] https://shipwrecklibrary.com/the-modern-word/pynchon/sl-essa...
I am not sure of historical significance of what OOP is, but even Alan Kay seem to agree that modern definition of OOP is not what he intended[1]. But, for better or worse we are stuck with the principles.
We even have design patterns like Command, to workaround first class functions in "pure" OOPy way.
And for enterprise software development, I like it that way. It can make up a definition it wants and stick to it. I think it is better for a language's ecosystem and culture to have one dominant paradigm than becoming kitchen sink of programming languages.
Edit: added a link
[1] softwareengineering.stackexchange.com/questions/264697/alan-kay-the-big-idea-is-messaging
From my previous comment in hn:
As a java guy and think python is weird, I don't think this sucks.
But, I also agree that can serve as terrible intro to programming if you start programming right away without understanding the basics of abstractions. But, often when we have tools either designed for a purpose in mind or a dominant paridigm or reaction to existing set of tooling, this can result in understandable yet extreme abstractions.
Java is designed with OOP in mind and it kind of makes sense to have the user to think in terms of lego blocks of interfaces. Every method or class needs to have clear understanding of its users.
public - software handle is for all users
protected - software handle for current and extending classes
default - software is exposed to current package
private - software is restricted to be used in current class alone and nowhere else
So, the beginning of java programming starts with interface exposed to the user or other programmers. Is it weird and extreme. Yes. At least, it is consistent.
Good ol' Kernighan strikes again [0]
Another thing that impedes us sunken cost fallacy. Classic "Simple vs easy" change. Even if a design is comparatively simpler, it is harder to make such change for small feature.
We had a project which is supposed to convert live objects back into code with autogenerated methods. The initial design was using a single pass over the object graph and creating abstractions of HDL and combining method blocks in the same pass.
That is a big hairy code with lot of issues. Simpler would be to handle one problem at a time - method generation in one pass and then convert the methods to HDL. But, getting approval for a deployed app is so hard. Particularly when it is a completer rewrite.
Nice work.
Still buggy. If you increase the ball size and increase the speed, the whole thing goes black/white in 10 seconds.
Top story: Kiro: new agentic IDE
Hi,
I think I have mentioned this before in HN too. I am not from CS background and just learnt the trade as I was doing the job, I mean even the normal stuff.
We have a project that tries reify live objects into human readable form. Final representation is so complicated with lot of types and the initial representation is less complicated.
In order to make it readable, if there is any common or similar data nodes, we have to compare and try to combine them i.e. find places that can be made into methods and find the relevant arguments for all the calls (kind of).
Initial implementation did the transformation into the final form first, and then started the comparison. So, the comparison have to deal with all the different combinations of the types we have in final representation now, which made the whole thing so complex and has been maintained by generation of engineers that nobody had clear idea how it was working.
Then, I read about hashmap implementation later (yep, I am that dumb) and it was a revelation. So, we did following things:
1. We created a hash for skeleton that has to remain the same through all the set of comparisons and transformation of the "common nodes", (it can be considered as something similar to methods or arguments) and doing the comparison for nodes with matching skeletal hashes and
2. created a separate layer that does the comparison and creating common nodes on initial primitive form and then doing the transformation as the second layer (so you don't have to deal with all types in final representation) and
3. Don't type. Yes. Data is simplest abstraction and if your logic can made into data or some properties, please do yourself a favor and make them so. We found lot of places, where weird class hierarchies can be converted into data properties.
Basically, it is a dumb multi pass decompiler.
That did not just speed up the process, but resulted in much more readable and understandable abstractions and code. I do not know, if this is widely useful but it helped in one project. There is no silver bullet, but types were actual problem for us and so we solved it this way.
I did try to ask are we not computers.
I meant to say "I did not try to ask are we not computers."
You might like Gene: An intimate history[0]. It was really good book.
[0] https://www.amazon.com/Gene-Intimate-History-Siddhartha-Mukh...
There are some aspects that have some similarity to computation, but also many that are not.
What I have explained is the exact way a chromosome works, it's raison d'etre. I think this cannot be dismissed as some aspect of it. It is its essence.
I did try to ask are we not computers. I tried to imply, in the fundamental level there are striking similarities to computation.
That’s not to say that computers couldn’t do what the brain does, including consciousness and emotions,
Yes. Fundamental building blocks are simple and physical in nature and follow the computational aspect good enough to serve as nice approximations
but that wouldn’t have any particular relation to how DNA/RNA and protein synthesis works.
Hmm... transistors are not neural networks so? I am sorry, I am a non native speaker and maybe I am not communicating things properly. I am trying to say, the organic or human is different manifestation of order - one is chemical and other is electronic. We have emotions and consciousness, but we can agree we are made of cells that send electric pulses to each other and primitive in nature. And even emotions and beliefs are physical in nature (Capgras syndrome for example).
(However, that doesn’t mean that one can’t still consider them to be mechanistic and “soulless”.)
How should we describe or approximate the things happening in cell?
I meant to say in the way that there is well defined set of alphabets (A, T, G, C) and each triplet of these alphabet is responsible for specific protein to be created and combination of such protein make each cell what it is. (There are 20 different proteins for humans and we have four alphabets coming in triplets. So, if it was pair or quadreplets responsible for proteins, it would have too much or too little. They are not perfect but given the condition, there is some balance)
A single alphabet change in specific places can cause genetic defects like sickle cell anemia. And activation of which one has to generate protein (execute) is dependent on presence of certain things encoded as proteins again.
And viruses when enter a cell, the cell starts to execute viral genetic material. Even if these are not exactly Turing compatible, do they not mimic many aspects of computation?
Are cells not computers in some way? We are made of cells and cells work with chromosomes. Chromosomes are coded with ATGC pairs and each triplet is capable of creating proteins.
And the activation and deactivation of some triplet happens on response to presence of proteins. So, chromosomes are code and input and output is proteins. So, if our fundamental building blocks are computable in nature, what does it make us?
Thanks a lot. It is really fun. But, I don't have adult company in my neighborhood.
If take "What if I don't became great with this" anxiety out of the equation, it feels just more fun and life seems a little more colorful being a beginner.
You are right. I should have looked it up.
I was decent in math and Bill was brilliant, but I spoke from experience at Wazzu. One day I watched a professor cover the black board with a maze of partial differential equations, and they might as well have been hieroglyphics from the Second Dynasty. It was one of those moments when you realize, I just can’t see it. I felta little sad, but I accepted my limitations. I was OK with being a generalist.
For Bill it was different. When I saw him again over Christmas break, he seemed subdued. I asked him about his first semester and he said glumly, “I have a math professor who got his PhD at sixteen.” The course was purely theoretical, and the homework load ranged up to thirty hours a week. Bill put everything into it and got a B. When it came to higher mathematics, he might have been one in a hundred thousand students or better. But there were people who were one in a million or one in ten million, and some of them wound up at Harvard. Bill would never be the smartest guy in that room, and I think that hurt his motivation. He eventually switched his major to applied math.
Yeah, but these are also about people who are not even starting off at a field. These are teenagers. It really stood out that they can think where they can make most impact in the world at such an young age.
Excuse me for generalizing the point. That's not fair to do just based on these anecdotes. But, I can also understand their perspective.
Paul continued to be a guitar player all his life and hosted jamming sessions in his home. I started with piano very late in my life and not very regular, but I am just happy to join the fun party.
I think there are some similar remarks on Bill Gates in another good memoir by Microsoft co-founder Paul Allen [1]. Even on his school days, Gates was so sure he will not have a competition on Math, since he was the best at math at his school. When he went to Harvard, (which I somehow remember as Princeton(!) as pointed out by a commenter) and saw people better than him, he changed to applied math from Pure math. (Remarks are Paul's)
I was decent in math and Bill was brilliant, but I spoke from experience at Wazzu. One day I watched a professor cover the black board with a maze of partial differential equations, and they might as well have been hieroglyphics from the Second Dynasty. It was one of those moments when you realize, I just can’t see it. I felta little sad, but I accepted my limitations. I was OK with being a generalist.
For Bill it was different. When I saw him again over Christmas break, he seemed subdued. I asked him about his first semester and he said glumly, “I have a math professor who got his PhD at sixteen.” The course was purely theoretical, and the homework load ranged up to thirty hours a week. Bill put everything into it and got a B. When it came to higher mathematics, he might have been one in a hundred thousand students or better. But there were people who were one in a million or one in ten million, and some of them wound up at Harvard. Bill would never be the smartest guy in that room, and I think that hurt his motivation. He eventually switched his major to applied math.
Even Paul admits, he was torn between going into Engineering or Music. But, when he saw his classmate giving virtuoso performance, he thought "I am never going to as great as this." So, he chose engineering.
Maybe it is a common trait in ambitious people.
Edits: Removed some misremembered information.
[1] https://www.amazon.com/Idea-Man-Memoir-Cofounder-Microsoft/d...
I meant to type, it was one of the tragic things I have read, but too late to edit.
I kind of think both are true. I will remember Winston as great thinker who is extremely aware his world. And the tragedy or death of him is death of his awareness. His ability to think. In all the protagonist I have seen in tragedies, he is peculiar. While reviewing one another writer's work, Orwell said
‘... was a bad writer, and some inner trouble, sharpening his sensitiveness, nearly made him into a good one; his discontent healed itself, and he reverted to type. It is worth pausing to wonder in just what form the thing is happening to oneself.’
In the first act, the writing was so cold and I could not feel any connection to Winston. Even, when getting intimate with Julia, he is thinking,
In the old days, he thought, a man looked at a girl’s body and saw that it was desirable, and that was the end of the story. But you could not have pure love or pure lust nowadays. No emotion was pure, because everything was mixed up with fear and hatred. Their embrace had been a battle, the climax a victory. It was a blow struck against the Party. It was a political act.
I don't know when I started to feel things and empathize with him so much. When you think about circumstances and how he feels, he is cold as it gets, always scheming.
And in the most hopeful time of his life, he say these
‘We are the dead,’ he said.
‘We’re not dead yet,’ said Julia prosaically.
‘Not physically. Six months, a year – five years, conceivably. I am afraid of death. You are young, so presumably you’re more afraid of it than I am. Obviously we shall put it off as long as we can. But it makes very little difference. So long as human beings stay human, death and life are the same thing.’
But, when you think of an inner life, he has one of the richest and rare ones. We empathize with that, and when crystal ball falls, it was the most tragic thing I have experienced. I think, genius of Orwell is that he made the character and the idea indistinguishable.
It's not necessary for a work of fiction to focus on diverse and realistic characters, particularly when its primary aim is to critique a specific aspect of technology. In such cases, characters often function as just means to highlight and amplify that central theme.
Take 1984. It reads like a thought experiment reflecting the author's deepest fears about the dangers of unchecked power structures. Allegedly, Orwell’s own son would have been around 40 years old in the year 1984 (I read so in Pynchon's introduction to this book in Penguin's edition. It was a great essay.)
But, 1984 also features a great protagonist and an absolutely haunting language. While many of the other characters mainly serve to convey the broader ideas, it’s him who grounds the story emotionally. His suffering, his moral collapse, and the eventual loss of his ability was so tough to read and will forever haunt me. When he breaks, it feels like a loss for all of humanity. But, what I mean is characters are not essential to make a great work. When Orwell wants to convey his ideas, the characters are sidelined and ideas take the front wheel.
I understand your perspective. I'm not a fan of many of the episodes either. I really liked the first season, but the ones that followed just didn’t live up to it. And it does not rise above a horror centered around some particular technology. But, it's them give it cultural relevance.
From my other comment elsewhere. These resources helped me understand the topics better.
If anyone wants to understand fundamentals of machine learning, one of the superb resources I have found is, Stanford's "Probability for computer scientists"[1].
It goes into theoretical underpinnings of probability theory and ML, IMO better than any other course I have seen. But, this is a primarily a probability course that discusses the fundamentals of machine learning. (Yeah, Andrew Ng is legendary, but his course demands some mathematical familiarity with linear algebra topics)
There is a course reader for CS109 [2]. You can download pdf version of this. Caltech's learning from data was really good too, if someone is looking for theoretical understanding of ML topics [3].
There is also book for excellent caltech course[4].
Also, neural networks zero to hero is for understanding how neural networks are built from ground up [5].
[1] https://www.youtube.com/watch?v=2MuDZIAzBMY&list=PLoROMvodv4...
[2] https://chrispiech.github.io/probabilityForComputerScientist...
[3] https://work.caltech.edu/telecourse
[4] https://www.amazon.com/Learning-Data-Yaser-S-Abu-Mostafa/dp/...
[5] https://www.youtube.com/watch?v=VMj-3S1tku0&list=PLAqhIrjkxb...
Hmm... maybe that is why, earliest chatbot carried a "therapist" tag.
https://yosefk.com/blog/engineers-vs-managers-economics-vs-b...
...It's a common story and an interesting angle, but the "best vs good enough" formulation misses something. It sounds as if there's a road towards "the best" – towards the 100%. Engineers want to keep going until they actually reach 100%. And managers force them to quit at 70%:
> There comes a time in the life of every project where the right thing to do is shoot the engineers and ship the fucker.
However, frequently the road towards "the best" looks completely different from the road to "the good enough" from the very beginning. The different goals of engineers and managers make their thinking work in different directions. A simple example will illustrate this difference.
Suppose there's a bunch of computers where people can run stuff. Some system is needed to decide who runs what, when and where. What to do?
* An engineer will want to keep as many computers occupied at every moment as possible – otherwise they're wasted.
* A manager will want to give each team as few computers as absolutely necessary – otherwise they're wasted.
These directions aren't just opposite – "as many as possible" vs "as few as necessary". They focus on different things. The engineer imagines idle machines longing for work, and he wants to feed them with tasks. The manager thinks of irate users longing for machines, and he wants to feed them with enough machines to be quiet. Their definitions of "success" are barely related, as are their definitions of "waste".
The "good enough" is not 70% of "the best" – it's not even in the same direction. In fact, it's more like -20%: once the "good enough" solution is deployed, the road towards "the best" gets harder. You restrict access to machines, and you get people used to the ssh session interface, which "the best" solution will not provide.
For those who are wondering, this is quote from "Hitchhiker's guide to Galaxy" by Douglas Adams.
https://en.wikiquote.org/wiki/The_Hitchhiker%27s_Guide_to_th...
There was another hn page where discussion happened on this topic. Please check following comment thread.
https://news.ycombinator.com/item?id=43391604
https://news.ycombinator.com/item?id=43395172
These resources were helpful for me. Note that, [1] and [2] are concerned about systematic understanding rather than hands on. [3] is a hands on exercise to build neural networks from ground up.
1. A fantastic resource and best resourse IMO, for getting probablistic perspective about machine learning from ground up:
https://www.youtube.com/watch?v=2MuDZIAzBMY&list=PLoROMvodv4...
2. Another good free course.
https://work.caltech.edu/telecourse
3. For hands on after getting some knowledge and building things from ground up:
https://www.youtube.com/watch?v=VMj-3S1tku0&list=PLAqhIrjkxb...
As mentioned elsewhere, I should have been more careful with my phrasing. What I meant is I am much more aware of my own understanding, gaps and shortcomings and more actively involved in learning and processing information when I am reading.