High Performance Computing & AI
Practical notes on Python, JupyterHub, Kubernetes and AI for science — from the San Diego Supercomputer Center.
-
Software Citation Station
This post introduces the "Software Citation Station" by Tom Wagg, a tool designed to help researchers generate accurate and comprehensive citations for software. It simplifies the process of giving credit to software used in academic work, ensuring proper attribution and reproducibility.
-
Disable Gemini CLI loading phrases
How to disable the annoying loading phrases in Gemini CLI for a smoother experience.
-
Container and product EZID DOIs with Python
This post refers to the ezidapi repository. The previous tutorial showed how to wire a canonical DOI to multiple versions; start there if you need versioning rather than parts: single DOI basics and hierarchical versioned DOIs. This follow-up creates a container DOI for a data release and two product DOIs that declare they belong to that release. The pattern mirrors a collection landing page (container) that links to specific datasets (products) using DataCite's HasPart and IsPartOf relations.
-
How to install codex and gemini cli
::: {.callout-note} This is actually not recommended because it mixes node packages with other packages installed in .local. Recommend instead to use nvm, once configured nvm, then the standard install command works without specifying any prefix. :::
-
Take control of your Kaiser Permanente blood test results (no coding knowledge required)
Want to make sense of your Kaiser Permanente blood test results without needing to be a coding expert? This guide will walk you through using readily available tools to analyze your health summary, specifically focusing on lipid panels, with a step-by-step approach.
-
Auto-build JupyterHub images with GitHub Actions
Overview: is a template that ships a JupyterHub-ready single-user image with common scientific Python tooling and sensible defaults. Just edit requirements.txt in GitHub and the built-in GitHub Actions workflow auto-builds and publishes a new image—no local Docker required.
-
Deploy the Dask Operator for JupyterHub on Kubernetes
Tutorial OBSOLETE Please check the updated version of this tutorial. This post describes how to deploy the Dask Operator for Kubernetes alongside a Helm-based JupyterHub installation. The Operator provides a Kubernetes-native way to create and manage Dask clusters via custom resources, simplifying multi-tenant setups, it is therefore more integrated into the Kubernetes ecosystem compared to Dask Gateway.
-
Implementing conditional logic in Nextflow workflows
This post serves as a follow-up to my previous tutorial, "Running Nextflow on Expanse", where I covered the foundational aspects of deploying Nextflow workflows on an HPC environment.
-
Mixing Nextflow executors for hybrid workflows
This post demonstrates how to combine different Nextflow executors within a single workflow, a powerful pattern for optimizing resource usage in scientific computing.
-
Hierarchical EZID DOIs with Python
This post refers to the ezidapi repository. In the previous tutorial we focused on minting a single test DOI with the EZID API. This follow-up shows how to extend the same repository to support a canonical DOI plus two version-specific DOIs that point to one another so DataCite-powered portals can navigate the release history.
-
Going full agentic for scientific software development
The landscape of scientific software development is being transformed by AI coding agents. Over the past few weeks, I've been exploring GitHub Copilot's AI coding agent capabilities for maintaining healpy, and the experience has been remarkable.
-
Software Citation Station helper script
Proof-of-concept generatecitation.py in the softwarecitation repo pulls PyPI metadata plus repo CITATION files to produce the Markdown block that Software Citation Station expects. Run it on your package, fix the FIXMEs, submit the snippet.
-
Updated tutorial on The Littlest JupyterHub on Jetstream
I'm excited to share that I've contributed an updated tutorial on how to deploy "The Littlest JupyterHub" (TLJH) on a Jetstream instance!
-
Tampermonkey script for Audible filtering
This Tampermonkey script helps filter Audible search results by hiding items that do not meet certain criteria. Specifically, it hides audiobooks with a rating less than 4.0 stars or with fewer than 500 reviews.
-
Running Nextflow on Expanse with Seqera
This tutorial will guide you through setting up Nextflow on Expanse using the Seqera platform. Nextflow is a powerful and flexible workflow management system that enables scalable and reproducible scientific workflows.