Adrián A. Davín’s website

Longer articles

Presenting ZOMBI2

The story of Zombi (let’s call it ZOMBI1 for clarity) is as follows: just after finishing my PhD, after working for many months on my thesis manuscript, I kind of missed writing code. It sounds strange and it probably is, but that’s what I did almost right away after presenting my dissertation on lateral gene transfers to date the tree of life.

So I worked for about a year or so on ZOMBI1. I think I rewrote it about 3 times, each time slightly better than the previous iteration, incorporating more functions and options. The end result was not fantastic and I think that the code is less than pretty, but we ended up publishing it in the journal Bioinformatics and some people have used it over the years. To me it always was an exercise for my own understanding. Richard P. Feynman said (and I fully agree) that if you are not able to build something, you do not understand it; ZOMBI1 was for me a way to show to myself that I had truly understood the phylogenetic reconciliations we were using to understand genome evolution.

For the last month I have been working almost non-stop on doing a full rewrite of ZOMBI into what is now called ZOMBI2, assisted by Claude Opus 4.8. I spent about a week of intensive work to have something much bigger, better documented and more complete in general than the previous version. I spent about three weeks trimming it down, cutting the fat and removing many bad decisions that the LLMs make automatically. Do not get me wrong: if it weren’t for Claude I would have simply not started doing this project because it would have taken me about 10-20x longer, and the result would not have been half as good.

The experience of developing ZOMBI2 has been totally different from the first one. In the first version I was tackling problems one by one, writing the code myself. In this one, I have been giving very specific feedback mostly in English (both very high level and very low level), revising every decision very closely and spending a lot of time simplifying things. Claude has a massive tendency to overcomplicate things unnecessarily, with jargon and sentences that are simply not human-readable. If you do not keep it on a very short leash, you end up with something that might work but is terrible spaghetti code that is very difficult to maintain and to expand in an organized and organic way.

I am, in general, very satisfied with the result, although it is not over yet. I still need to add some more features, tests and documentation, plus write the paper. However, the hardest part is now behind me. This is a platform that I will maintain over the years and that I know I can safely use to produce new results in an environment that I am highly familiar with.