

Woah! Congratulations!!! 🥳 🎉


Woah! Congratulations!!! 🥳 🎉


Fair point - I completely forgot to take the 3D geometry into account. I guess this could be solved by either making both sp³ (sub the Si-O with Si-Cl) or both sp² (sub the H-O-Si with H-N=Si)? But then writing data becomes more complicated than just adding or removing hydrogens that, as you said, isn’t as simple as it looks like.
I think that the solution that life came up with - making a flexible double helix-forming backbone from which base pairs hang is actually a pretty good way of going about it. Similar as with proteins - a standard flexible backbone with different groups hanging off the chain and influencing how it folds. In your proposition you have the silicon backbone and a single atom as the ‘side chain’, so there is no separation between the backbone and the pairing elements to add this flexibility.
There are also some other details to consider. For example, the amount of data you can store in a given chain length changes depending on how many different types of chemistry you have. In your example, you are using only one type of ‘base’ because the only options are ‘hydrogen bond donor’ or ‘hydrogen bond acceptor’. If you have a chain length of 3, you get only 3 bits, which can store one of 2^3 = 8 values from 0 to 7 (000 to 111). With DNA, you have 4 different base pairs, so a chain length of three can encode 4^3 = 64 values.
That means that, to get a good information density, you would also want to increase the number of possibilities. The challenge here is that you need to tune the set of possibilities so that the thermodynamics are balanced. You don’t want some pairs to stick very strongly while others stick only loosely, and you also don’t want certain bases to be able to pair with each other. See: https://en.wikipedia.org/wiki/Nucleic_acid_thermodynamics
You can perhaps dispense with some of the thermodynamic tuning if you don’t need to be able to easily replicate the data through a process similar to DNA replication, as you don’t actually need to ‘pair’ at all - you have a single string of data. But in that case you lose a very powerful method as you are forced to re-synthesize every data chain from scratch - I think that with such a system you lose too many benefits.
If you go through the steps of creating a system of molecular data storage from scratch, I think it is easy to converge towards something similar to DNA. A lot of ‘origin of life’ research is actually about this - thinking about these systems and how to engineer them from scratch, and… DNA is pretty good at this. When you consider that early chemical evolution was an optimization algorithm to solve this problem, it makes sense that DNA is a good choice.
I do think it is good and fun to explore this. We do have at least some advantages over nature - for example, we have managed to purify many compounds that were not abundant in early chemical soups. So, perhaps we can find something.
Like the dNaM / dTPT3 pair, right? That’s perhaps more viable, at least to increase information density.
Yeah, like those. In this recent paper, for example, researchers sequenced a chain of four anthrophogenic base pairs that they refer to as ‘ALIEN bases’: https://www.nature.com/articles/s41467-025-61991-9



The R2S=O case is closer to a trigonal planar geometry, the other silicon is tetrahedral. The silicon-silicon distances for different pairs of adjacent molecule types will be different. In a very very rough forcefield optimization I see about 3% difference. I don’t think this one will work out structurally because the chains will become unable to pair after a short length as the chain will not have the flexibility to create the O–H bond without adding too much strain.

But, that’s just one thing. You then need to consider how to actually selectively place/remove the hydrogen atoms, how to avoid the molecule from chemically reacting, and how to read out the data.
So, yes, eventually it would be nice to have a fully orthogonal system. There are already several synthetic DNA base pairs that can be used instead of the naturally present bases. But these would still be susceptible to DNAses or RNAses.
The way I see it is that the chemistry of living things is currently centuries ahead of human tech. A large portion of the techniques used in biochemistry rely on using living things to produce the components, and then we purify those components and use them. It makes a lot of sense to make use of that toolkit because the amount of challenges that need to be solved to create this system from scratch is massive.
Your proposal of your silicon chain reminds of the Ferroelectric RAM, where the state is encoded by the polarity of a cell that is changed by moving a zirconium or titanium cation:

This does work, but it works because the crystal is contained within a semiconductor scaffold, and this is something that we do have a good handle on.


Very cool!


AMSTERDAM TRIP: 52.37952717594758, 4.898731163397595 -> 52.373726213381254, 4.8991743688343785 -> 52.37307624236834, 4.892481840346751 -> 52.375235597713356, 4.883881824117286 -> 52.364346142549444, 4.882779439603186 -> 52.358151346039655, 4.868920785661565 -> 52.36032825423474, 4.885688072103288 -> 52.38899110197864, 4.8381014035210965


That’s awesome! And the paper is open access :)


Haha, yeah, trusting ChatGPT with how to manipulate the database and change config files is a risky move 😆 I did use it myself to remind me of the postgresql syntax to find and alter the field.


Sorry, I went to sleep. Glad you were able to sort it out 😄


So, ultimately my problem was that I was trying to set all of the limits to what I thought were “reasonable” values simultaneously, and misunderstood what ‘Message’ meant, and so I ended up breaking things with my changes without the reason being obvious to me. I looked into the source code and I can see now that indeed ‘Messages’ refer to API calls and not direct messages, and that there is no ‘Direct Message’ rate limit.
If I let ‘Messages’ stay high I can adjust the other values to reasonable values and everything works fine.
Thanks a lot for your help!! I am surprised and happy it actually worked out and I understand a little more 😁


Have fun! 😁


Thanks!
I was able to crash the instance for a few minutes, but I think I have a better idea of where the problem is. Ths $emote_addr variable seems to work just the same.
In the rate limit options there is a limit for ‘‘Message’’. Common sense tells me that this means ‘direct message’, but setting this to a low number is quite bad. While testing I eventually set it to ‘1 per minute’ and the instance became unresponsive until I modified the settings in the database manually. If I give a high number to this setting then I can adjust the other settings without problem.


Yes, I see this there. Most of the nginx config is from the ‘default’ nginx config in the Lemmy repo from a few years ago. My understanding is somewhat superficial - I don’t actually know where the variable ‘$proxy_add_x_forwarded_for’ gets populated, for example. I did not know that this contained the client’s IP.
# backend
location ~ ^/(api|pictrs|feeds|nodeinfo|.well-known) {
proxy_pass http://0.0.0.0:8536/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Rate limit
limit_req zone=mander_ratelimit burst=30000 nodelay;
# Add IP forwarding headers
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
I need to do some reading 😁


Thanks! Yes, I saw both messages and I am now going through the NGINX config and trying to understand what could be going on. To be honest, Lemmy is the hobby that taught me what a ‘reverse proxy’ and a ‘vps’ are. Answering a question such as ‘Are you sending the client IP in the X-Forwarded-For header?’ is probably straight forward for a professional but for me it involves quite a bit of learning 😅
At location /, my nginx config includes:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
So, I think that the answer to your question is probably ‘yes’. If you did have these rate limits and they were stable, the more likely explanation is that something about my configuration is sub-optimal. I will look into it and continue learning, but I will need to keep my limits a bit high for the time being and stay alert.


I don’t recall any of them being from mander (unless they were dealt with before I started testing?), but thanks for taking preventative measures :)
I don’t know what ‘Antiyanks’ isIt’s the codename for a particular long-term troll and is based off of their original username pattern (which they still use sometimes). I have reason to believe it’s also the same troll that used to spam the racist stuff in Science Memes.
These are most of today’s batch (minus the JON333 which was just a garden-variety spammer that made it into the last screenshot).
No, they were not in mander.xyz. But I am generally quite relaxed when it comes to accepting applications. I mostly reject an applicant if it is very clear it is not an actual user, and then actively follow up on recent accounts for a short time. So the possibility of silent spammer accounts accumulating over time is always a concern.


So, a ‘Comments’ Rate limit: 10, Per second: 60, means a maximum of 10 comments per minute, correct?
Correct, per client IP.
Setting the limits to more reasonable values, like ‘20 posts per minute’, causes the server to stop serving posts. My front page goes blank.
So, I am starting to think that ‘20 pots per minute’ means ‘requesting 20 posts per minute’ and not ‘creating 20 posts per minute’.
I am still having doubts about what these limits mean, but setting reasonable numbers seems to break things, unfortunately.


Hmmm - after changing these settings to what I think are reasonable settings, the server crashed and I am now getting ‘Too many requests’ messages… So, perhaps there is something not working so well with these rate limits, or I am still misunderstanding their meaning.


Thanks for the heads up. I don’t know what ‘Antiyanks’ is, but I already had to ban one comment spammer.
The rate limits are indeed a bit confusing. The settings are:
Rate Limit: X Per Second: Y
I understand this to be ‘X for every Y seconds’
So, a ‘Comments’ Rate limit: 10, Per second: 60, means a maximum of 10 comments per minute, correct?
Maybe the reason you see 99999999 is due to troubleshooting. I have increased my instance’s limits multiple times while troubleshooting server issues, because the meaning of the settings was not clear to me. These limits are usually not the reason for the sever issue, but I put some high number and did not bring them back down after the issues were resolved.
I have lowered them now to more reasonable numbers. I will also be more strict with new applications for the time being.
AGUCUAGCAUAC