Tender Is The Byte

Blog posts

Bioinformatics by hand: Neighbor-joining trees

Aug 31, 2022

Bioinformatics algorithms can be intimidating, but many are much simpler than you think. In this post, we show how to calculate neighbor-joining trees "by hand" without any computational assistance beyond a spreadsheet program.


Generating Python bindings for OCaml with pyml_bindgen

Apr 12, 2022 | Updated:

This post provides an introduction to using pyml_bindgen, a command line application that generates Python bindings via pyml directly from OCaml value specifications.


An introduction to the re2 regular expression library for OCaml

Oct 2, 2021 | Updated:

In this post, I give an introduction and guide to help you get started using OCaml's re2 regular expression library, which provides OCaml bindings for Google's regular expression library, RE2.


Styling plots in base R graphics to match ggplot2 classic theme

May 9, 2021 | Updated:

The ggplot2 package makes some really nice looking plots. In this post, we give a step-by-step guide to styling plots, including moving the legend outside the plotting area, to match the ggplot2 classic theme using base R graphics.


Computational lab notebooks using git and git-annex

May 7, 2021 | Updated:

Managing a computational lab notebook can be tricky. Here I discuss a workflow and command line app for helping you to set up and manage your lab notebook with git and git-annex.


divnet-rs: A Rust implementation for DivNet

Jan 18, 2021 | Updated:

DivNet is an R package for estimating diversity when taxa occur in an ecological network. Here I talk about why you may want to use DivNet, introduce my Rust implementation of the algorithm, and compare its performance to the original R package.


A simple dashboard for COVID-19 case counts

Dec 30, 2020

Introducing the COVID-19 dashboard I made to compare case counts across U.S. counties.


Virome Bytes: Microdiversity of Mediterranean Sea Viruses

Feb 29, 2020

In today's edition of Virome Bytes, Amelia Harrison discusses a paper looking at the microdiversity of Mediterranean Sea viruses!


Beginning Bioinformatics: What's a terminal? What's the command line?

Dec 15, 2019 | Updated:

If you're new to bioinformatics and just getting started, you're going to need to learn a lot of background info before you can really get started analyzing your data. In this post, we go back to the basics talking about terminals and the command line.


Using Sass in Clojure Ring apps

Dec 12, 2019

So you want to use Sass instead of plain CSS in your Clojure Ring web app, but you're not sure how to get it set up? No problem! Let's walk through it together.


Virome Bytes: Prophages in Lactobacillus

Nov 25, 2019

In today's edition of Virome Bytes, I talk about a couple of new papers looking at prophages in Lactobacillus!


Notes from the Messyverse: How to tidy nested lists in R

Nov 2, 2019

You've got nested lists in R. In fact, you've got lists of nested lists, but ggplot wants data frames or tibbles. Have no fear, this post will show you how to tidy up your nested lists by converting them to data frames!


Making charts with ClojureScript, Reagent, and React-vis

Oct 9, 2019

An introduction to making sweet charts with ClojureScript, Reagent, and React-Vis!


Spell Checking in Emacs

Jun 9, 2019 | Updated:

Super simple guide to setting up spell checking in Emacs.


Running MMseqs2 on CPUs with SSE4.1 or AVX2 instruction sets

May 21, 2019 | Updated:

MMseqs2, a program for searching and clustering proteins, requires a CPU with either AVX2 or SSE4.1 to run. In this post, we walk through writing a script to automatically determine the instruction set on your computer and run the correct version of MMseqs2.


Learn Rust: Parsing command line arguments with StructOpt

May 8, 2019

A beginners guide to using StructOpt for parsing command line arguments.


Rotating axis labels in R plots

Apr 25, 2019 | Updated:

A detailed look at how to rotate axis labels in base R plots.