HNHacker News
TopNewBestAskShowJobs

koeng

1,843 karma · joined February 22, 2019

It'd be pretty cool to build a cell, wouldn't it?

keonigandall.com

synbio25.com

koeng101 X gmail.com

github.com/koeng101/dnadesign

submissionscomments
koeng··on Seeing like a software company
> Why are these capabilities so valuable to a large software company, when small software companies can do without them? This is leaving my area of expertise somewhat, but I’m pretty sure the main answer is large enterprise deals

I think the more boring answer may be that in any sufficiently large organization, the only way to maintain control is through legible processes, because the sociopaths do utilize the legible processes to keep things running (and utilize the illegible processes to make deals). Without legible processes, after dunbar's number, your communication falls apart.

koeng··on Zig builds are getting faster
I've really appreciated the incremental builds with zig - I really like having a single static binary, and I have an application which uses a few different libraries like SQLite and luau and it compiles at nearly Go speeds.

That said, there are definitely still bugs to their self hosted compiler. For example, for SQLite I have to use llvm - https://github.com/vrischmann/zig-sqlite/issues/195 - which kinda sucks.

koeng··on Litestream v0.5.0
Interesting. Any plans for a cache? Or would that just be a litestream thing
koeng··on Litestream v0.5.0
Interesting! I really like your wasm compiled SQLite more than the pure Go one, so it is what I use most of the time.

What exactly are you trying to port?

koeng··on FyneDesk: A full desktop environment for Linux written in Go
Neat. I wonder what performance is like compared to normal desktop environments.
koeng··on Python on the Edge: Fast, sandboxed, and powered by WebAssembly
Much better embedability and much easier to make it safely embedded. Doesn't require a wasm compilation, just can be in raw C, and that lua can directly integrate with host functions and vice versa - something even these wasm implementations struggle with.

Also, with luajit, it is much faster.

koeng··on Python on the Edge: Fast, sandboxed, and powered by WebAssembly
Very cool!

I’ve been looking at using lua for something like this: basically, users will be able to program robots in my lab (biotech) to do things, and I need a scripting language I can easily embed and control the runtime of in the larger system.

Lua is theoretically better in… almost every way, except everyone in bio uses python. So it could allow more easy modification of LLM generated scripts (not worried about the libraries because I mostly want to limit them: the scripts are mainly to just run robots, and you can have them webhook out if you need complicated stuff)

My question would be: would running a python sandbox vs a lua sandbox actually be appreciably better? Not sure yet, but will have to investigate with this new package (since it has Go bindings!)

koeng··on Top Programming Languages 2025
> I switched to zig from rust for implementing a database since 6 months and have no regrets but just don’t think anyone would use it for writing backend code or other similar smaller things.

I've been thinking about starting a project in Zig rather than Go lately, even though I am skilled at Go. I really like working with more, cracked? or simply crazy people willing to learn an esoteric language, and zig fits the needs in particular I have (mostly very nice C interop)

Would you recommend? How are the average zig contributors vs something like go?

koeng··on GPT-5
Yep, literally the first thing they say they are targeting, biological capabilities.
koeng··on GPT-5
Yes, that is precisely what I believe they ought to do. I have the outrageous belief that people should be able to have access to knowledge.

Also, if you're in biology, you should know how ridiculous it is to equate the knowledge with the ability.

koeng··on GPT-5
I hate the direction that American AI is going, and the model card of OpenAI is especially bad.

I am a synthetic biologist, and I use AI a lot for my work. And it constantly denies my questions RIGHT NOW. But of course OpenAI and Anthropic have to implement more - from the GPT5 introduction: "robust safety stack with a multilayered defense system for biology"

While that sounds nice and all, in practical terms, they already ban many of my questions. This just means they're going to lobotomize the model more and more for my field because of the so-called "experts". I am an expert. I can easily go read the papers myself. I could create a biological weapon if I wanted to with pretty much zero papers at all, since I have backups of genbank and the like (just like most chemical engineers could create explosives if they wanted to). But they are specifically targeting my field, because they're from OpenAI and they know what is best.

It just sucks that some of the best tools for learning are being lobotomized specifically for my field because of people in AI believe that knowledge should be kept secret. It's extremely antithetical to the hacker spirit that knowledge should be free.

That said, deep research and those features make it very difficult to switch, but I definitely have to try harder now that I see where the wind is blowing.

koeng··on Ask HN: What are you working on? (July 2025)
Im investigating creating a nattokinase overexpression strain for fun. This is my second home-brewed food GMO!

Basically, nattokinase is an enzyme made by natto (Japanese fermented soybeans). It’s been show clinically to help against blood clots. Unfortunately, the clinical dose is 5x the quantity in a serving of natto.

That’s too much natto to eat! So I’m working to genetically engineer a normal, typical natto strain to just over express that one enzyme, so 1 serving == 1 clinically relevant dose

My last was genetically engineering yeast to produce grape aroma, then baking bread. Was great fun feeding people it. I want to eventually throw GMO dinner parties in SF, but only with GMOs I’ve created with my own hands

koeng··on Mini NASes marry NVMe to Intel's efficient chip
Are there any mini NAS with ECC ram nowadays? I recall that being my personal limiting factor
koeng··on 'Turbocharged' Mitochondria Power Birds' Epic Migratory Journeys
They're kinda a built-in protein shop (got their own ribosomes) - but they're only for 1 thing, which is locally regulating the insertion of extremely hydrophobic proteins for respiration. You could imagine that this one application (maintaining and repairing membrane potential) requires MAXIMUM performance and response (they gotta be JIT-ed into the membrane), so much that the cell maintains thousands of genes for those ~13 genes to be able to be expressed, and it is totally worth it. Everything else gets moved to the genome. It's like we have tiny virtual machines that we can scale to respire more.

Chloroplasts are a more interesting example of a protein shop. RuBisCO, for example, the most abundant protein on earth, is coded in chloroplasts to scale expression. It is mainly there for dynamic scaling purposes, whereas the mitos are very optimized for one thing

Mitochondria don't go back because if there is 1000 mt genomes to 1 nuclear genome it is extremely energetically desirable to have 1 copy rather than 1000 copies of any given gene.

koeng··on Mitochondria Are More Than Powerhouses–They're the Motherboard of the Cell
Check this out - https://sci-hub.ru/https://doi.org/10.1038/nature09486
koeng··on 'Turbocharged' Mitochondria Power Birds' Epic Migratory Journeys
It's doable https://www.nature.com/articles/s41467-022-33530-3

100,000 x 6kbp == 600 million, or less than 1/5 of our genome. Difficult part is the barcoding bits, but that is not THAT hard.

koeng··on 'Turbocharged' Mitochondria Power Birds' Epic Migratory Journeys
Fun fact: respiration is what really caused eukaryogenesis and the ability for multicellular life to occur. If archaea (what our nuclear genomes are derived from) weren't being kinda weird in the deep ocean, we would never have existed. Bacteria and archaea (other than eukaryote ancestor) have never created multicellular life. And it's because respiration. (cross posting below from my comment on another thread)

For efficient respiration, you need to have the translation/transcription of certain ATP synthase genes near to the membrane for basically JIT-ing them when ready to maintain membrane potential, and hence energy generation. Otherwise, the membrane potential falls apart. This simple need is why there are zero multicellular bacteria and multicellularity evolved 6 times in eukaryotes. By decoupling the rest of the genome from the JIT bits (ie, mitochondrial DNA), you can scale energy independently of genetic information. So if you need 1000x the energy, you need like 5% more DNA (mitochondrial DNA) instead of 1000x more DNA in your genome.

Some estimates say that our eukaryotic genes are in charge of 5000x more energy than the equivalent bacterial gene. Hence, our genomes can inflate that much and its fine. And they have. All that inflation lets us have bullshit hang around in our genome, and hey, sometimes evolution figures out something to do with all that bullshit. We evolved 1000x more complexity than bacteria because we decoupled the performance code from the rest of the code.

koeng··on 'Turbocharged' Mitochondria Power Birds' Epic Migratory Journeys
We are not able to modify human mitochondria other than with TALENs or ZFNs - CRISPR doesn't work (can't import the sgRNA). Even that doesn't work that well. We have not been able to genetically transform human mitochondria. It's a big open question of how we could do it. In yeast you use a gene gun because they can actually survive it, and even that is exponentially harder than normal yeast engineering.

Hundreds to thousands of mitochondria per cell. They also encode pretty few genes, and those genes are mainly there because they directly get injected into the membranes. There are like a thousand mitochondrial genomes per nuclear genome, each with only ~10 genes that repair each other, while the nucleus has literally thousands of mitochondrial genes in two copy. Much easier to look at that

koeng··on Mitochondria Are More Than Powerhouses–They're the Motherboard of the Cell
Eukaryogenesis is a fascinating topic, and "motherboard" doesn't do it justice.

For efficient respiration, you need to have the translation/transcription of certain ATP synthase genes near to the membrane for basically JIT-ing them when ready to maintain membrane potential, and hence energy generation. Otherwise, the membrane potential falls apart. This simple need is why there are zero multicellular bacteria and multicellularity evolved 6 times in eukaryotes.

By decoupling the rest of the genome from the JIT bits (ie, mitochondrial DNA), you can scale energy independently of genetic information. So if you need 1000x the energy, you need like 5% more DNA (mitochondrial DNA) instead of 1000x more DNA in your genome.

Some estimates say that our eukaryotic genes are in charge of 5000x more energy than the equivalent bacterial gene. Hence, our genomes can inflate that much and its fine. And they have. All that inflation lets us have bullshit hang around in our genome, and hey, sometimes evolution figures out something to do with all that bullshit. We evolved 1000x more complexity than bacteria because we decoupled the performance code from the rest of the code.

koeng··on Teal – A statically-typed dialect of Lua
1. Yeah, there are third party bundlers, but none of em worked too well for me. You are right: it should be separate

2. If I recall correctly, gen-target didn't hit it because I was using some very esoteric bullshit from the luajit internal spec that couldn't have nice typing

3. Yes, untyped lua in the same file. The problem is that I want everything in a single file for distribution and embedding - kind of like the SQLite amalgamation. It'd be super cool to just add in my dnadesign.lua or dnadesign.tl file and have full bioinformatics in almost any language! Definition files don't work as well there - I still kind of use them for the type definitions, but then embed the raw file as a string

4. YES THANK YOU! I'm not sure if it is in the docs but this is SO useful!

koeng··on Model Organisms Are Not Static
Apologies, sometimes I forget that I am on a computing forum. Backbone == plasmid backbone. greazy had a good explanation. I'm trying to clone synthetic DNA into plasmids, so all the junk that is necessary for replication and selection is commonly referred to as the "backbone" or "vector", whereas your insert is usually just called the "insert".
koeng··on Teal – A statically-typed dialect of Lua
I really love teal! Here is a 10k loc project I have in it - https://github.com/Koeng101/libB/blob/dev/src/dnadesign/dnad... - Basically, I reimplemented all my synthetic biology bioinformatics from Go into teal so that LLMs can script with it better in a hermetic environment. It's got all sorts of things like cloning simulation, codon optimization, genbank parsing, synthesis fixing, reliable sequence hashing, sequence analysis, etc. I'm pretty sure it is a more complete synbio library than anything in python, actually.

A couple things I want from teal: 1. I wish there was a better way to bundle files together. I have a little build.lua, but eh, I think it could be better. I know of cyan and everything but I feel like that was developed for a different application than mine. I want to have 1 complete file that I can just give people and allow them to do synbio work in any target language with a lua machine. 2. There are some annoyances around luajit vs lua5.1 functionality 3. The compiler yelling at you gets old for integrating raw lua. I tried to port json.lua in and even with the definition file, I couldn't embed the whole json.lua without having compiler errors. So eventually I just imported it as a string that is type checked, which is bad 4. I really wish syntax highlighting on github was a thing

The good bits:

It's pretty much complete. I used it a couple years ago and there were things with generics that I just couldn't do, but now it is much better. For example, how I use generics for the different parsers (fastq, fasta, genbank, slow5, pileup, etc) https://github.com/Koeng101/libB/blob/dev/src/dnadesign/src/...

Overall, love it! It is one of those pieces of software which is nearly complete, and I love using software like that.

koeng··on Model Organisms Are Not Static
I do high throughput cloning, so customers of mine want complete, verified genes. There is a shit ton of just stuff that can happen that you can't predict even in the most domesticated organism.

Most recently, a transposon jumped from E.coli into my backbone, and I picked it up during sequence. 6kbp added instantly. Absolutely wack.

koeng··on Baby is healed with first personalized gene-editing treatment
It's fundamentally different than a computer and arguably more complete.

The talk of "crawling along the genome" is kinda fundamentally wrong though and is a bit irking - CRISPR kinda just bumps around until it hits a PAM site, in which case it starts checking against sgRNA. Much more random than they make it seem

koeng··on Ask HN: What are you working on? (March 2025)
I'm a synthetic biologist! And I think a big problem is physically executing biology programs.

I've been working on building a programming method for biology labs. Basically, it is a dynamic execution environment using lua that can have full rewind-ability (for complete execution tracing) and pausing - you can execute some code then wait a week or so to continue execution. The idea is you can have a dynamic environment for executing biology experiments where the route changes on the basis of outcomes - something I haven't really seen anywhere else. Then I focused a bit on the pedagogy of LLMs so that you can ask an LLM to generate a protocol, and then when you execute it and get unexpected results, it can automatically debug its own protocol using a code sandbox.

It all sounds decent in theory but the difference is I actually implemented it and ran a real biology experiment with it (albeit a simple one that I knew wouldn't work)

Demo here: https://github.com/koeng101/autodemo (probably watch the video)

koeng··on Show HN: SQLite disk page explorer
What are the disadvantages of using WITHOUT ROWID?
koeng··on Show HN: Ldump – serialize any Lua data
I've been looking for something similar! Here is what I'd like to do:

I have a long-running script. At several steps, the execution of the script has to pause for a long time for operations to be done in-real-life (biological experiments, so think wait time being like 2 days between running), before getting some data and continuing to run. From what I can see in this, I'd add yielding coroutines at data pause points, right? How would you handle that?

koeng··on Animals as Chemical Factories
Cell-free synthesis is really nice for R/D (it's fast!) but honestly kinda sucks for producing things. Cells have a really nice property of making more of themselves for the cost of basic chemicals (salt, sugar, nitrogen).

TXTL also can be pretty finicky generally - cold storage is required, have to store chemicals separately, ribosomes tend to fall apart and not get recycled, etc. Cells will heal themselves perfectly (sometimes too perfectly, kicking out your construct)

koeng··on Hacker Fab
You don't even need DACs or ADCs, you just need an SRAM cell leaking current through an electrode. The process is entirely separate from that. By analog, I don't mean the signal, I mean the chip is interacting with the world physically. I need the electrodes physically touching chemicals. Those chemicals are incompatible with the aluminum or other normal metals on those connections - you pretty much need platinum or the metal from the chip will screw up the chemical reaction.

You also need large amount of input/output - a good start on a chip would be about 1,000 to 10,000 electrodes. I think it is going to be difficult to put that many on an FPGA.

koeng··on Hacker Fab
It is the actual electrodes. They need to be post-fabricated with gold or platinum. The typical aluminum isn't compatible with DNA synthesis chemistry.
← PreviousPage 2 of 14Next →