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

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
Re-building my blog with MySTMD

Wow it has been a long time since I've last-written here. It turns out that having two small children and a very demanding job means you don't have as much time for blogging. But that's a whole different blog post... I've decided to convert my blog to use the new [MyST

Date: November 01, 2024 | Author: Chris Holdgraf
A few random opportunities in AI for Social Good

Recently a few friends have reached out asking if I knew of any opportunities to work on AI-related things that also have some kind of pro-social tie-in. I think a lof people see AI as a technology with a lot of potential, but in an environment of companies that don't seem

Date: October 02, 2023 | Author: Chris Holdgraf
A Sphinx directive for social media embeds

:::{note} This probably doesn't work anymore I've since moved my blog to use [the MyST Document Engine](https://mystmd.org) so this example will no longer work on my personal blog. See [this permalink for the latest working version](https://github.com/choldgraf/choldgraf.github.io/blob/ae8ee9792c74aac72f46c645d19352abc439d572/blog/2023/social-directive.md). ::: I often want to link to social and other types of web-based media in my Sphinx

Date: February 15, 2023 | Author: Chris Holdgraf
Report from FOSDEM23: beautiful chaos in a conference

I recently attended [FOSDEM 2023](https://fosdem.org/2023/), my first FOSDEM! I had heard of the conference before, but hadn't really looked into it too much. Fortunately, after some urging from friends and social media, I took a deeper look and decided I should join to see what all the fuss was about. Here are a

Date: February 06, 2023 | Author: Chris Holdgraf
Bundle extensions with your Sphinx theme

Sphinx is great because it has a ton of useful extensions that let you grow its functionality. However, a downside of this is that users have to actually _learn about_ those extensions and activate them manually. It's not hard, but it's a non-trivial amount of discovery work. One way to solve this is

Date: January 19, 2023 | Author: Chris Holdgraf
Install dependencies from GitHub with `pyproject.toml` or `requirements.txt`

This is a short post to demonstrate how to install packages directly from GitHub with `pyprojects.toml` or `requirements.txt`, including custom branches and commits. It will focus on `pyprojects.toml` because this is newer and there's less information about it, but the general pattern holds for `requirements.txt` as well. In `pyproject.toml`, you can specify

Date: December 31, 2022 | Author: Chris Holdgraf