Links to this page
  • 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.

  • Reflex-FRP

    The recommended way to get started with writing reflex apps is via Obelisk … or reflex-stone if you do not want a backend server.

  • Obelisk tutorial, Markdown preview with Reflex

    We will not work directly with GHCJS, however, and instead will use the Reflex-FRP library, through the excellent Obelisk full-stack framework.

  • No JavaScript
  • 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.

  • Announcing Ema - Static Sites in Haskell

    I explored the idea of hot-reload’ing the notebook view instantly on Markdown file change in ka Project. You can see a video demo of it here. Likewise, the emanote.obelisk Project – another brief exploration – also supported hot reload. But both these projects were not static sites, and they were built on Reflex-FRP and Obelisk. I also recently got to play with SvelteKit for creating static sites, and its hot reload feature in particular impressed me; however I’m no fan of using a less safe language (see No JavaScript), so I wanted to take the best aspects of these projects and prototype something in Haskell.*

  • A brief F# exploration

    Haskell’s GHCJS (esp. when used with Obelisk) satisfies all of this, but there is one pain-point: the future of GHCJS (which has not been updated in a year) and Reflex seems to be in the hands of one small company, Obsidian Systems.