High Performance Computing & AI
Practical notes on Python, JupyterHub, Kubernetes and AI for science — from the San Diego Supercomputer Center.
-
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.
-
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.
-
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 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.
-
Convenience script for system & CLI updates
I use a simple bash alias to keep my environment in sync with one command. It handles standard system updates and refreshes my core AI tools—the Gemini and Codex CLIs.
-
Voice chatbot with Gemini Live
In this tutorial, we will explore how to create a voice-enabled chatbot using the new "Live" capabilities in Google AI Studio. Our goal is to build an assistant that can interactively help users fill out a Google Form through natural conversation.
-
AI chatbot as a frontend for a Google Form
Using a chatbot as a frontend for a Google Form can significantly improve user engagement and completion rates. Instead of a static form, users interact with a conversational interface that guides them through the questions, validates their input, and submits the data seamlessly.
-
Read DICOM (Tomography) files with 3D Slicer
If you receive a USB drive with tomography data (for example from a dentist), the files often come in DICOM format (extension .dcm).
-
Cosmosage: A specialized AI assistant for cosmology
Cosmosage is an AI assistant specialized in cosmology. It has been trained on thousands of cosmology papers and textbooks, starting from a large-language model base and subsequently fine-tuned on cosmology-specific data and synthetic Q&A pairs.
-
Cosmosage Unshelver
This post describes the Cosmosage Unshelver. You can find the project on GitHub: zonca/openstackunshelverwebapp. There is an active pull request for further development. You can find the branch I am working on here: cosmosageunshelver branch.