Today weâre talking about uses for Go in the medical industry. Tim Stiles develops and maintains a Go package for synthetic biology and molecular biology called Poly. It has broad applications for biotech R&D, but also has very direct applications to medicine.
Tim Stiles: I really love them. Oh, by the way, anyone listening out there, if you havenât been to Gitpodâs Discord, go. Theyâre super-friendly. Just show them your work, with whatever youâre doing. Theyâre super-excited, supportive and ask a lot of questions. Theyâre really, really nice.
But when I got started, Go is like test-first; all the things you need⌠Like example tests are actually a great thing, where Python or a lot of other languages â like, maybe thereâs a library for it, but in Go itâs just standard. Whenever I write an example test, it runs every time Iâve run my tests, and itâs an example that never does doc rot. The problem with doc rot, with a lot of scientific software is big, because people will write these huge things, the documentation, then theyâll change the API like two versions down, and then they wonât change the documentation.
And so I think the fact that Go has all these opinions, which if youâre like a â I guess you would call it like a gray beard or white beard software engineer⌠Like, maybe you have different opinions, but if youâre just starting out and you donât really know where youâre going DevOps-wise, Goâs defaults are beautiful; they work. And yeah, you may struggle with generics, which Go has obviously been working on, which I think scientists will have a little bit hard time going into typed languages⌠They donât have that much of a hard time. But the thing that when I was originally considering writing Poly, I was looking at what could be compiled to a binary, because I thought it was gonna be more of a command line tool. Eventually, I was like âWait, this doesnât make any sense as a command line tool.â But originally, I thought it was gonna be more of a command line tool⌠So I was like âWhat compiles to a binary, whatâs easy to learn, whatâs fast, and what has like a good DevOps ecosystem?â And it pretty much came down to like Rust was a little faster, but Go won on everything else. And thatâs kind of what I needed.
I donât know if youâve ever done like string manipulation in Rust, but itâs hard. Itâs not something you want to teach the people coming from Python. And maybe thereâs a good reason for that, but I did not personally enjoy it. So when I was testing those two, it came down to Go winning on almost everything. And I think itâs also just a great step from what would be considered these scripting languages, where the syntax is easy enough, the concepts are still there. I mean, yeah, you can get into concurrency and all this other stuff, but coming from R and Python, you have to learn that anyways. Youâre not learning multi-threaded stuff, and what most scientists use for languages, which are â usually, most scientists are using Python, R, MATLAB and Giulia, which - actually, Giulia does have multi-threading, a lot of modern features. But Go just has a bigger breadth, and a bigger DevOps community, and a better community of people that use it, which actually makes it really easy to find odd functions that I need.
One of my contributors convinced me that we need to use [unintelligible 00:37:33.08] is the default, and so Goâs crypto library doesnât have that yet, so some guy wrote a working implementation and we just used that. Lua didnât have that, so my friend who wanted to implement it in Lua had to go and write BLAKE3 three by hand. Heâs like, âI donât understand this. Itâs all a bunch of math and single-little letter variables.â I was like, âSo now do you realize why I make you write all your variables as whole words?â Heâs like â