Macroexpand-Noj - growing the Noj ecosystem
📅 October 17-18, 2025 | Online Conference
The Macroexpand-Noj conference is focused on the growth of the Noj toolkit for data science. Noj is a Clojure toolkit that brings together data processing, visualization, and scientific computing libraries into a cohesive whole. This conference is one of the Macroexpand 2025 pair of conferences organized by Scicloj.
About the Conference
A two-day online event for sharing practical data science experiences, showcasing Noj ecosystem tools, and advancing Clojure’s data science capabilities through tutorials, case studies, and technical discussions. Designed for Clojure programmers at all levels interested in data science.
Tentative Schedule
Time | Friday, October 17 | Saturday, October 18 |
---|---|---|
09:00 |
Opening & Welcome AbstractWe will just spend some time together and discuss what is coming for the day. |
Opening & Welcome AbstractWe will just spend some time together and discuss what is coming for the day. |
10:00 |
Computing with units in Clojure ![]() AbstractA quantity's unit plays a prominent role in science and engineering. Is it 5 milliseconds, 5 tons or 5 light-years? If you've ever named your variables now-instant, time-ms or force-kn to convey the interpretation of a number, this talk is for you! Come learn about units and unit systems, demonstrated in a Clojure REPL. Speaker |
Growing a DSL ![]() AbstractBioscoop is a DSL to program videos (instead of non-linear editing). It builds upon FFmpeg's filtergraphs, but it transforms the notoriously complex and error-prone string-based syntax with a structured, data-first approach amenable to composition and enhanced programmability. Speaker |
11:00 |
Rolling Regressions in Clojure for Real-Time Alpha and Beta Monitoring ![]() ![]() ![]() AbstractThis paper / talk presents a functional, reproducible implementation of rolling regression in Clojure to estimate time-varying alpha(α) and beta(β) for student-managed portfolios at the Centre for Investment Management (CIM), The University of Hong Kong. Unlike traditional CAPM tests based on passive index data, our analysis uses actual (synthetic) trades executed by junior portfolio managers- undergraduate students who manage simulated equity portfolios over multiple semesters. Speakers |
Book Basket Analysis: A Beginner's Journey with Scicloj ![]() AbstractAs a newcomer to data science and Scicloj, I'll share my exploration of market basket analysis applied to publishing sales data. This case study demonstrates how even data science beginners can implement correlation analysis and the Apriori algorithm using Clojure tools. I'll walk through my learning process with Tablecloth for data manipulation and Kindly for visualizations, focusing on practical solutions rather than theoretical complexity. Join me to see how entry-level Scicloj implementations can transform customer order histories into meaningful cross-selling recommendations, proving that useful data insights are accessible without deep expertise. Speaker |
12:00 |
TBD
|
Open Practice AbstractWe will spend some time together practicing the tools, methods, and ideas we have seen at other talks. |
13:00 |
Open Practice AbstractWe will spend some time together practicing the tools, methods, and ideas we have seen at other talks. |
Computer Graphics with Clojure, LWJGL, and Fastmath ![]() Abstractsfsim is a space flight simulator under development. It makes use of Clojure, LWJGL, and Fastmath among other libraries. More than half of the code deals with graphics. This talk gives a short introduction using LWJGL's cross-platform OpenGL bindings to get started with rendering data from NASA's CGI Moon Kit. Speaker |
14:00 |
Functional Quantum Computing with QClojure ![]() AbstractQClojure is a functional quantum computing library for Clojure with backend protocols, simulation backends and visualizations. This talk gives a short introduction to quantum computing and the goals and features of QClojure. In a short live coding session we will create some quantum states and circuits and run some algorithms on a quantum computing simulation. We will also address some implementation topics like complex linear algebra and quantum algorithms. The talk will close with future plans for QClojure, like running on real quantum hardware and quantum machine learning (QML). Speaker |
Macroexpand 3 AbstractThis meeting is part of the macroexpand gatherings series. It will focus on discussing the state of our community and initiating new projects for the near future. The session will begin by a few brief experience reports and proposals by participants. Then we will expand the discussion till we converge to actionable steps we will follow up on. |
15:00 |
Exploring the Breath-HRV Connection with Noj ![]() ![]() ![]() AbstractDoes your heart beat like a clock? No. It turns out that your heart rate varies. How much it varies, that is the question. Heart Rate Variability is a healthy phenomenon that relates in various ways to sleep, stress, age, various health conditions, and more. In this talk, we will see how it relates to our breath. We will learn a bit about both, see some visualizations, and demonstrate their relation through data analysis with Tablecloth, Tableplot, Clay, Fastmath, and JDSP. This is a real-world application of Noj for health data, presented by the team of Endor, a Clojure startup building a wellness app using wearable biometric data. Speakers |
|
16:00 |
Clay Workshop ![]() AbstractWe will learn about how to use Clay for interactive data visualization, documentation, and publishing. Speaker |
Noj Foundations ![]() ![]() AbstractThis will be a tutorial session about some of the relevant high-performance libraries behind Noj such as ham-fisted, dtype-next, and tech.ml.dataset. See the session we had with Harold last May -- you may expect something similar. Speakers |
17:00 |
Clojure Civitas Workshop ![]() AbstractWe will explore the workflow and ergonomics for publishing at Clojure Civitas, the new platform where Clojurians share their ideas and explorations. Speaker |
Elements of Malli ![]() AbstractMalli is a schema validation library, similar to spec. Unlike spec, it sets its aim higher, aiming for all schema-related needs, like explanation, coercion, parsing, generation, and the best performance possible. We'll go over Malli's building blocks, how it differs from spec, how to use it effectively, and engage in a non trivial example. Speaker |
18:00 |
Noj Intro ![]() AbstractWe will practice basic data exploration with Tablecloth and Tableplot, and maybe a few other parts of the Noj toolkit. It will be a free-form session with audience participation. Speaker |
Lightning Talks AbstractVarious short talks by conference participants |
19:00 |
Water Quality - Remote Sensing ![]() AbstractUsing multispectral satellite imagery in cloud-optimized geotiffs to perform simple band-ratio indices of water quality in the browser in a Clay notebook. Speaker |
Conclusion AbstractWe will spend some time together with closing thoughts. |
Friday, October 17
Opening & Welcome
Opening & Welcome
Abstract
We will just spend some time together and discuss what is coming for the day.
Computing with units in Clojure

Computing with units in Clojure

Abstract
A quantity's unit plays a prominent role in science and engineering. Is it 5 milliseconds, 5 tons or 5 light-years? If you've ever named your variables now-instant, time-ms or force-kn to convey the interpretation of a number, this talk is for you!
Come learn about units and unit systems, demonstrated in a Clojure REPL.
Speaker
Rolling Regressions in Clojure for Real-Time Alpha and Beta Monitoring



Rolling Regressions in Clojure for Real-Time Alpha and Beta Monitoring



Abstract
This paper / talk presents a functional, reproducible implementation of rolling regression in Clojure to estimate time-varying alpha(α) and beta(β) for student-managed portfolios at the Centre for Investment Management (CIM), The University of Hong Kong. Unlike traditional CAPM tests based on passive index data, our analysis uses actual (synthetic) trades executed by junior portfolio managers- undergraduate students who manage simulated equity portfolios over multiple semesters.
Speakers
Open Practice
Open Practice
Abstract
We will spend some time together practicing the tools, methods, and ideas we have seen at other talks.
Functional Quantum Computing with QClojure

Functional Quantum Computing with QClojure

Abstract
QClojure is a functional quantum computing library for Clojure with backend protocols, simulation backends and visualizations. This talk gives a short introduction to quantum computing and the goals and features of QClojure. In a short live coding session we will create some quantum states and circuits and run some algorithms on a quantum computing simulation. We will also address some implementation topics like complex linear algebra and quantum algorithms. The talk will close with future plans for QClojure, like running on real quantum hardware and quantum machine learning (QML).
Speaker
Exploring the Breath-HRV Connection with Noj



Exploring the Breath-HRV Connection with Noj



Abstract
Does your heart beat like a clock? No. It turns out that your heart rate varies. How much it varies, that is the question. Heart Rate Variability is a healthy phenomenon that relates in various ways to sleep, stress, age, various health conditions, and more. In this talk, we will see how it relates to our breath. We will learn a bit about both, see some visualizations, and demonstrate their relation through data analysis with Tablecloth, Tableplot, Clay, Fastmath, and JDSP. This is a real-world application of Noj for health data, presented by the team of Endor, a Clojure startup building a wellness app using wearable biometric data.
Speakers
Clay Workshop

Clay Workshop

Abstract
We will learn about how to use Clay for interactive data visualization, documentation, and publishing.
Speaker
Clojure Civitas Workshop

Clojure Civitas Workshop

Abstract
We will explore the workflow and ergonomics for publishing at Clojure Civitas, the new platform where Clojurians share their ideas and explorations.
Speaker
Noj Intro

Noj Intro

Abstract
We will practice basic data exploration with Tablecloth and Tableplot, and maybe a few other parts of the Noj toolkit. It will be a free-form session with audience participation.
Speaker
Water Quality - Remote Sensing

Water Quality - Remote Sensing

Abstract
Using multispectral satellite imagery in cloud-optimized geotiffs to perform simple band-ratio indices of water quality in the browser in a Clay notebook.
Speaker
Saturday, October 18
Opening & Welcome
Opening & Welcome
Abstract
We will just spend some time together and discuss what is coming for the day.
Growing a DSL

Growing a DSL

Abstract
Bioscoop is a DSL to program videos (instead of non-linear editing). It builds upon FFmpeg's filtergraphs, but it transforms the notoriously complex and error-prone string-based syntax with a structured, data-first approach amenable to composition and enhanced programmability.
Speaker
Book Basket Analysis: A Beginner's Journey with Scicloj

Book Basket Analysis: A Beginner's Journey with Scicloj

Abstract
As a newcomer to data science and Scicloj, I'll share my exploration of market basket analysis applied to publishing sales data. This case study demonstrates how even data science beginners can implement correlation analysis and the Apriori algorithm using Clojure tools. I'll walk through my learning process with Tablecloth for data manipulation and Kindly for visualizations, focusing on practical solutions rather than theoretical complexity. Join me to see how entry-level Scicloj implementations can transform customer order histories into meaningful cross-selling recommendations, proving that useful data insights are accessible without deep expertise.
Speaker
Open Practice
Open Practice
Abstract
We will spend some time together practicing the tools, methods, and ideas we have seen at other talks.
Computer Graphics with Clojure, LWJGL, and Fastmath

Computer Graphics with Clojure, LWJGL, and Fastmath

Abstract
sfsim is a space flight simulator under development. It makes use of Clojure, LWJGL, and Fastmath among other libraries. More than half of the code deals with graphics. This talk gives a short introduction using LWJGL's cross-platform OpenGL bindings to get started with rendering data from NASA's CGI Moon Kit.
Speaker
Macroexpand 3
Macroexpand 3
Abstract
This meeting is part of the macroexpand gatherings series. It will focus on discussing the state of our community and initiating new projects for the near future. The session will begin by a few brief experience reports and proposals by participants. Then we will expand the discussion till we converge to actionable steps we will follow up on.
Noj Foundations


Noj Foundations


Abstract
This will be a tutorial session about some of the relevant high-performance libraries behind Noj such as ham-fisted, dtype-next, and tech.ml.dataset. See the session we had with Harold last May -- you may expect something similar.
Speakers
Elements of Malli

Elements of Malli

Abstract
Malli is a schema validation library, similar to spec. Unlike spec, it sets its aim higher, aiming for all schema-related needs, like explanation, coercion, parsing, generation, and the best performance possible. We'll go over Malli's building blocks, how it differs from spec, how to use it effectively, and engage in a non trivial example.
Speaker
Lightning Talks
Lightning Talks
Abstract
Various short talks by conference participants
Conclusion
Conclusion
Abstract
We will spend some time together with closing thoughts.
Detecting your timezone...
* Schedule is subject to change. Final schedule with confirmed speakers will be published closer to the conference date.
Connect & Discuss
Join the conversation at the Clojurians Zulip chat where we coordinate projects and help each other with data science in Clojure.