As someone who is formally trained in computer science I was literally blown away by biochemistry. Once you see that any organism that involved organic chemistry is in fact an insanely complicated, biological computer you cannot unsee it. It's amazing.
In case someone is wondering what the author of the blog post zoomed in, that's the Krebs cycle - ie how we derive energy (ie ATP) from the food we eat (https://en.wikipedia.org/wiki/Citric_acid_cycle). See: https://www.youtube.com/watch?v=juM2ROSLWfw and https://www.youtube.com/watch?v=7J4LXs-oDCU
This blew my mind. In addition to the computer analogy, I think Bio-mechanics is incredibly fascinating. The fact that I can close my eyes and still be able to touch the nose with my index finger repetedly from any starting position of the hand is mind boggling. I cannot fathom the type of inverse-kinematics that is involved in the cerebellum.
My understanding is that these things are not Turing complete, and don't resemble Von Neumann machines (or any other architecture we use for computers). But the processes themselves can be understood in terms of computation and/or communication.
Is that wrong? If so, why/how?
Also, could you point out an example or two of the nuances that tend to get people in trouble?
That's a pretty macro example (both at the genotypic ratio and phenotype levels), but it can happen at the micro level, too. You can have grossly nonlinear effects (well actually many effects are O(n^k) in concentration n, where k is the oligomer size, 2->12->20++) and sometimes even the phenotypically important species is like 10%? 1%? 0.1%? 0.01%? of the molecule population. And the proportion of the species could depend on the temperature. Are you running at 35C? 38C? 40C? 42C?
In a reductionistic way you could say that any system that follows logical rules is "like a computer" but I think at that point it ceases to be a meaningful statement.
Computers are great because if you give them an input they can give a deterministic answer (you can also choose to have them not give a deterministic answer, as in ML, and yes sometimes at Google scale you have to deal with cosmic radiation) but the choice is inverted for biological systems. You can try really hard to make biological systems give deterministic answers, and in some systems you don't have to try that hard, especially nowadays, but the default still is "nondeterministic".
as far as biology goes, i can take any control structure you have in code and show you examples of how it’s being done. just because it’s happening at a large scale and it’s hard to predict at a micro level does not mean it’s not a computation and it does not mean it’s non-deterministiv
technically everything in the universe is nondeterministic but to say "but also computers are nondeterministic" is reductionistic to the point where the categories are meaningless.
It's also not sufficient to say "computation" exists. Well, you could reductionistically describe the orbits of the planets as a very machine that is very good at one computation. So I guess that makes it a computer. The solar system is a computer.
Going beyond the question of determinism, similarly saying you can encode arbitrary computation to an arbitrary degree of determinism (which you can, in biology), is not helpful. This is like pointing to the Game Of Life, and showing that people can build computers in the game of life, and saying that the emergent phenomena are "just like a computer". Well yes, there is a computer underneath, but I think you're probably missing something important if you think the parameter and output spaces of game of life as "just like a computer".
but it you define a computer as something that runs on some sort of code and translates input to output literally everything can be seen as a computer. the more complex something is the more impressive it is.
you should also probably update your profile description since it’s literally confirming what i am saying :)) (ie I've been: A molecular biologist that discovered that an enzyme was secretly an NPN transistor)
To wit: I didn't get my job done on that project because I thought of it as a computer, I got it done because having been a curious child who also did computers I happened to know (and remember into adulthood) how computers work at a very low level and was able to make an insight based on that, nothing particularly CSey.
anyways, we may disagree but you do sound like a fascinating person. molecular biology, CS, elixir. that's a rare but exciting combo.
what materials would you recommend for someone who is a rookie but wants to learn more about molecular biology?
I don't really recommend 'learning' molecular biology. There really is no substitute for designing a molecular biology experiment, starting with dna synthesis, through cloning, and seeing it through to its biochemical outcome. It's not terribly time consuming, I had an intern that I took through the steps in 3 months, starting from no lab experience he completed 50 mutations on the enzyme, tested half of them, and got a paper out of it.
why don't you recommend learning molecular biology? is it hard to grasp without the practical experiments? what's your thinking behind "i don't recommend it"?
It's an animation of the bio-chemistry a lymphocyte uses to move between cells (maybe - that's a guess?). It covers what I can only assume is a few milliseconds, it's just a tiny slither of the cells behaviours, yet how much is going on to make that happen is off the charts. I showed in it a club consisting of mostly software engineers, and the universal reaction was "thank god I didn't do bio-chemistry".
"Every application has an inherent amount of complexity that cannot be removed or hidden. Instead, it must be dealt with, either in product development or in user interaction."
At some point the complexity of a system becomes great enough that it's impossible to simulate it perfectly.
The interesting question for me lately is how and under what circumstances can you ignore the complexity for some purpose.
For example, underlying what is represented in that poster is some set of physical processes that are ignored in that poster. The system at that physical level of description would be even more complex, probably too complex to represent on a poster. So why the level of analysis of the poster? Similarlly, at some point it's easier to talk about eating and fatigue than it is the citric acid cycle. How and why do you move from one level of analysis to another? Some of it probably depends on what is being explained, but some of it might not.
Usually people that study complexity will say that all models are wrong but some are useful.
In software, we usually prefer the term abstraction.
The trick is to remember that our model are wrong. This gap between "system-as-modeled" and "system-as-reality" can be inconsequential in a lot of time, but it is also a place in which failure mode can rise. It is important to always keep exploring it and change the model depending on situations.
Our human minds can only hold a finite amount of information in long term and short term memories. I don’t too much buy into direct brain augmentation in the sense of NeuralLink or my friends in the SingularityNET community.
What I am hoping for is external augmentation using smart glasses that record everything I study and that I hear, and sufficient AI (doesn’t have to be AGI) on the backend to learn when to prompt or remind. Ideally this would be paired with something like an iPad that the system could draw on top of what I am looking at.
This is the startup I would like to work for. Apple is supposed to be releasing smart glasses sometime. I hope the hardware and software support is hackable and extensible.
I used to be a proponent of IoT until realizing that IoT is just a HUGE opportunity to gather the most economic and personal data on people stupid enough to pay for the devices that surveil them. Sort of like paying someone to kick you.
I'd love to get a similar poster of the entire Linux kernel or, alternatively, the total supply chain for an everyday item like the proverbial pencil.
so you would mostly represent the machine the software run on.
I'm sure some astute HN reader could whip up a script that generates illustrative posters of static call graphs given a Git repo!
my uni had some different, older posters about linux. one was radial with most non driver files represented. can’t seem to find them on the web though
The positive side is that we actually can and do effectively intervene in this system, and systems like it, to improve outcomes, so even very high levels of complexity don't mean analysis is impossible.