Neuron is a note-taking tool written in Haskell and optimized for publishing, based on the 📓 Zettelkasten method. Visit the project website to learn more. Neuron is being superceded by Emanote.

Blog posts


Links to this page
  • ka Project

    ka (originally announced in Neuron 1.0 released) was a research playground (and an instance of Hybrid rewrite-refactor model of project develoment) for 📓 Zettelkasten, as well as an independent app, for Neuron. Like Neuron, it is written in Haskell, but built on top of Reflex-FRP. See for details.

  • emanote.obelisk Project

    emanote.obelisk gives life to your plain-text notes. Like Neuron, it supports Markdown, wiki-links and folgezettel (see 📓 Zettelkasten). Unlike neuron, emanote’s website is fully dynamic (it uses Obelisk underneath), thus has the potential for doing many interesting things that neuron’s statically generated cannot easily.

  • Use Neuron, get RSS for free

    Instead of writing your own static site generator, and write code to laboriously generate RSS feeds (which are all useful exercise in learning) - why not use Neuron*, and add the following to your, say, and call it a day?

  • PureScript mini-tutorial using Nix

    My Haskell app Neuron recently received a contribution that added support for the very useful client-side search feature. JavaScript was used to implement it; however after having gotten used to merrily creating Reflex-FRP-based web apps (frontend and backend both in Haskell), writing raw JavaScript had very little appeal to me, which left me with the following options:

  • Pretty URLs in Neuron

    Just pushed a change that enables pretty URLs in neuron generated sites. This already works in GitHub Pages (/foo returns /foo.html). Neuron had to be changed to make generated HTML link to /foo instead of /foo.html. This behaviour is controlled by:

  • Neuron 1.0 released

    Neuron is a note-taking tool based on Zettelkasten, that aims to be future-proof, and is optimized for publishing on the web. Version 1.0 just got released, with better linking support and many other improvements.

  • Neuron 0.6 released

    Neuron is a note-taking tool based on Zettelkasten, that aims to be future-proof. Version 0.6 just got released; its major highlight is that neuron is now based on the Pandoc AST. This allows us to support any format supported by Pandoc. Experimental org-mode support is already in, to begin with.

  • Neuron 0.4 released

    Neuron is a Zettelkasten note taking app I originally open sourced about two months ago (see Announcing Neuron - Zettelkasten in Haskell). Recently a new version was released incorporating some interesting improvements, many of them were inspired by invaluable user feedback.

  • Haskell

    On GitHub you can find a list of Haskell projects I work on, the notable of which are Neuron, Ema and Emanote.

  • Emanote

    Spiritual successor to Neuron, based on Ema (written in Haskell). Yet to be officially released and announced, even though it is already used by many.

  • Ema

    Ema, a Haskell project, is partly inspired by Neuron and emanote.obelisk Project.

  • Dhall

    Neuron uses Dhall for configuration, but only in a simple fashion (no functions, for instance).

  • Cerveau, a future-proof web app for notes

    Cerveau’s frontend too is written in Haskell. Wait, how is that possible? The GHCJS compiler compiles Haskell code to low-level JavaScript for running in the browser. Cerveau uses the Reflex-FRP library, via the excellent Obelisk framework, which takes care of all the plumbing required to produce such full-stack Haskell apps, so that I as a developer can focus on the FRP application logic. FRP, and similar models of UI programming, is simpler to write and extend than callback based code. Anybody who writes Elm* can attest to that; however unlike Elm or PureScript, GHCJS code can be shared with the backend. This is what enables Cerveau to directly reuse much of the Neuron source code, thus enabling neuron’s core features to work directly on the browser–for example, live HTML preview while editing the note.

    I created the open-source Neuron to scratch my own itch, wherein I wanted to maintain my notes for a lifetime, without being dependent on proprietory formats or systems. I still wasn’t totally satisfied however, because I did not want to give up on the convenience of managing notes from a web app on my mobile phone. I didn’t want to be tied to a desktop text editor. So, the idea behind Cerveau was born - which began to resolve that dissatifaction without compromising on future-proofness.

    I’d like to announce the public beta of Cerveau*, a web app for managing plain-text notes from a GitHub repository. Cerveau integrates directly with Neuron which supports Zettelkasten-style note-taking in Markdown. This very site you are reading is managed by Neuron and edited in Cerveau, and its Git repo is essentially a directory of Markdown files.

  • Building Static Haskell binaries using Nix

    For Neuron in particular, see this PR for the actual changes to support building static binaries on Linux.

  • Announcing Neuron - Zettelkasten in Haskell

    I use Neuron both for my private Zettelkasten, as well as the public site (this one). What follows below is summary of some of the capabilities neuron currently supports.

  • Announcing Ema - Static Sites in Haskell

    It is worth emphasizing that I designed Ema to facilitate a new model of application development – one where the data is managed and edited outside of the application itself (such as in text editors, or even a database), but the view of the data is provided by the application. Neuron is a great example of that (and it might well be eventually rewritten on top of Ema; EDIT: indeed it is). Another example is writing a diary / journal view on top of Org Mode daily notes, which is what I’m exploring in the orgself project that also uses Ema. A third example is to take a OPML file and present a daily-digest view of new content from the RSS feeds; the application would provide only a “view” into your data, which is a XML file that you may edit however you see fit. I like this model of apps, because the data and the data format remains under my control, all the while yet I’m not limited when it comes to presentation of that data, and I think the web is a great platform for the later.

    Later that year I built Neuron (note-taking system and for publishing for Markdown files as a static site) on top of rib and announced it (see Announcing Neuron - Zettelkasten in Haskell). Neuron has the ability to monitor changes to Markdown files and update the static site. After modifying your notes you would however have to manually refresh the browser.

  • A brief F# exploration
    If I were to start developing Neuron today, I would certainly consider F# (but see below).
    Overriding dependencies to use a fork in straightforward manner is virtually impossible. You have to create a local Nuget repo containing the binary of your overriden dependency. Whereas in Haskell world, one can easily use Nix to use a Git repo (Neuron does this) as a package dependency.*