{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/hamel-dev/2024-12-13-nbsanity-share-notebooks-as-polished-web-pages-in-seconds/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "![Hamel Husain](https://hamel.dev/hamel_transparent.png)\n\nI’m a machine learning engineer with 20+ years of experience. I’ve worked at Airbnb and GitHub, including early LLM [research](https://arxiv.org/abs/1909.09436) used by OpenAI for [code understanding](https://openai.com/index/introducing-text-and-code-embeddings). I’ve also led and contributed to popular [open-source](https://hamel.dev/oss/opensource.html) machine-learning tools.\n\nI’m currently working to bring data science back to AI: helping teams debug, analyze, and measure their systems. I call this “evals,” and it’s the focus of my teaching and writing.\n\n## 🎓 Learn With Me\n\nI co-teach **[AI Evals for Engineers and PMs](https://maven.com/parlance-labs/evals)**, with over 5,000 students from 500+ companies (including OpenAI, Anthropic, and Google). Check the page for upcoming cohorts.\n\nFor answers to common questions about evals, read the [AI Evals Guide](https://hamel.dev/blog/posts/evals-faq/).\n\n* * *\n\nI often share my experience building AI products. Below is a selection of my long-form writing.\n\n| Date     | Title                                                                                                                                                                                                                                                      |\n| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| 9/30/26  | [Claude’s new auto eval tool](https://hamel.dev/blog/posts/claude-auto-evals/index.html)                                                                                                                                                                  |\n| 9/18/26  | [AI Evals: Everything You Need to Know](https://hamel.dev/blog/posts/evals-faq/index.html)                                                                                                                                                                |\n| 8/12/26  | [AI Product Engineering Notes](https://hamel.dev/notes/llm/ai-product-engineering/index.html)                                                                                                                                                             |\n| 7/11/26  | [Do Automated Evals Work?](https://parlance-labs.com/blog/posts/auto-evals.html)                                                                                                                                                                          |\n| 6/29/26  | [“It’s Hard to Eval” Is a Product Smell](https://hamel.dev/blog/posts/eval-smell/index.html)                                                                                                                                                              |\n| 3/26/26  | [The Revenge of the Data Scientist](https://hamel.dev/blog/posts/revenge/index.html)                                                                                                                                                                      |\n| 3/2/26   | [Evals Skills for Coding Agents](https://hamel.dev/blog/posts/evals-skills/index.html)                                                                                                                                                                    |\n| 1/18/26  | [Why I Stopped Using nbdev](https://hamel.dev/blog/posts/ai-stack/index.html)                                                                                                                                                                             |\n| 10/1/25  | [Selecting The Right AI Evals Tool](https://hamel.dev/blog/posts/eval-tools/index.html)                                                                                                                                                                   |\n| 7/11/25  | [Stop Saying RAG Is Dead](https://hamel.dev/notes/llm/rag/not_dead.html)                                                                                                                                                                                  |\n| 6/23/25  | [Inspect AI, An OSS Python Library For LLM Evals](https://hamel.dev/notes/llm/evals/inspect.html)                                                                                                                                                         |\n| 3/24/25  | [A Field Guide to Rapidly Improving AI Products](https://hamel.dev/blog/posts/field-guide/index.html)                                                                                                                                                     |\n| 1/19/25  | [Thoughts On A Month With Devin](https://www.answer.ai/posts/2025-01-08-devin.html)                                                                                                                                                                       |\n| 12/13/24 | [nbsanity - Share Notebooks as Polished Web Pages in Seconds](https://www.answer.ai/posts/2024-12-13-nbsanity.html)                                                                                                                                       |\n| 11/30/24 | [Building an Audience Through Technical Writing: Strategies and Mistakes](https://hamel.dev/blog/posts/audience/index.html)                                                                                                                               |\n| 10/29/24 | [Using LLM-as-a-Judge For Evaluation: A Complete Guide](https://hamel.dev/blog/posts/llm-judge/index.html)                                                                                                                                                |\n| 10/10/24 | [Concurrency Foundations For FastHTML](https://hamel.dev/notes/fasthtml/concurrency.html)                                                                                                                                                                 |\n| 7/29/24  | [An Open Course on LLMs, Led by Practitioners](https://hamel.dev/blog/posts/course/index.html)                                                                                                                                                            |\n| 6/1/24   | [What We’ve Learned From A Year of Building with LLMs](https://applied-llms.org/)                                                                                                                                                                         |\n| 4/12/24  | [Debugging AI With Adversarial Validation](https://hamel.dev/blog/posts/drift/index.html)                                                                                                                                                                 |\n| 3/29/24  | [Your AI Product Needs Evals](https://hamel.dev/blog/posts/evals/index.html)                                                                                                                                                                              |\n| 3/27/24  | [Is Fine-Tuning Still Valuable?](https://hamel.dev/blog/posts/fine_tuning_valuable.html)                                                                                                                                                                  |\n| 2/14/24  | [Fuck You, Show Me The Prompt.](https://hamel.dev/blog/posts/prompt/index.html)                                                                                                                                                                           |\n| 1/11/24  | [How To Debug Axolotl](https://hamel.dev/blog/posts/axolotl/index.html)                                                                                                                                                                                   |\n| 1/9/24   | [Dokku: my favorite personal serverless platform](https://hamel.dev/blog/posts/dokku/index.html)                                                                                                                                                          |\n| 12/17/23 | [Tokenization Gotchas](https://hamel.dev/notes/llm/finetuning/tokenizer_gotchas.html)                                                                                                                                                                     |\n| 11/15/23 | [Tools for curating LLM Data](https://hamel.dev/notes/llm/finetuning/data_cleaning.html)                                                                                                                                                                  |\n| 10/28/23 | [vLLM & Large Models](https://hamel.dev/notes/llm/inference/big_inference.html)                                                                                                                                                                           |\n| 10/15/23 | [Optimizing LLM latency](https://hamel.dev/notes/llm/inference/inference.html)                                                                                                                                                                            |\n| 5/30/23  | [On commercializing nbdev](https://hamel.dev/blog/posts/nbdev/index.html)                                                                                                                                                                                 |\n| 1/16/23  | [Why Should ML Engineers Learn Kubernetes?](https://hamel.dev/blog/posts/k8s/index.html)                                                                                                                                                                  |\n| 7/28/22  | [nbdev + Quarto: A new secret weapon for productivity](https://www.fast.ai/2022/07/28/nbdev-v2/)                                                                                                                                                          |\n| 2/9/22   | [Notebooks in production with Metaflow](https://outerbounds.com/blog/notebooks-in-production-with-metaflow/)                                                                                                                                              |\n| 12/18/20 | [ghapi, a new third-party Python client for the GitHub API](https://github.blog/2020-12-18-learn-about-ghapi-a-new-third-party-python-client-for-the-github-api/)                                                                                         |\n| 11/20/20 | [Nbdev: A literate programming environment that democratizes software engineering best practices](https://github.blog/2020-11-20-nbdev-a-literate-programming-environment-that-democratizes-software-engineering-best-practices/)                         |\n| 9/1/20   | [fastcore: An Underrated Python Library](https://fastpages.fast.ai/fastcore)                                                                                                                                                                              |\n| 9/1/20   | [Data Science Meets Devops: MLOps with Jupyter, Git, & Kubernetes](https://blog.kubeflow.org/mlops/)                                                                                                                                                      |\n| 3/6/20   | [GitHub Actions: Providing Data Scientists With New Superpowers.](https://fastpages.fast.ai/actions/markdown/2020/03/06/fastpages-actions.html)                                                                                                           |\n| 2/21/20  | [Introducing fastpages, An easy to use blogging platform with extra features for Jupyter Notebooks.](https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html)                                                                   |\n| 2/5/20   | [Python Concurrency: The Tricky Bits](https://python.hamel.dev/concurrency/)                                                                                                                                                                              |\n| 9/20/19  | [CodeSearchNet Challenge: Evaluating the State of Semantic Code Search](https://arxiv.org/abs/1909.09436)                                                                                                                                                 |\n| 4/10/19  | [How to Automate Tasks on GitHub With Machine Learning for Fun and Profit](https://medium.com/%40hamelhusain/mlapp-419f90e8f007?sk=760e18e8f007)                                                                                                          |\n| 5/29/18  | [How To Create Natural Language Semantic Search for Arbitrary Objects With Deep Learning](https://medium.com/@hamelhusain/semantic-code-search-3cd6d244a39c)                                                                                              |\n| 1/18/18  | [How To Create Magical Data Products Using Sequence-to-Sequence Models](https://medium.com/data-science/how-to-create-data-products-that-are-magical-using-sequence-to-sequence-models-703f86a231f8)                                                      |\n| 12/16/17 | [How Docker Can Help You Become A More Effective Data Scientist](https://medium.com/towards-data-science/how-docker-can-help-you-become-a-more-effective-data-scientist-7fc048ef91d5)                                                                     |\n| 5/10/17  | [Automated Machine Learning — A Paradigm Shift That Accelerates Data Scientist Productivity @ Airbnb](https://medium.com/airbnb-engineering/automated-machine-learning-a-paradigm-shift-that-accelerates-data-scientist-productivity-airbnb-f1f8a10d61f8) |\n\nNo matching items\n\n## 📬 Follow Me\n\nThe best way to follow my activity is [X (Twitter)](https://twitter.com/HamelHusain).\n",
  "authors": [],
  "captured_at": "2026-09-27T19:29:15.293681927+00:00",
  "category": "programming",
  "content_html": "<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://hamel.dev/hamel_transparent.png\" alt=\"Hamel Husain\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>I’m a machine learning engineer with 20+ years of experience. I’ve worked at Airbnb and GitHub, including early LLM <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://arxiv.org/abs/1909.09436\">research</a> used by OpenAI for <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://openai.com/index/introducing-text-and-code-embeddings\">code understanding</a>. I’ve also led and contributed to popular <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/oss/opensource.html\">open-source</a> machine-learning tools.</p>\n<p>I’m currently working to bring data science back to AI: helping teams debug, analyze, and measure their systems. I call this “evals,” and it’s the focus of my teaching and writing.</p>\n<h2>🎓 Learn With Me</h2>\n<p>I co-teach <strong><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://maven.com/parlance-labs/evals\">AI Evals for Engineers and PMs</a></strong>, with over 5,000 students from 500+ companies (including OpenAI, Anthropic, and Google). Check the page for upcoming cohorts.</p>\n<p>For answers to common questions about evals, read the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/evals-faq/\">AI Evals Guide</a>.</p>\n<hr />\n<p>I often share my experience building AI products. Below is a selection of my long-form writing.</p>\n<table>\n<thead>\n<tr>\n<th>Date</th>\n<th>Title</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>9/30/26</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/claude-auto-evals/index.html\">Claude’s new auto eval tool</a></td>\n</tr>\n<tr>\n<td>9/18/26</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/evals-faq/index.html\">AI Evals: Everything You Need to Know</a></td>\n</tr>\n<tr>\n<td>8/12/26</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/notes/llm/ai-product-engineering/index.html\">AI Product Engineering Notes</a></td>\n</tr>\n<tr>\n<td>7/11/26</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://parlance-labs.com/blog/posts/auto-evals.html\">Do Automated Evals Work?</a></td>\n</tr>\n<tr>\n<td>6/29/26</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/eval-smell/index.html\">“It’s Hard to Eval” Is a Product Smell</a></td>\n</tr>\n<tr>\n<td>3/26/26</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/revenge/index.html\">The Revenge of the Data Scientist</a></td>\n</tr>\n<tr>\n<td>3/2/26</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/evals-skills/index.html\">Evals Skills for Coding Agents</a></td>\n</tr>\n<tr>\n<td>1/18/26</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/ai-stack/index.html\">Why I Stopped Using nbdev</a></td>\n</tr>\n<tr>\n<td>10/1/25</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/eval-tools/index.html\">Selecting The Right AI Evals Tool</a></td>\n</tr>\n<tr>\n<td>7/11/25</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/notes/llm/rag/not_dead.html\">Stop Saying RAG Is Dead</a></td>\n</tr>\n<tr>\n<td>6/23/25</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/notes/llm/evals/inspect.html\">Inspect AI, An OSS Python Library For LLM Evals</a></td>\n</tr>\n<tr>\n<td>3/24/25</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/field-guide/index.html\">A Field Guide to Rapidly Improving AI Products</a></td>\n</tr>\n<tr>\n<td>1/19/25</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.answer.ai/posts/2025-01-08-devin.html\">Thoughts On A Month With Devin</a></td>\n</tr>\n<tr>\n<td>12/13/24</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.answer.ai/posts/2024-12-13-nbsanity.html\">nbsanity - Share Notebooks as Polished Web Pages in Seconds</a></td>\n</tr>\n<tr>\n<td>11/30/24</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/audience/index.html\">Building an Audience Through Technical Writing: Strategies and Mistakes</a></td>\n</tr>\n<tr>\n<td>10/29/24</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/llm-judge/index.html\">Using LLM-as-a-Judge For Evaluation: A Complete Guide</a></td>\n</tr>\n<tr>\n<td>10/10/24</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/notes/fasthtml/concurrency.html\">Concurrency Foundations For FastHTML</a></td>\n</tr>\n<tr>\n<td>7/29/24</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/course/index.html\">An Open Course on LLMs, Led by Practitioners</a></td>\n</tr>\n<tr>\n<td>6/1/24</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://applied-llms.org/\">What We’ve Learned From A Year of Building with LLMs</a></td>\n</tr>\n<tr>\n<td>4/12/24</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/drift/index.html\">Debugging AI With Adversarial Validation</a></td>\n</tr>\n<tr>\n<td>3/29/24</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/evals/index.html\">Your AI Product Needs Evals</a></td>\n</tr>\n<tr>\n<td>3/27/24</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/fine_tuning_valuable.html\">Is Fine-Tuning Still Valuable?</a></td>\n</tr>\n<tr>\n<td>2/14/24</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/prompt/index.html\">Fuck You, Show Me The Prompt.</a></td>\n</tr>\n<tr>\n<td>1/11/24</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/axolotl/index.html\">How To Debug Axolotl</a></td>\n</tr>\n<tr>\n<td>1/9/24</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/dokku/index.html\">Dokku: my favorite personal serverless platform</a></td>\n</tr>\n<tr>\n<td>12/17/23</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/notes/llm/finetuning/tokenizer_gotchas.html\">Tokenization Gotchas</a></td>\n</tr>\n<tr>\n<td>11/15/23</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/notes/llm/finetuning/data_cleaning.html\">Tools for curating LLM Data</a></td>\n</tr>\n<tr>\n<td>10/28/23</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/notes/llm/inference/big_inference.html\">vLLM &amp; Large Models</a></td>\n</tr>\n<tr>\n<td>10/15/23</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/notes/llm/inference/inference.html\">Optimizing LLM latency</a></td>\n</tr>\n<tr>\n<td>5/30/23</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/nbdev/index.html\">On commercializing nbdev</a></td>\n</tr>\n<tr>\n<td>1/16/23</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hamel.dev/blog/posts/k8s/index.html\">Why Should ML Engineers Learn Kubernetes?</a></td>\n</tr>\n<tr>\n<td>7/28/22</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.fast.ai/2022/07/28/nbdev-v2/\">nbdev + Quarto: A new secret weapon for productivity</a></td>\n</tr>\n<tr>\n<td>2/9/22</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://outerbounds.com/blog/notebooks-in-production-with-metaflow/\">Notebooks in production with Metaflow</a></td>\n</tr>\n<tr>\n<td>12/18/20</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.blog/2020-12-18-learn-about-ghapi-a-new-third-party-python-client-for-the-github-api/\">ghapi, a new third-party Python client for the GitHub API</a></td>\n</tr>\n<tr>\n<td>11/20/20</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.blog/2020-11-20-nbdev-a-literate-programming-environment-that-democratizes-software-engineering-best-practices/\">Nbdev: A literate programming environment that democratizes software engineering best practices</a></td>\n</tr>\n<tr>\n<td>9/1/20</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://fastpages.fast.ai/fastcore\">fastcore: An Underrated Python Library</a></td>\n</tr>\n<tr>\n<td>9/1/20</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://blog.kubeflow.org/mlops/\">Data Science Meets Devops: MLOps with Jupyter, Git, &amp; Kubernetes</a></td>\n</tr>\n<tr>\n<td>3/6/20</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://fastpages.fast.ai/actions/markdown/2020/03/06/fastpages-actions.html\">GitHub Actions: Providing Data Scientists With New Superpowers.</a></td>\n</tr>\n<tr>\n<td>2/21/20</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html\">Introducing fastpages, An easy to use blogging platform with extra features for Jupyter Notebooks.</a></td>\n</tr>\n<tr>\n<td>2/5/20</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://python.hamel.dev/concurrency/\">Python Concurrency: The Tricky Bits</a></td>\n</tr>\n<tr>\n<td>9/20/19</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://arxiv.org/abs/1909.09436\">CodeSearchNet Challenge: Evaluating the State of Semantic Code Search</a></td>\n</tr>\n<tr>\n<td>4/10/19</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://medium.com/%40hamelhusain/mlapp-419f90e8f007?sk=760e18e8f007\">How to Automate Tasks on GitHub With Machine Learning for Fun and Profit</a></td>\n</tr>\n<tr>\n<td>5/29/18</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://medium.com/@hamelhusain/semantic-code-search-3cd6d244a39c\">How To Create Natural Language Semantic Search for Arbitrary Objects With Deep Learning</a></td>\n</tr>\n<tr>\n<td>1/18/18</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://medium.com/data-science/how-to-create-data-products-that-are-magical-using-sequence-to-sequence-models-703f86a231f8\">How To Create Magical Data Products Using Sequence-to-Sequence Models</a></td>\n</tr>\n<tr>\n<td>12/16/17</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://medium.com/towards-data-science/how-docker-can-help-you-become-a-more-effective-data-scientist-7fc048ef91d5\">How Docker Can Help You Become A More Effective Data Scientist</a></td>\n</tr>\n<tr>\n<td>5/10/17</td>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://medium.com/airbnb-engineering/automated-machine-learning-a-paradigm-shift-that-accelerates-data-scientist-productivity-airbnb-f1f8a10d61f8\">Automated Machine Learning — A Paradigm Shift That Accelerates Data Scientist Productivity @ Airbnb</a></td>\n</tr>\n</tbody>\n</table>\n<p>No matching items</p>\n<h2>📬 Follow Me</h2>\n<p>The best way to follow my activity is <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://twitter.com/HamelHusain\">X (Twitter)</a>.</p>\n",
  "content_markdown": "![Hamel Husain](https://hamel.dev/hamel_transparent.png)\n\nI’m a machine learning engineer with 20+ years of experience. I’ve worked at Airbnb and GitHub, including early LLM [research](https://arxiv.org/abs/1909.09436) used by OpenAI for [code understanding](https://openai.com/index/introducing-text-and-code-embeddings). I’ve also led and contributed to popular [open-source](https://hamel.dev/oss/opensource.html) machine-learning tools.\n\nI’m currently working to bring data science back to AI: helping teams debug, analyze, and measure their systems. I call this “evals,” and it’s the focus of my teaching and writing.\n\n## 🎓 Learn With Me\n\nI co-teach **[AI Evals for Engineers and PMs](https://maven.com/parlance-labs/evals)**, with over 5,000 students from 500+ companies (including OpenAI, Anthropic, and Google). Check the page for upcoming cohorts.\n\nFor answers to common questions about evals, read the [AI Evals Guide](https://hamel.dev/blog/posts/evals-faq/).\n\n* * *\n\nI often share my experience building AI products. Below is a selection of my long-form writing.\n\n| Date     | Title                                                                                                                                                                                                                                                      |\n| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| 9/30/26  | [Claude’s new auto eval tool](https://hamel.dev/blog/posts/claude-auto-evals/index.html)                                                                                                                                                                  |\n| 9/18/26  | [AI Evals: Everything You Need to Know](https://hamel.dev/blog/posts/evals-faq/index.html)                                                                                                                                                                |\n| 8/12/26  | [AI Product Engineering Notes](https://hamel.dev/notes/llm/ai-product-engineering/index.html)                                                                                                                                                             |\n| 7/11/26  | [Do Automated Evals Work?](https://parlance-labs.com/blog/posts/auto-evals.html)                                                                                                                                                                          |\n| 6/29/26  | [“It’s Hard to Eval” Is a Product Smell](https://hamel.dev/blog/posts/eval-smell/index.html)                                                                                                                                                              |\n| 3/26/26  | [The Revenge of the Data Scientist](https://hamel.dev/blog/posts/revenge/index.html)                                                                                                                                                                      |\n| 3/2/26   | [Evals Skills for Coding Agents](https://hamel.dev/blog/posts/evals-skills/index.html)                                                                                                                                                                    |\n| 1/18/26  | [Why I Stopped Using nbdev](https://hamel.dev/blog/posts/ai-stack/index.html)                                                                                                                                                                             |\n| 10/1/25  | [Selecting The Right AI Evals Tool](https://hamel.dev/blog/posts/eval-tools/index.html)                                                                                                                                                                   |\n| 7/11/25  | [Stop Saying RAG Is Dead](https://hamel.dev/notes/llm/rag/not_dead.html)                                                                                                                                                                                  |\n| 6/23/25  | [Inspect AI, An OSS Python Library For LLM Evals](https://hamel.dev/notes/llm/evals/inspect.html)                                                                                                                                                         |\n| 3/24/25  | [A Field Guide to Rapidly Improving AI Products](https://hamel.dev/blog/posts/field-guide/index.html)                                                                                                                                                     |\n| 1/19/25  | [Thoughts On A Month With Devin](https://www.answer.ai/posts/2025-01-08-devin.html)                                                                                                                                                                       |\n| 12/13/24 | [nbsanity - Share Notebooks as Polished Web Pages in Seconds](https://www.answer.ai/posts/2024-12-13-nbsanity.html)                                                                                                                                       |\n| 11/30/24 | [Building an Audience Through Technical Writing: Strategies and Mistakes](https://hamel.dev/blog/posts/audience/index.html)                                                                                                                               |\n| 10/29/24 | [Using LLM-as-a-Judge For Evaluation: A Complete Guide](https://hamel.dev/blog/posts/llm-judge/index.html)                                                                                                                                                |\n| 10/10/24 | [Concurrency Foundations For FastHTML](https://hamel.dev/notes/fasthtml/concurrency.html)                                                                                                                                                                 |\n| 7/29/24  | [An Open Course on LLMs, Led by Practitioners](https://hamel.dev/blog/posts/course/index.html)                                                                                                                                                            |\n| 6/1/24   | [What We’ve Learned From A Year of Building with LLMs](https://applied-llms.org/)                                                                                                                                                                         |\n| 4/12/24  | [Debugging AI With Adversarial Validation](https://hamel.dev/blog/posts/drift/index.html)                                                                                                                                                                 |\n| 3/29/24  | [Your AI Product Needs Evals](https://hamel.dev/blog/posts/evals/index.html)                                                                                                                                                                              |\n| 3/27/24  | [Is Fine-Tuning Still Valuable?](https://hamel.dev/blog/posts/fine_tuning_valuable.html)                                                                                                                                                                  |\n| 2/14/24  | [Fuck You, Show Me The Prompt.](https://hamel.dev/blog/posts/prompt/index.html)                                                                                                                                                                           |\n| 1/11/24  | [How To Debug Axolotl](https://hamel.dev/blog/posts/axolotl/index.html)                                                                                                                                                                                   |\n| 1/9/24   | [Dokku: my favorite personal serverless platform](https://hamel.dev/blog/posts/dokku/index.html)                                                                                                                                                          |\n| 12/17/23 | [Tokenization Gotchas](https://hamel.dev/notes/llm/finetuning/tokenizer_gotchas.html)                                                                                                                                                                     |\n| 11/15/23 | [Tools for curating LLM Data](https://hamel.dev/notes/llm/finetuning/data_cleaning.html)                                                                                                                                                                  |\n| 10/28/23 | [vLLM & Large Models](https://hamel.dev/notes/llm/inference/big_inference.html)                                                                                                                                                                           |\n| 10/15/23 | [Optimizing LLM latency](https://hamel.dev/notes/llm/inference/inference.html)                                                                                                                                                                            |\n| 5/30/23  | [On commercializing nbdev](https://hamel.dev/blog/posts/nbdev/index.html)                                                                                                                                                                                 |\n| 1/16/23  | [Why Should ML Engineers Learn Kubernetes?](https://hamel.dev/blog/posts/k8s/index.html)                                                                                                                                                                  |\n| 7/28/22  | [nbdev + Quarto: A new secret weapon for productivity](https://www.fast.ai/2022/07/28/nbdev-v2/)                                                                                                                                                          |\n| 2/9/22   | [Notebooks in production with Metaflow](https://outerbounds.com/blog/notebooks-in-production-with-metaflow/)                                                                                                                                              |\n| 12/18/20 | [ghapi, a new third-party Python client for the GitHub API](https://github.blog/2020-12-18-learn-about-ghapi-a-new-third-party-python-client-for-the-github-api/)                                                                                         |\n| 11/20/20 | [Nbdev: A literate programming environment that democratizes software engineering best practices](https://github.blog/2020-11-20-nbdev-a-literate-programming-environment-that-democratizes-software-engineering-best-practices/)                         |\n| 9/1/20   | [fastcore: An Underrated Python Library](https://fastpages.fast.ai/fastcore)                                                                                                                                                                              |\n| 9/1/20   | [Data Science Meets Devops: MLOps with Jupyter, Git, & Kubernetes](https://blog.kubeflow.org/mlops/)                                                                                                                                                      |\n| 3/6/20   | [GitHub Actions: Providing Data Scientists With New Superpowers.](https://fastpages.fast.ai/actions/markdown/2020/03/06/fastpages-actions.html)                                                                                                           |\n| 2/21/20  | [Introducing fastpages, An easy to use blogging platform with extra features for Jupyter Notebooks.](https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html)                                                                   |\n| 2/5/20   | [Python Concurrency: The Tricky Bits](https://python.hamel.dev/concurrency/)                                                                                                                                                                              |\n| 9/20/19  | [CodeSearchNet Challenge: Evaluating the State of Semantic Code Search](https://arxiv.org/abs/1909.09436)                                                                                                                                                 |\n| 4/10/19  | [How to Automate Tasks on GitHub With Machine Learning for Fun and Profit](https://medium.com/%40hamelhusain/mlapp-419f90e8f007?sk=760e18e8f007)                                                                                                          |\n| 5/29/18  | [How To Create Natural Language Semantic Search for Arbitrary Objects With Deep Learning](https://medium.com/@hamelhusain/semantic-code-search-3cd6d244a39c)                                                                                              |\n| 1/18/18  | [How To Create Magical Data Products Using Sequence-to-Sequence Models](https://medium.com/data-science/how-to-create-data-products-that-are-magical-using-sequence-to-sequence-models-703f86a231f8)                                                      |\n| 12/16/17 | [How Docker Can Help You Become A More Effective Data Scientist](https://medium.com/towards-data-science/how-docker-can-help-you-become-a-more-effective-data-scientist-7fc048ef91d5)                                                                     |\n| 5/10/17  | [Automated Machine Learning — A Paradigm Shift That Accelerates Data Scientist Productivity @ Airbnb](https://medium.com/airbnb-engineering/automated-machine-learning-a-paradigm-shift-that-accelerates-data-scientist-productivity-airbnb-f1f8a10d61f8) |\n\nNo matching items\n\n## 📬 Follow Me\n\nThe best way to follow my activity is [X (Twitter)](https://twitter.com/HamelHusain).\n",
  "dateCreated": "2026-10-18T23:27:08.867657739+00:00",
  "date_created": "2024-12-13T08:00:00+00:00",
  "date_modified": "2024-12-13T08:00:00+00:00",
  "date_published": "2024-12-13T08:00:00+00:00",
  "description": "Transform your GitHub Jupyter notebooks into beautiful, readable web pages with a single URL change. No setup required.",
  "external_url": "https://hamel.dev/",
  "git": {
    "commit": "ebb0941c5c06a2ab2377342d607535262a3e969e",
    "path": "items/hamel-dev/2024/12/2024-12-13-nbsanity-share-notebooks-as-polished-web-pages-in-seconds.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/ebb0941c5c06a2ab2377342d607535262a3e969e/items/hamel-dev/2024/12/2024-12-13-nbsanity-share-notebooks-as-polished-web-pages-in-seconds.md"
  },
  "id": "urn:aggr:item:d5032e4ab558b0134fef0cef3e328439965e089b",
  "isBasedOn": {
    "@id": "https://hamel.dev/"
  },
  "mainEntity": {
    "@id": "https://hamel.dev/",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/hamel-dev/2024-12-13-nbsanity-share-notebooks-as-polished-web-pages-in-seconds/#webpage"
    },
    "dateModified": "2024-12-13T08:00:00+00:00",
    "datePublished": "2024-12-13T08:00:00+00:00",
    "headline": "nbsanity - Share Notebooks as Polished Web Pages in Seconds",
    "image": {
      "@type": "ImageObject",
      "caption": null,
      "height": 90,
      "url": "https://hamel.dev/quarto.png",
      "width": 160
    },
    "timeRequired": "PT3M",
    "url": "https://hamel.dev/",
    "wordCount": 609
  },
  "name": "Archived snapshot: nbsanity - Share Notebooks as Polished Web Pages in Seconds",
  "preview": {
    "alt": null,
    "color": null,
    "height": 90,
    "placeholder": {
      "data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=",
      "hash": ""
    },
    "url": "https://hamel.dev/quarto.png",
    "width": 160
  },
  "reading_minutes": 3,
  "replicated_at": "2026-10-18T23:27:08.867657739+00:00",
  "source": "hamel-dev",
  "source_name": "Hamel's Blog",
  "summary": "Transform your GitHub Jupyter notebooks into beautiful, readable web pages with a single URL change. No setup required.",
  "tags": [
    "jupyter"
  ],
  "temporalCoverage": "2026-09-27T19:29:15.293681927+00:00",
  "title": "nbsanity - Share Notebooks as Polished Web Pages in Seconds",
  "url": "https://aggr.aymericbeaumet.com/items/hamel-dev/2024-12-13-nbsanity-share-notebooks-as-polished-web-pages-in-seconds/",
  "word_count": 609
}