Skip to article frontmatterSkip to article content

Hi, I’m Chris Holdgraf 👋

2i2c
Project Jupyter
Profile picture of Dr Chris Holdgraf
A bit about me...
💼 Executive Director @ 2i2c
☁️ Former Cloud DataHub team @ Berkeley CDSS
🌕 Distinguished Contributor @ The Jupyter Project
🧠 PhD graduate in neuroscience @ UC Berkeley

I also work extensively with Project Jupyter, particularly the Binder Project and Jupyter Book.

Recent blog posts

The slow boring of hard boards in open source

Max Weber famously wrote that politics is "a strong and slow boring of hard boards." In [Why it took 4 years to get a lock files specification](https://snarky.ca/why-it-took-4-years-to-get-a-lock-files-specification/), Brett Cannon demonstrates how the same principle applies to technical coordination in open source. Python recently adopted [PEP 751](https://peps.python.org/pep-0751/) for lockfile specification. Doing so

Date: October 21, 2025 | Author: Chris Holdgraf
My system for beating jet lag

I travel internationally a lot, which means I deal with a lot of jet lag. This post is a quick summary of a system I've found helpful, based on [this paper](https://www.frontiersin.org/articles/10.3389/fphys.2019.00927/full). The basic idea is to shift your body's internal clock by timing your exposure to light, exercise, and melatonin around

Date: October 18, 2025 | Author: Chris Holdgraf
Why open source foundations try to fund systems, not development

This is a brief reflection on something that I've been hearing consistently from the Linux Foundation and its member projects as part of serving on the [Board of the Jupyter Foundation](https://jupyterfoundation.org). Here's a point that originally surprised me when I heard it: > Most foundations within the Linux Foundation network recommend

Date: May 31, 2025 | Author: Chris Holdgraf
Jupyter can align the needs of its community and its foundation by enabling contribution

This week was my first time attending the [Linux Foundation Member Summit](https://events.linuxfoundation.org/lf-member-summit/). This is an annual meeting for all of the Linux Foundation member organizations and projects. I joined because of my new role [on the Jupyter Executive Council](./jec.md), and so I tried to go into this meeting with the

Date: March 22, 2025 | Author: Chris Holdgraf
The relationship between the Jupyter Executive Council, Software Steering Council, and Foundation

This is a question that I've been asked many times now that I'm serving on the JEC and the JF. I'm writing up a quick response so that I have something to refer back to and align my own thinking on. **How most Linux Foundation projects seem to be structured**. Linux

Date: March 02, 2025 | Author: Chris Holdgraf
Ways the Jupyter Foundation could support open source projects

The Jupyter Foundation has a pot of money and it aims to use that funding quickly to support the Jupyter Project. But what should it use the funding _for_? There are many things to do, and not enough time or money to try everything. This is a brief brainstorm and

Date: February 26, 2025 | Author: Chris Holdgraf
Why I'm running for the Jupyter Executive Council

This year, I decided to nominate myself for the [Jupyter Executive Council](https://jupyter.org/governance/executive_council.html). This is a brief post explaining my rationale for doing so, the kind of service I'd hope to provide the project, and where I imagine the project moving. The [Jupyter Executive Council](https://jupyter.org/governance/executive_council.html) is the highest governing body within the

Date: January 14, 2025 | Author: Chris Holdgraf
How I'm trying to use BlueSky without getting burned again

Some quick thoughts on moving from Twitter/X to BlueSky and how I'll try to use social media after being burned once by Twitter.

Date: November 22, 2024 | Author: Chris Holdgraf
Better blog lists with the MyST AST

On my journey to learn more about writing with [the new MyST engine](https:///mystmd.org), I built upon [my recent update to my blog infrastructure](./programmatic-myst-with-jupyter.md) and made some improvements to my blog post list. Here's what it looks like now: ````{note} Click here to see how it looks now :class: dropdown ```{postlist} :number: 3 ``` ```` Here's a quick rundown

Date: November 09, 2024 | Author: Chris Holdgraf
Generate MyST with Jupyter and insert it into content programmatically

While I've been [converting my blog to use the new MyST engine](./mystmd-with-the-blog.md), I discovered a useful MyST feature. It's not yet possible to [natively parse Jupyter Markdown outputs as MyST](https://github.com/jupyter-book/mystmd/issues/1026) but there's a workaround if you don't mind generating a temporary file. The trick is to _write to a temporary file_

Date: November 04, 2024 | Author: Chris Holdgraf