On-Topic: Anything that good hackers would find interesting. *That includes more than hacking and startups.* If you had to reduce it to a sentence, the answer might be: anything that gratifies one's intellectual curiosity."
- "Do not suppose the statements of the prophets to be true; they are all fabrications. Men lived comfortably till they came and spoiled life. The sacred books are only such a set of idle tales as any age could have and indeed did actually produce."
- "Do not unjustly eat fish the water has given up,
And do not desire as food the flesh of slaughtered animals,
Or the white milk of mothers who intended its pure draught
for their young, not noble ladies.
And do not grieve the unsuspecting birds by taking eggs;
for injustice is the worst of crimes.
And spare the honey which the bees get industriously
from the flowers of fragrant plants;
For they did not store it that it might belong to others,
Nor did they gather it for bounty and gifts.
I washed my hands of all this; and wish that I
Perceived my way before my hair went gray!"
Besides Asimov's and Jonathan Blow's illustrations of the problem. What is the cure?
Instead of focusing on abstractions of technology, why not focus on the fundamentals?
With fundamentals, I mean mathematics and physics.
This is perhaps all you need to understand tech in its fundamental nature. Everything is built out of mathematical and physical principles it seems.
The problem then may be to determine how much you need of it for your field. Do you need quantum mechanics to know how bicycles work? Maybe classical physics (mechanics, electricity, optics) will suffice here and the rest is a combination of physical principles aka engineering or creativity if you will. (Creativity is a fundamental human skill it seems.)
There's also abstract engineering as I would put it: computer science.
What are the principles of CS? I am not so sure, but I have a rough idea that perhaps it is also field dependent.
For computer graphics seemingly you don't need a lot of math. It's roughly at high school math level.
You can do projections and other transformations without linear algebra (vector, matrix math). All you need to do here, is deriving relations/equations out of geometric rules (like you can for perspective projection for example).
Then you have 2 fundamental ways of rendering things to the screen: rasterization (Pineda's method) and ray tracing.
Rasterization:
- after projection, you need to bring your vertices projected onto your virtual screen to an actual "screen" or should I say PPM image. Then you need a filling algorithm like Pineda's one.
Ray tracing:
- here, you don't need any projections. The projections are basically "a given". As you shoot rays from your virtual camera through your virtual screen, all you need to do here is to calculate intersections with geometrical objects and color them accordingly.
That's it.
So for all this basic rasterization and ray tracing you at least need: high school-level math (perspective projection, intersections, transformations, ...), basic rendering algorithms (Pineda's method, ray tracing, Phong shading, ...).
I suppose the other field's fundamentals or basic principles can be "filtered out" from these many layers of abstractions.
Matrix math or linear algebra is not needed for CG. (Although it is really comfortable to know it... It's like doing CG by Assembly instead of C or C++.)
I also suppose that back propagation - the backbone of neural networks - can be also done with basic high school math.
So my suggestion is: decide what are the basic principles of a given field and filter them out.
Also, my question to all of you: learning Assembly is pretty much an educational endeavor nowadays as CPUs these days are doing lots of magic behind the scenes. So what are the fundamental principles here? Physics surely, but I see a problem with my argument above. Getting down to the common denominator (math and physics) is relatively easy, but it is hard to build a CPU out of it albeit theoretically possible.
Charles Petzold's code seems to suggest that those principles are actually not that far from basic principles.
"What to Submit
On-Topic: Anything that good hackers would find interesting. *That includes more than hacking and startups.* If you had to reduce it to a sentence, the answer might be: anything that gratifies one's intellectual curiosity."
https://news.ycombinator.com/newsguidelines.html