Blogs
-
JAX-in-the-Box: Unboxing Stateful Training with Flax NNX and Orbax
March 2026
An end-to-end walkthrough of training and checkpointing an MLP with Flax NNX and Orbax, plus how JAX's XLA backend delivers zero-code hardware portability from CPU to TPU.
-
Which Statistical Test Should You Actually Use?
December 2025
A practical guide to picking the right statistical test based on group count, distribution shape, and sample size, with Python snippets for each.
-
PyTorch Implementation of Skip-gram with Negative Sampling
November 2025
A from-scratch PyTorch walkthrough of Skip-gram Word2Vec with negative sampling, from dataset construction to trained embeddings.
-
A Practical Guide to K-Means and Hierarchical Clustering
June 2025
A hands-on comparison of K-means and hierarchical clustering for high-dimensional biological data, covering distance metrics, linkage criteria, and cluster validation in both Python and R.
-
A Short Note on Principal Component Analysis (PCA) in Bulk RNA-seq
June 2025
A concise walkthrough of the linear algebra behind PCA for bulk RNA-seq, from variance-stabilizing transforms through SVD to interpreting loadings and variance explained, with parallel Python and R implementations.
-
Addressing Heteroscedasticity in RNAseq data
May 2025
How mean-variance dependence in RNA-seq counts distorts PCA and clustering, and how DESeq2's variance-stabilizing transformation (VST) fixes it.
-
Going Offline: Installing EPI2ME Workflows by Hand on WSL2
March 2025
A step-by-step guide to manually installing and configuring EPI2ME workflows for fully offline execution on WSL2.
-
Beyond the Monolith: Mastering Nested Repositories with Git Submodules
February 2025
A concise guide to managing complex project structures and dependencies efficiently using Git submodules.
-
Welcome to My Blog
January 2025
An introduction to this site and what I plan to write about.