High Performance Computing & AI
Practical notes on Python, JupyterHub, Kubernetes and AI for science — from the San Diego Supercomputer Center.
-
Copy a single Codex session to another machine
You might want to copy a Codex session to another machine to continue a conversation started on one device, such as moving from a laptop to a desktop or server.
-
Request access to AWS and Google Cloud resources via CloudBank for scientists
CloudBank provides a simplified way for scientists and educators to access commercial cloud resources, including Amazon Web Services (AWS) and Google Cloud. Access is free, but requires writing a proposal to justify the requested resources.
-
Release of healpy 1.19.0
I am pleased to announce the release of healpy 1.19.0. This release includes a large number of fixes and improvements, many of which were made possible by adopting an "agentic" workflow. As detailed in my recent blog post, I have been using AI coding agents to help triage and fix issues, allowing us to close old bugs and improve the codebase significantly.
-
Healpy blm_gauss breaking change analysis
Analyzing the breaking change in healpy's blm_gauss function (1.18.1 to 1.19.0) and its impact on Gaussian beam coefficients.
-
Jupytext for AI agent Jupyter workflows
How using Jupytext with AI coding agents can simplify Jupyter Notebook development by avoiding JSON formatting issues.
-
The Aaron Price Fellows Program: Fostering community leaders
The Aaron Price Fellows Program is an initiative dedicated to preparing highly motivated and diverse public high school students from San Diego to become responsible, engaged, and caring members of their community.
-
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.