GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — massimo-nocentini - Overview

@massimo-nocentini massimo-nocentini Follow
More
  • Overview
  • Repositories
  • Projects
  • Packages
  • Stars
@massimo-nocentini
massimo-nocentini
Follow
View massimo-nocentini's full-sized avatar

Massimo Nocentini massimo-nocentini

Follow
37 followers · 175 following
  • Versilia, Italy.
  • 04:29 (UTC +01:00)
  • https://massimo-nocentini.github.io/
More
  • Overview
  • Repositories
  • Projects
  • Packages
  • Stars
massimo-nocentini/README.md

Hi there 👋 I'm Massimo Nocentini

I'm a researcher and software developer from Tuscany, Italy, with a PhD in Computer Science from the University of Florence. I work on graph algorithms and large-scale network analysis, and I spend a lot of time with programming languages: Scheme, Smalltalk, Lua, Rust and C.

  • 🌐 Homepage and blog: massimo-nocentini.github.io (RSS, books), built with my tufte.hugo theme
  • 📄 Curriculum vitae et studiorum: online, LaTeX sources
  • ✉️ [email protected] · [email protected]

What I work on

  • Graphs and networks. Research fellow at DiSIA (2024–2026, Graphs and applications, with Prof. Andrea Marino): graph models of the Bitcoin transaction network, algorithms for graphs with large diameter, and crowding estimation in public transport via temporal graphs.
  • Relational and logic programming. µKanren and miniKanren in Python, Smalltalk and Scheme, plus Kanren Light, a logic programming system built on HOL Light (with Prof. Marco Maggesi).
  • Combinatorics. My PhD (2019, advisor Prof. Donatella Merlini) studied Riordan arrays, generating functions and the OEIS, with symbolic and logic tools.
  • Software development. Freelance since 2019 on Pharo Smalltalk and microservice architectures. Before that I spent years in industry on .NET, C# and PostgreSQL.

Publications

  • A. Bernasconi, D. Di Francesco Maesa, M. Loporchio, A. Marino, M. Nocentini, L. Ricci. Systematizing Graph Models for Bitcoin and Designing Algorithms for Large-Distance Analysis, IEEE Transactions on Network Science and Engineering, 2026.
  • D. Bubboloni, C. Catalano, M. Fanfani, A. Marino, P. Nesi, M. Nocentini. Public Transport Crowding Estimation via Temporal Graphs, submitted.
  • M. Maggesi, M. Nocentini. Kanren Light: A Dynamically Semi-Certified Interactive Logic Programming System, miniKanren 2020 workshop (code).
  • D. Merlini, M. Nocentini. Functions and Jordan canonical forms of Riordan matrices, Linear Algebra and its Applications 565, 2019.
  • D. Merlini, M. Nocentini. Algebraic generating functions for languages avoiding Riordan patterns, Journal of Integer Sequences 21, 2018.
  • M. Nocentini, D. Merlini. Crawling, (pretty) printing and graphing the OEIS, DiSIA working paper, 2018 (code).

Theses: PhD (defense slides), master (Patterns in Riordan arrays).

Selected projects

Graphs, in Rust and C

  • igraph-rs: Rust bindings for igraph (post)
  • webgraph-clib-rs: a C library over webgraph-rs compressed graphs; webgraph-foreign-algorithms-rs runs igraph and rustworkx algorithms on them
  • avgdist-rs: a sampling algorithm to estimate the average distance in graphs with a large diameter
  • utxo2webgraph-rs, utxoscope-rs: Bitcoin UTXO graphs (post)
  • dag-rs: DAG algorithms (semiring DP, dominators, reachability, transitive reduction, width) on webgraph DAGs, validated on the Bitcoin Payment Graph (2.18·10⁹ nodes, 8.64·10⁹ arcs)
  • coloring-bt-transactions-rs: where did a Bitcoin transaction's coins come from? Colouring transactions by the blocks they descend from (docs)
  • graph-tool-rs: a work-in-progress Rust port of graph-tool, moving its runtime failures to compile time
  • non-layered-tidy-trees.c: drawing non-layered tidy trees in linear time, also in Rust
  • libpq-rs, judy-rs: bindings for PostgreSQL's libpq (post) and Judy arrays

Scheme and relational programming

  • aux.scm: auxiliary definitions and macros for CHICKEN Scheme (streams, nondeterminism, HANSEI, monads, unit testing), now with λProlog-style higher-order logic programming in µKanren ((aux kanren lambda)), ports of Pie from The Little Typer and J-Bob from The Little Prover, heuristic and adversarial search ((aux search)), and the games of Land of Lisp, up to a playable Dice of Doom web app with a tunable AI and an SVG view of its search tree; its test suites are on the blog
  • chicken-core: CHICKEN Scheme compiled to WebAssembly, with a REPL console and a notebook in the browser
  • concurrent.scm: Concurrent ML for CHICKEN Scheme (post)
  • wolfram.scm: talking to the Wolfram Engine from Scheme
  • microkanrenpy, microkanrenst, kanren-light: µKanren in Python, Smalltalk and OCaml/HOL Light

Pharo Smalltalk

  • pharo-vm: a fork of the Pharo 12 VM with a WebAssembly port that runs stock Pharo 12–15 images in node and in the browser (console, notebook, Morphic world, Iceberg over libgit2 that commits, pushes and pulls from the page), a SimdJSONPlugin, and faster LargeIntegers (post)
  • simdjson.st: a strict RFC 8259 JSON reader and writer for Pharo 15 parsed by simdjson, with NeoJSON's API (the writer's output matches NeoJSON byte for byte)
  • Containers-*: persistent and classic data structures (skip lists, splay, leftist and binomial heaps, red-black sets, union-find, SBRAL, …), collected in the Booklet-DSst booklet
  • srfi-41st (streams), delimcc.st (delimited continuations), FFI bindings to Lua, tree-sitter, Wolfram and poppler

Knuth, literate programming and Lua

  • sgb.cweb, bdd-zdd.cweb, SAT.cweb, simpath.cweb: working through Knuth's programs (post)
  • exactcover.lua (dancing links), toposort.lua, and Lua bindings for curl, cairo and PostgreSQL
  • lua: Lua compiled to WebAssembly (wasm32 and wasm64), with a console and a notebook in the browser

Typesetting and books

  • tufte.hugo: a Hugo theme on Tufte CSS that does in HTML what the Tufte-LaTeX classes do in TeX: sidenotes, numbered floats with margin captions, citations, cross-references, theorems, multi-chapter books with an index, print geometry, search and reveal.js slides (example site)
  • Books typeset with it from proofread LaTeX transcriptions: La Bibbia di Gerusalemme, X. Léon-Dufour's Dizionario di Teologia Biblica and the Catechismo della Chiesa Cattolica with its Compendio, every biblical reference linked to its verse
  • bibbia-dufour.rdf: an RDF ontology centred on the Bible verse, with SHACL shapes, SPARQL queries, a time line of every dated event and an offline explorer

Talks

  • Dancing Links: an educational pearl, ESUG 2019, Cologne
  • Relational Programming in Smalltalk, ESUG 2018, Cagliari (slides)
  • Modular Catalan triangle, 2nd International Symposium on Riordan Arrays and Related Topics, 2015, Lecco

Pinned Loading

  1. aux.scm aux.scm Public

    Auxiliary definitions and macros.

    C++

  2. PhD-thesis PhD-thesis Public

    TeX

Something went wrong, please refresh the page to try again.
If the problem persists, check the GitHub status page or contact support.

Uh oh!

There was an error while loading. Please reload this page.

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.