High Performance Computing & AI
Practical notes on Python, JupyterHub, Kubernetes and AI for science — from the San Diego Supercomputer Center.
-
Why 3 pixels per beam? The mathematics of HEALPix resolution matching
Exploring why the Planck convention uses FWHM = 3 x pixel size for harmonic-space map downgrading, with equations from the literature and simulated demonstrations.
-
PySM 3.4.4 released with new SZ models and NumPy 2 support
PySM 3.4.4 is now available both on PyPI and on conda-forge. This release is mostly about extending the Sunyaev-Zeldovich model suite and making sure PySM works cleanly with NumPy 2.
-
Better way to export a Confluence page to Markdown
In a previous post, I wrote about Export a Confluence page to Markdown by copying and pasting into Google Docs. I've since found a better and much more powerful way using the confluence-cli tool.
-
Deploy a ChatGPT-like LLM on Jetstream with llama.cpp, tested on g3.medium
This is a tested follow-up and updated standalone version of Deploy a ChatGPT-like LLM on Jetstream with llama.cpp. If you want the original September 2025 version for reference, see: Deploy a ChatGPT-like LLM on Jetstream with llama.cpp
-
Keep Jupyter notebooks clean in git, but rendered with outputs in Sphinx
A small Sphinx extension that fetches an executed notebook from a Gist or raw URL, verifies the sources still match, and replaces the local notebook during the docs build.
-
How to pronounce Andrea in Italian
The Italian pronunciation of Andrea is: ahn-DREH-ah
-
Auto-build JupyterHub images with repo2docker and GitHub Actions
This guide explains how to automatically build a custom, JupyterHub-ready Docker image directly from GitHub using repo2docker, without having to write a complicated Dockerfile from scratch.
-
Deploy nbgrader on Jetstream with a Manila exchange disk (Kubernetes)
This tutorial shows how to deploy nbgrader on Jetstream Kubernetes using a shared Manila disk mounted on all JupyterHub user pods.
-
Connect Gmail (and more) to Codex CLI and Gemini CLI with Smithery (MCP)
Use Smithery to connect Gmail, Google Sheets, and Calendar to terminal AI assistants via MCP, with OAuth handled in the browser.
-
Create a Manila share in Exosphere and mount it for all JupyterHub users
This tutorial shows how to create a Manila share in Exosphere and mount it into all JupyterHub single-user pods on Jetstream 2. This provides a ReadWriteMany (RWX) shared filesystem suitable for shared datasets and tools.
-
Deploy nbgrader on Jetstream with ngshare (Kubernetes)
updated: Deploy ngshare on Jetstream with a Manila volume (Kubernetes). The Manila CephFS volume honors fsGroup on RWX claims, so ngshare works without the initContainer workaround described in the Troubleshooting section below.
-
Deploy a NFS server to share data between JupyterHub users on Jetstream
This is an updated version of my 2025 tutorial on deploying a NFS server to share data between JupyterHub users on Jetstream.
-
Configure NRP LLM with OpenCode and Crush
The National Research Platform (NRP) provides a free Large Language Model (LLM) service for researchers. This service allows you to access powerful models like GLM 4.7, Llama 3, and Qwen 3 via an OpenAI-compatible API.
-
Terminal-based AI assistant with GitHub for Education
GitHub offers to all academic people a free GitHub Pro account which allows you to use GitHub Copilot Pro, which includes access to the latest and most powerful models from OpenAI, Anthropic, and Google.
-
Setting up shared NFS home directories & shared data for JupyterHub on Kubernetes
This tutorial provides a walkthrough on how to set up a shared NFS server for JupyterHub users' home directories and shared data.