Blog

RSS Feed

Latest

Gribouille 0.5.0: Native Density, and Scales Keyed by Aesthetic

Gribouille 0.5.0 brings native kernel density estimation to Typst: densities, violins, two-dimensional densities, ridgelines, and a LOESS smoother, all computed in pure markup. It also rewrites the scale system so the per-aesthetic scale-* constructors collapse into a single keyed scales(), the largest breaking change of the release. Streamgraphs, bump charts, and waffle charts join the roster too.

typstquartogrammar-of-graphicsgribouille

Serving a Shiny App and Its Docs from One Process

great-docs generates an API reference documentation site from a Python package’s docstrings. Shiny for Python serves the interactive app. A Starlette wrapper mounts both at the same origin so one command is all you need.

pythonshinyquartodocumentation

R Package Architecture: Shiny, Quarto, targets, and S7

Most of my work is in R: statistical analysis of omics data, building packages. This post walks through the architecture I use to structure an analysis package that embeds a modular Shiny app and delivers branded reports through a bundled Quarto extension.

rshinyquartos7targets

Gribouille 0.4.0: Temporal Scales, Any-Glyph Markers, and a Finer Grid

Gribouille 0.4.0 teaches the scales to read dates and times from plain strings, lets any character stand in as a point marker, and splits the panel grid into a major and minor cascade with minor gridlines on by default. It also renames labs() to labels(), and closes with a real chart built from the package’s own GitHub star history.

typstquartogrammar-of-graphicsgribouille

Gribouille 0.3.0: Finer Guide Control and a Themed Compose

Gribouille 0.3.0 gives guides and axes a much finer on/off switch, lets compose() carry its own theme, and makes geom-area() stack by default. A long list of legend and annotation fixes rounds it out.

typstquartogrammar-of-graphicsgribouille

Why Quarto Stuck: Four Years from a Biostatistician’s Desk

After four years of daily use, Quarto has replaced R Markdown across my reports, slides, websites, and books. I reflect on what made it stick: cleaner defaults, real multi-language support, the extension system, and Typst for PDF.

quartotypstextensionsrmarkdown

Gribouille 0.2.0 and 0.2.1: Composing Plots and a Sturdier Core

Gribouille 0.2.0 is the first feature update since the launch, and 0.2.1 follows shortly after. compose() can now number panels, nest, carry its own titles, hoist a single shared legend, and line panels up across the grid with align-panels, facet-grid() gains free scales, and labels and guides get tidier controls. Most of the work, though, went into the internals, where a long list of panics became clear errors and correct output.

typstquartogrammar-of-graphicsgribouille

Build LinkedIn Carousels with Typst: the slide Layout

A LinkedIn carousel is just a multi-page document. This short tutorial shows how a tiny Typst slide helper gives every page a full-bleed background with consistent padding, then how to compile the deck to PDF and preview frames. It ends with a ready-to-paste LLM prompt that drafts a similar carousel from scratch.

typstdesignlinkedincarouselproductivity

Gribouille: a Grammar of Graphics for Typst

Gribouille is a new Typst package that brings Wilkinson’s grammar of graphics natively into Typst, in the spirit of ggplot2 and plotnine. Version 0.1.0 ships alongside an updated Typst Render Quarto extension whose new typst_define() helper streams arbitrary Python and R values, from a scalar to a Polars DataFrame, straight into Typst code blocks.

typstquartocomputationgrammar-of-graphicsgribouille

Quarto Reveal.js Extensions to Sharpen Your Slides

A short tour of small Quarto extensions that make Reveal.js presentations tidier and more interactive. Coordinated list fragments, animated code annotations, cascading headings, and keyboard-friendly tabsets, each with a minimal embedded slidedeck.

quartoreveal.jsextensionspresentations

Branded Figures and Tables in R and Python with Quarto

Style ggplot2, plotnine, gt, and great_tables outputs using Quarto’s brand feature by reading brand configuration from the QUARTO_EXECUTE_INFO environment variable at render time.

quartobrandrpythonggplot2plotnine

Building Quarto Typst Templates: Advanced Patterns (Part 2)

This tutorial continues from Part 1, exploring advanced patterns for Quarto Typst extensions. You will learn handler factories, configuration systems, type-safe value conversion, and WCAG-aware badges.

quartoextensionstypstluapdf

Building Quarto Typst Templates: The Lua-Typst Bridge (Part 1)

This tutorial introduces the dual-layer architecture for building Quarto Typst templates. You will learn how Lua filters and Typst functions work together to transform markdown elements into styled PDF components.

quartoextensionstypstluapdf

Document-Type Dispatching in Quarto Typst Extensions

Learn how to build a central dispatcher function that routes to different Typst templates based on document type. This pattern enables clean separation between document types like reports, letters, and CVs.

quartoextensionstypstpdf

Lua Best Practices for Quarto Extensions: Building Maintainable and Robust Extensions

This guide explores essential practices drawn from Quarto’s extensions and community standards, covering project structure, error handling, documentation, and release management to help transform your extensions into reliable, community-friendly tools that stand the test of time.

quartoextensionsproductivitybest practiceslua

Quarto: Publishing to GitHub Pages

In this guide, I’ll explore various methods to publish your Quarto projects to GitHub Pages. I’ll cover both manual and automated approaches to help you choose the best fit for your workflow.

quartogithub pagespublishingdeploymentgithub actions
No matching items
Back to top