High Performance Computing & AI
Practical notes on Python, JupyterHub, Kubernetes and AI for science — from the San Diego Supercomputer Center.
-
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.
-
Auto-merge GitHub pull requests after GitHub Actions pass
Pull request auto-merge is a small feature that keeps teams from babysitting green builds. Once every required check is green, GitHub merges the PR for you—no extra clicks, no late-night merges. Here is how to get it running safely with GitHub Actions.
-
Manage calendar of a scientific collaboration using Google Groups
Managing a calendar for a large scientific collaboration can be challenging. Over the years, I have tried different approaches to solve this problem.
-
EZID DOI management with Python
This project offers Python scripts for interacting with the EZID API to create and verify Digital Object Identifiers (DOIs).
-
Running Nextflow on Expanse
This tutorial will guide you through setting up Nextflow on Expanse. Nextflow is a powerful and flexible workflow management system that enables scalable and reproducible scientific workflows.
-
Building Singularity containers with Conda environments from requirements.txt
This post introduces a method for building Singularity containers that include a Conda environment based on a requirements.txt file. This approach provides a reproducible and portable environment for any Python project.
-
PySM 3.4.3 Released
PySM version 3.4.3 is now live. Install it from PyPI or upgrade existing environments with pip install --upgrade pysm3. Full details are available in the GitHub release notes.
-
Deploy a ChatGPT-like LLM on Jetstream with llama.cpp
Tutorial last updated in December 2025 This is a crosspost of the official Jetstream documentation: Deploy a ChatGPT-like LLM service on Jetstream. I built a brand new version of that tutorial that swaps in llama.cpp for vLLM so we can run GGUF quantized models on Jetstream's GPUs without giving up speed or context length.
-
PySM methods paper published in ApJ
The Astrophysical Journal formally published our paper, Full-sky Models of Galactic Microwave Emission and Polarization at Sub-arcminute Scales for the Python Sky Model, on September 12, 2025. I wanted to capture the news here now that the issue is out, following up on my March note about the ArXiv submission.
-
Inspect SMTP sending through UCSD
When configuring email sending through UCSD, it can be surprisingly unclear which SMTP server to use. The official documentation mentions three options: smtp.ucsd.edu, smtp.gmail.com, and smtp.office365.com.