• 0 Posts
  • 19 Comments
Joined 1 year ago
cake
Cake day: August 4th, 2023

help-circle






  • So do I understand correctly that a certain hox gene is activated in basically all cells which are in the “domain” of a certain vertebrae

    Yes

    and they all activate some subset of homeobox genes which in combination with the original hox gene cause them to start turning into all the different parts associated with that vertebrae (so organs and other structures)?

    Not quite. The hox gene creates a protein that tells the nearby cells that they are in a specific segment. After this specific cells in that segment start signalling so they cooperatively lay out the cardinal directions to make that specific segment. In the shoulder segment, for example, a specific cell becomes the tip of the arm and tells all the cells about it with its signalling protein. All the cells in between it and the root now ‘know’ which part of the arm to grow.

    This is a cascade of ever finer positioned ‘location markers’ that guide generic cells to specialise correctly.

    Ultimately, as two bones grow into each other, they know to form a joint, and as that joint takes form the joint surfaces fit each other exactly.

    Would we then need an entirely new hox gene to produce even a single gill? (I know you basically just laid out most of a response to this question.) Because I would assume although the exact point at which the development of our arms and legs begins is part of the whole hox gene “superstructure”, but couldn’t we ‘basically just’ highjack this same system and duplicate this gene to produce at least a single gill in the region where the current hox gene for our neck is expressed?

    Assuming we want to keep our neck, jaw and ear features, we need to keep our existing hox gene and all the genes that turn on in this cascade to produce these structure. If we alter them, our development will change.

    The issue is that in a fish or shark, exactly the same location marker is used to lay down their gills. So adding a shark hox gene will result in a human segment at that location. Hox is a marker - not the full set of instructions to build the segment.

    We therefore need

    1. A new location marker for the gill
    2. And we need our developing cells to recognise this new signal
    3. And we need a development pathway to create a gill which includes new location markers, and the ability for cells to differentiate in the right place to new tissues
    4. New genes for specific proteins to create these new tissues (which may be copyable from other organisms)

    Long story short: what is the biggest reason why we can’t just hack into a later part of the sequence and continue on from there with what you said?

    Well, we can’t reuse the existing one because it creates human structure. So we need brand new genes for 2 and 3.

    I’m not a professional in this area, but I haven’t seen anything that suggests we can fo this yet.

    I think part 4 (the bit about creating new tissues) might in fact be the easier part. But to cause them to be developed at the right time in the right place and at the correct size with brand new signals is waaaay out there.

    Or would your proposed plan also just end up like this in the final product and you laid it out like this because it’s already the most viable route into this mess? 😅

    Speaking as someone whose last practical biology wiped out all the very expensive cell colonies, and that was 30 years ago, I hope my wild suggestions here are even vaguely in the right direction.


  • In a way, your jaw is a gill arch, just built in a different way with some interesting diversions. After a couple of 100 million years, the changes do add up.

    If you really had to add in a gill, i have a plan, but I need to talk about one important evolutionary trick: duplication and divergence.

    A fairly common DNA copying error causes a section of a chromosome to be duplicated in the offpring. In most cases this is fatal or prevents children, but some duplications work out just fine.

    For instance mammals lost colour vision in the time of the dinosaurs - mammals were probably nocturnal. The loss was caused by losing genes for the yellow colour receptors in the eye. This is why dogs and cats see in something akin to black and white (they do see red and blue and all the yellows and greens are just shades of red and blue).

    But apes were lucky. An accident duplicated the existant red receptor and, over time, because there are now two genes, one gene was gradually selected for a higher and higher light frequency. This has become our green receptor and all apes see in red-green-blue colour.

    Duplication is not necessarily fatal because it just codes for something we already have. But once there are 2 genes, evolution can select away for different capabilities and we end up with something new.

    Ok, with that out the way let’s plan!

    1. Add in a few new sections into the human body by adding some new hox genes. This would give us a significantly longer neck - probably fatal without medical support.
    2. Duplicate and diverge the genes used to trigger gill arch/neck and jaw development and modify the developmental genes that respond to them. This would preserve the development the upper neck as humans (to keep the jaw and ear) while allowing something else to happen lower down
    3. In the lower section work out a way to develop like our basal forms (something eel-like) and trigger this development with the modified genes from step 2.

    Step 1 might be possible today. Step 2 might be within current reach (but it would take incredible work to disentangle all the connected system in development and the working body. Step 3 is beyond current tech (as I understand).



  • In short, we could, but the cost would be incredible.

    All vertebrates are animals that develop from a series of segments, with a vertebra at the core. In our time from eel-like fish, we’ve specialised these segments so, for example, we have ribs on the vertebra corresponding to the rib cage.

    To support arms and legs, specific vertebra have become highly specialised in the form of hips and shoulders.

    Gills are composed of a series of gill arches, one on each vertebra in the neck area. These structures have (in eels) a lot of blood vessels to carry the blood that needs reoxygenation.

    An interesting thing happened as the eel-like creatures differentiated, evolved jaws and ultimately ended up as mammals and humans: nature co-opted the specific vertebra that had these gill features and turned them into jaws and ears and a variety of other features in the head and neck. For example the tiny bones in your ear were once fish jawbones which were previously one (or more) gill arches.

    The stupendously complex anatomy in this area comes from all the short-term ‘decisions’ evolution took to make all the magnificent creatures that inhabit the earth.

    For example the nerve that connects the brain to the larynx (the recurrent laryngeal nerve) emerges from a vertebra high up in the neck, decends down under the aorta in the chest and then back up into the neck to the larynx. In the giraffe, the nerve is many meters long, even as it’s direct path could be a few centimeters. The reason is that the heart used to be close to the gills in fish and sharks. As the heart moved in land animals, the nerve was caught in a loop around the critical aorta and it was ‘pulled’ along for the evolutionary ride.

    So, in order to turn your gills back on, you need to unprogram 450m years of evolution of the structures you call your head, face and neck.

    I’d recommend ‘Your inner fish’ by Shubin - it’s a wonderful read and explains this in far more detail that I can manage.




  • I don’t think that the anti-oop collective is attacking polymorphism or overloading - both are important in functional programming. And let’s add encapsulation and implementation hiding to this list.

    The argument is that OOP makes the wrong abstractions. Inheritance (as OOP models it) is quite rare on business entities. The other major example cited is that an algorithm written in the OOP style ends up distributing its code across the different classes, and therefore

    1. It is difficult to understand: the developer has to open two, three or more different classes to view the whole algorithm
    2. It is inefficient: because the algorithm is distributed over many classes and instances, as the algorithm runs, there are a lot of unnecessary calls (eg one method on one instance has to iterate over many instances of its children, and each child has to iterate over its children) and data has to pass through these function calls.

    Instead of this, the functional programmer says, you should write the algorithm as a function (or several functions) in one place, so it’s the function that walks the object structure. The navigation is done using tools like apply or map rather than a loop in a method on the parent instance.

    A key insight in this approach is that the way an algorithm walks the data structure is the responsibility of the algorithm rather than a responsibility that is shared across many classes and subclasses.

    In general, I think this is a valid point - when you are writing algorithms over the whole dataset. OOP does have some counterpoints encapsulating behaviour on just that object for example validating the object’s private members, or data processing for that object and its immediate children or peers.



  • This is exactly the answer.

    I’d just expand on one thing: many systems have multiple apps that need to run at the same time. Each app has its own dependencies, sometimes requiring a specific version of a library.

    In this situation, it’s very easy for one app to need v1 of MyCleverLibrary (and fails with v2) and another needs v2 (and fails with v1). And then at the next OS update, the distro updates to v2.5 and breaks everything.

    In this situation, before containers, you will be stuck, or have some difficult workrounds including different LD_LIBRARY_PATH settings that then break at the next update.

    Using containers, each app has its own libraries at the correct and tested versions. These subtle interdependencies are eliminated and packages ‘just work’.





  • Maths and reality are different. Very different. Reality can be explored empirically while maths is logic not empirical. We can never say we are 100% sure about the rules/laws we have discovered about our reality, but we can say for sure that a maths theorem is true or false.

    Maths is a set of self-consistent tools that can be used to predict what happens in reality. The mathematical description of reality is an estimate, contains countless assumptions and inaccuracies about where things are and what properties they have. In fact in quantum physics, we literally can’t know momentum and location at the same time.

    Maths can describe (or I should say, approximate) realities that don’t exist.

    Because maths and reality are different domains, we can know different things about them using different approaches.