Write the documentation first
I never regret writing documentation and outlines for projects first.
I never regret writing documentation and outlines for projects first.
Here I try to write a simple Tree-sitter parser for the FASTA file type.
Interesting things happen at intersections, and a recent area of intersection that has caught my interest is the philosophy of science. Since the Enlightenment, people have noted that mathematicians and scientists do a kind of academic research that seems different from other disciplines. What differentiates these disciplines? When does something cross the line from science into pseudo-science?…
When I am about to work with someone new or have an important meeting, I like to prepare by finding that person's Master's or PhD thesis and giving it a cursory read. Viewed in the right light, a thesis gives me an intimate understanding of who that person is, both as an individual and as a scientist.
Root directories for software projects are over-cluttered and I think the XDG Base Directory specification can help us.
I recently attended a presentation by people from Anthropic at work about their large language models. One undercurrent in the presentation was that thinking is hard - wouldn't it be nice if it was easier? I'm sorry to say, but that's your job.
I encountered a unique problem with my setup that I couldn't find a solution for in the or anywhere else online. For posterity, here's how I solved it.
A collection of interesting blogs I follow.
Today is National Indigenous Peoples Day in Canada and I think it's especially important to recognize the rights, dignity, and sovereignty of these peoples today in Canadian politics.
There is a common attitude in academia, with scientists, and in science-adjacent areas that science is not political. Or, in other words, that science is at its best when it is non-political. An expression of this idea has been recently published the current president of the US's National Academy of Sciences. This perspective is, frankly, wrong.
The genealogy of advisor relationships for mathematicians is fascinating.
A colleague asked me 'What kind of tools and resources do you feel you need access to for success as a computational biologist?'. Here are my answers.
An interesting paper was published in Nature two days ago, titled 'Remote collaboration fuses fewer breakthrough ideas'. I believe it should be retracted.
This extended section of my "Unlearning Grad School" series focuses on the stresses around receiving little pay as a grad student.
This second part of my "Unlearning Grad School" series covers various sources of stress one experiences during grad school.
This first part of my "Unlearning Grad School" series covers the experiences I had and how I and others felt during grad school.
It's coming up on two years since defending my PhD and finishing grad school. And as valuable as I found the experience, it didn't come for free. I'm a very different person now than I was before grad school. In some ways, better, and in other ways, worse. And it is the ways in which I'm worse off now than before that I'd like to explore for World Mental Health Day on October 10th.
I never found statistics classes in school very useful or intuitive. But occasionally there were some surprising statements that have stayed with me many years after some of those courses. I'd like to talk about one of them here that concerns the independence of mean and variance estimators.
Well, it finally happened to me. I was blocked out of a website I use for work because of Cloudflare. And I have no idea if or when I'll be let back in.
Storing data in tables is such an integral part of data collection, curation, processing, analysis, and archiving. And for each of the these different purposes, there are different opinions and best practices for how that data should be stored. But I still feel that there's something missing from how modern data table software handles values.
When I gave Nix a go in 2021, I had previously dismissed it as too technical for most computational biologists' purposes. There have been a few developments in the last couple years that have me playing around with Nix again. It's got me thinking about the problem of scientific reproducibility, too, and how Nix might help.
So you've just finished writing an application in Rust, congratulations! So how do you go about compiling a release version? And how do you do it for other operating systems that you're not currently working on? Here I cover the major cases when cross-compiling between Linux, macOS, and Windows.
I have already written about why I don't think Twitter is for me, as a scientist. As Elon Musk and his financial partners have bought out Twitter and taken the company private, I feel it is necessary to re-evaluate the role of Twitter in the scientific domain.
I recently bought myself a new road bike to replace my old and failing Jaguar Trail Cat. Despite the Trail Cat never being a great quality bike, I loved that thing. As a final farewell, I want to tell you about it and all that it did for me.
When collecting data from scientific experiments, it's often useful to compare individual samples against each other to see how similar they are. One way to do this is using the cosine similarity statistic. Here, I describe how to calculate this statistic efficiently for a large set of samples.
When I need to kill time in a new city, I like to walk around, get a feel for the place, and take a few photos along the way.
I have used HomeBank for many years to manage my personal finances. It's a great tool and I love the GUI, but I also love command line interfaces. So I decided to build one for HomeBank.
Widespread testing for COVID-19 is an effective measure to protect yourself and others from disease spread. Rapid antigen tests are an effective tool that individuals can use at home on their own schedule, but interpreting the results and deciding what to do is not always simple. Here, I discuss some of the statistics behind why and what consequences this has.
What is a PhD worth? What do you gain from the experience and what do you lose? Here are the things that I lost and found in the microcosm of my university during my PhD.
Nix is an emerging tool for keeping your computational environments reproducible and isolated. Here, I test how useful Nix is, compare it to conda, and assess whether it's ready for use in computational biology.
A paper from my and my colleague, Stanley Zhou, looking at the 3D structure of DNA in prostate cancer cells was published. This post is a breakdown of this article that's more approachable for non-experts.
I have told colleagues in the past about some benefits of parallelized code, especially with large genome-wide calculations. Parallelizing over chromosomes is intuitively easy and simple to code. But sometimes parallelization isn't worth the effort because you're using a really well-written library.
Hallelujah, the COVID-19 pandemic is coming to a close. Or, at least, so says the Alberta provincial government. But I wouldn't be too trusting of what they're advocating.
I like to write some proofs when I have need of them but have a hard time tracking them down. Here is one about the limit of the t distribution with infinite degrees of freedom.
Lots of work goes into writing documents. Lots of that work is rule-based and can be made programmatic. This makes working with documents as a form of code that needs to be compiled as useful way to think about them, as well as working with them. LaTeX can handle these kinds of documents and may be the right place to start.
In Rust, I have always had trouble dealing with paths and how they differ from strings. Here, I want to break down how these types are related to each other, why they're different, and how to convert between them.
This post is about Org mode, an exemplary Emacs package, and why I think so many people love this piece of software.
For many computational biologists, their work starts with sequencing data. But that data obviously doesn't appear out of nowhere. To bring that side of molecular biology a bit closer to home, I got my hands on an old flow cell and take it apart to see what it's made of.
Science and statistics are hard. There are lots of reasons that can make things go wrong, and it's important to remember that when looking at p-values and hypothesis tests.
This post is a walkthrough of how to get these Linux GUI applications running on Windows using the Windows Subsystem for Linux.
My friend, Finn M-K, makes music for a living. I wanted to buy his most recent album and keep the MP3 files. The process was miserable and the easiest route was to pirate it. This is not a sustainable ecosystem for musicians.
Here is a brief rundown of file permissions on Unix systems and how to change them.
I use Anaconda managing my computational software environments. Here are some pragmatic tips for making conda environments easier to deal with.
Dependencies are complicated for computational biologists. Adapting a different development strategy can help your end users.
Here is a reason why I like the Rust language and community, but also why developers may not like them.
Relying on first hand evidence is important for building an argument. Here I discuss how citation limits in journals may entice readers to read the review papers and not the original articles, but that doing this diligent work is important for research.
This blog post is an experiment in running the web monetization protocol on this blog. If you don't have web monetization enabled in your browser, you won't see the contents of this post.
Scientific writing is about communication. Colour is an effective visual communication tool, but tough to use well in scientific figures. Here are some notes on how to do it well, what tools to use, and what examples to use as inspiration.
Emacs is a text editor that has a lot of history and a lot of functionality. Because of its history and the philosophy behind it, it can be hard to find the "right" way to do anything with it. In this post, I want to compile some information that I've found over time, and things that have worked for me.
The PATH environment variable is key for getting software to run on your computer. Sometimes you have to edit it by hand for your development purposes. Here is a tool to make that process a little more sane.