• 0 Posts
  • 36 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.


  • All junior devs should read OCs comment and really think about this.

    The issue is whether is_number() is performing a semantic language matter or checking whether the text input can be converted by the program to a number type.

    The former case - the semantic language test - is useful for chat based interactions, analysis of text (and ancient text - I love the cuneiform btw) and similar. In this mode, some applications don’t even have to be able to convert the text into eg binary (a ‘gazillion’ of something is quantifying it, but vaguely)

    The latter case (validating input) is useful where the input is controlled and users are supposed to enter numbers using a limited part of a standard keyboard. Clay tablets and triangular sticks are strictly excluded from this interface.

    Another example might be is_address(). Which of these are addresses? ‘10 Downing Street, London’, ‘193.168.1.1’, ‘Gettysberg’, ‘Sir/Madam’.

    To me this highlights that code is a lot less reusable between different projects/apps than it at first appears.




  • 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.



  • “DI frameworks” are Satan’s farts. Classpath-scanning nonsense that turns compile-time errors into runtime errors. Not only is your Ctr still coupled to your Svc, but both are now coupled to Spring.

    Let’s qualify this: DI frameworks that use configuration files to specify the dependencies are Satan’s farts. You can use the DI pattern but do the injection in source code to get full compile-time type checking and all the benefits of a fully packaged JAR or similar binary. The root of the evil is having text files as part of the packaging, and not having the tooling to treat those files as part of the source code at build time.


  • As I was discussing this with my partner we summarised this as:

    Humans have always had the capacity for violence and murder; as populations grew, acts of violence could be larger, both in terms of number of combatants and also length of time of continuous fighting. This is a progression of:

    • Small bands of people skirmishing with neighbours to
    • Towns sending small raiding bands to
    • Cities fielding an army for a summer campaign to
    • Empires furnishing professional armies and sending them on multi-year campaigns, to
    • Nation states using advanced logistics to maintain millions of soldiers in the field for years at a time.

    Somewhere between city-states and full modern nation states, there have been full on campaigns of genocide. But genocide can be thought here definitionally as only possible with some significant number of people.

    Unfortunately there is a deep dark part of the human psyche that has always been with us.


  • I hear what you’re saying, but there’s a counterpoint to this.

    In prehistoric times, population densities were low. In mesolithic times (hunter gatherers) there were simply no concentration of people large enough to wipe out or to do the killing. Nothing could be called genocide at this time.

    In neolithic times (the first farmers) violence was definitely a part of life. Some early towns do show signs that they were destroyed. But again, population densities are low enough that the scale of violence would not be enough to call ‘genocide’. It’s a town burnt down with everyone murdered, not a ‘people’ - whatever that might mean at this time. This is not about egalitarianism - it’s population density.

    However as we move to the bronze age, there are definitely signs that large scale events occur that might fit into the modern concept of genocide but archeological evidence is severely lacking. The main line I would argue is that the male lines of the neolithic farmers in Europe are hammered and almost completely replaced with the Yamnaya Y chromosomes across a huge expanse - from the east european plains to the Iberian peninsula. Genetic continuity with the neolithic farmers is maintained though indicating that male newcomers were having children with local women, and very few male locals had children. During this event the culture changed hugely - burial patterns, material goods, etc.

    I don’t know if we can call this genocide - at least the full modern concept - because these changes took centuries to roll out across the expanse of Europe, but they speak to local conquests and, at the very least, the newcomers prevented local males from having their own families. At worst you can imagine a constant expansion of this new culture taking control of new areas, killing the men, taking local women as concubines and eradicating their gods, customs and ways of living. Quite a lot of genocidal checklist items ticked off there.

    By the mid to later bronze age, genicide is definitely a widespread thing, recorded in many texts.