High Performance Computing & AI
Practical notes on Python, JupyterHub, Kubernetes and AI for science — from the San Diego Supercomputer Center.
-
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.
-
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.
-
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.
-
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.