Projects is my personal website where I publish my personal notes and articles. I write them in Emacs Org-mode and I publish them with Firn. Find the source code on GitHub.


  • Use a system based on Zettelkasten and Roam Research

  • Publish org markup as HTML

  • Use a flexible, static site generator based in Clojure

Status: Active

This project is active.

Practicing Functional JavaScript

Practicing Functional JavaScript is a project for people to practice and develop the mental tools for thinking functionally. It is a collection of functional solutions to Exercism exercises using the practical functional programming Ramda. There is a corresponding video for each exercise. The focus is on patterns of function composition and equational reasoning.

Status: Active

This project is active. Look out for new exercises!


shadow-static was the first thing I built with Clojure. It is a simple, single-page app that generates a minimal blog from markdown files. I built it with Reagent, "a minimalistic ClojureScript interface to React.js". I used shadow-cljs for ClojureScript compilation and seamless npm integration. Finally, I used Tailwind CSS, a CSS utility framework to declaratively style the blog.

My biggest takeaway was learning about Clojure macros and understanding how they work in order solve the problem of parsing markdown files to use to render HTML in ClojureScript.


  • Publish markdown posts as HTML

  • Syntax highlighting

  • Index page to list all posts

  • Individual post pages

  • Filter posts by tag

Status: Complete

The primary purpose of this project was to learn Clojure by building something practical. It is also an MVP blog that can be customized and improved upon as Luca Cambiaghi has done with He also wrote a blog post about it. I do not use shadow-static for my personal blog because I write my notes in Org-mode. Read about in How I built this site if interested.


Coming soon.


Coming soon.