A pretty cool org-mode -> interactive blog post tool

Overview

A flat-style vecor illustration of a radish.

Radish

A kinda-cool org-mode -> interactive blog post tool written with and for Clojure(script).

Here are two example posts created with this tool:

Radish Basic Example - (Basic Build) Uses Scittle with no external dependencies incorporated into the build.

Radish Logo - (Advanced Build) Uses Radish to automatically create and compile a shadow-cljs project to incorporate external CLJS dependencies into the (cloned) Scittle interpreter.

Why Radish?

A friend sent me a meme about radishes while I was thinking of a name for this project. I chuckled, then figured it's a good enough name for a small project like this.

Usage

If you have a recent installation of Babashka, you can run a few useful babashka tasks.

  • bb run-main -i your-org-file.org -> run the src with clojure
  • bb run-uber -i your-org-file.org -> build and run an uberjar with
  • bb uberjar -> create radish.jar in the project root directory without running

Once you've built the uberjar, you can use it via:

java -jar radish.jar -i your-org-file.org

If you don't have or want to use Babashka, the following commands should work:

  • clojure -M -m radish.main -i your-org-file.org -> run the src with clojure
  • clojure -X:uberjar -> build the uberjar
  • java -jar radish.jar -i your-org-file.org -> run the uberjar, as stated previously.

Radish will create a directory in the same dir as the org file, with a name derived from the Title of the org file. Inside will be all necessary .js and .css files alongside a generated index.html. You should be able to upload this directory to your site and have a working page.

Compiling to Native Image

You can compile this project with GraalVM's native-image.

First, make sure you have GraalVM / native-image installed, then set your env variables:

export GRAALVM_HOME=/Users/adam/Downloads/graalvm-ce-java11-21.1.0/Contents/Home
export JAVA_HOME=$GRAALVM_HOME 

NOTE: Change the path to match where you've downloaded/installed GraalVM

Then, run the native-image task with Babashka.

bb native-image

If the build succeeds, you should find the binary in build/radish.

NOTE: This is still fairly new territory for me, so the build script(s) could likely be cleaned up a bit yet. However, the final binary should work the same as the src or uberjar.

./radish -i your-org-file.org

Current Limitations

The only build method so far is 'basic-build', which relies on a simple script executed in your browser by scittle after the page loads. It has no dependency loading capabilities and thus is limited to executing Clojurescript code that only relies on core libraries.

A more complete build process is underway where the idea is to compile dependencies using the Clojurescript compiler and creating a page via that process.

You might also like...

Snapmaker 2.0 (A350, A250, A150) tool libraries, machine profiles, post processor...

Snapmaker 2.0 On this repository I'm adding some machine configurations, tool libraries and post-processor to use the Snapmaker 2.0 A350, A250 and A15

Jan 4, 2023

A quick and easy to use security reconnaissance webapp tool, does OSINT, analysis and red-teaming in both passive and active mode. Written in nodeJS and Electron.

A quick and easy to use security reconnaissance webapp tool, does OSINT, analysis and red-teaming in both passive and active mode. Written in nodeJS and Electron.

ᵔᴥᵔ RedJoust A quick and easy to use security reconnaissance webapp tool, does OSINT, analysis and red-teaming in both passive and active mode. Writte

Oct 31, 2022

A cool tool that saves you time if you want to remove node_modules before running 'npm i'

rmnpm A cool tool that saves you time if you want to remove your node_modules folder before running the npm install command. How does it do it? By fir

Jul 16, 2022

Tool Cool Color Picker is a color picker library written in typescript and using web component technologies.

Tool Cool Color Picker is a color picker library written in typescript and using web component technologies.

Tool Cool Color Picker Tool Cool Color Picker is a color picker library written in typescript and using web component technologies. Check out the demo

Oct 23, 2022

Tool Cool Range Slider

Tool Cool Range Slider

Responsive range slider library written in typescript and using web component technologies. Pure JavaScript without additional dependencies. It has a rich set of settings, including a vertical slider, touch, mousewheel and keyboard support, local and session storage, and RTL support.

Dec 31, 2022

Digispark Overmaster : free IDE TOOL allows to create and edit Digispark Scripts by the drag and drop technique,with cool GUI and easy to use it

Digispark Overmaster : free IDE TOOL allows to create and edit Digispark Scripts by the drag and drop technique,with cool GUI and easy to use it

Digispark_Overmaster Digispark Overmaster : free IDE TOOL allows to create and edit Digispark Scripts by the drag and drop technique,with cool GUI and

Nov 14, 2022

This is a (pretty broken, but mostly functional) organic-shaped jigsaw generator with custom border support

OrganicPuzzleJs This is a (pretty broken, but mostly functional) organic-shaped jigsaw generator with custom border support. It relies on two linbrari

Dec 10, 2022

A javascript framework for developing pretty browser dialogs and notifications.

A javascript framework for developing pretty browser dialogs and notifications.

AlertifyJS AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. AlertifyJS is an extreme makeover of alertify

Jan 2, 2023

Pretty, customisable, cross browser replacement scrollbars

jScrollPane - cross browser custom scroll bars jScrollPane is a jQuery plugin which allows you to replace a browser's default scroll bars (on an eleme

Dec 15, 2022
Comments
  • Status of advanced build ?

    Status of advanced build ?

    Thank you for this project, I would love to be able to use it. The status of the advanced build, with dependencies, is not clear to me, as the beginning of the README.md says that the Radish Logo example was created with Radish advanced build, while the end of the same README.md says that the only build method so far is "Basic Build". Cloning your repo and running bb run-main -i radish-logo.org did not produce a usable page (no radish.js nor radish.reagent.js).

    BTW, have you considered using Klipse to generate the interactive code snippets ? That what I use for my current ad-hoc org→ interactive blog posts solution.

    Best Regards.

    opened by scientific-coder 1
Owner
adam-james
Mechanical Engineer. Self-taught programmer.
adam-james
Pretty Cool Elements

Pretty Cool Elements Social Media Photo by Jamison McAndie on Unsplash This module is a follow up of this Medium post, and it provides element mixins/

Andrea Giammarchi 36 Dec 23, 2022
simple-remix-blog is a blog template built using Remix and TailwindCSS. Create your own blog in just a few minutes!

simple-remix-blog is a blog template built using remix.run and TailwindCSS. It supports markdown and MDX for the blog posts. You can clone it and star

José Miguel Álvarez Vañó 8 Dec 8, 2022
Move all the disks from the left hand post to the right hand post, only moving the disks one at a time and a bigger disk can never be placed on a smaller disk.

Hanoi Tower Description The Tower of Hanoi was a famous problem posed by a mathematician in 1883, The "puzzle" is to move all the disks from the left

Dustin J Sellers 1 Feb 5, 2022
MDN-Dark-Mode - Simple extension to add a dark mode with different themes to the MDN Web Docs website

MDN-Dark-Mode Information Chrome and Firefox extension that adds a dark mode wit

Santiago Galán Barlo 2 Mar 18, 2022
🌓 Add dark mode/night mode custom elements to your website.

dark-mode A custom element that allows you to easily put a Dark Mode ?? toggle. so you can initially adhere to your users' preferences according to pr

小弟调调™ 12 Oct 20, 2022
A lightweight JavaScript library for creating interactive maps and pretty data visualization.

Jsvectormap A lightweight Javascript library for creating interactive maps and pretty data visualization. Explore docs . Report bug · View demo · Down

Mustafa Omar 204 Dec 24, 2022
A social network that simulates a personal blog, where people post "What's on your mind?". Tweteroo is a Twitter clone.

Tweteroo About A social network that simulates a personal blog, where people post "What's on your mind?". Tweteroo is a Twitter clone. ?? Features ☑️

Luiza Santiago 5 Apr 13, 2022
A simple example repo that demonstrates the dynamic ephemeral storage solution for AWS Lambda outlined in the corresponding Storyboard Dev Blog post.

AWS Lambda Dynamic Ephemeral Storage Example A simple example repo that demonstrates the dynamic ephemeral storage solution for AWS Lambda outlined in

Storyboard.fm 3 Jun 14, 2022
Gatsby-blog-cosmicjs - 🚀⚡️ Blazing fast blog built with Gatsby and the Cosmic Headless CMS 🔥

Gatsby + Cosmic This repo contains an example blog website that is built with Gatsby, and Cosmic. See live demo hosted on Netlify Uses the Cosmic Gats

Priya Chakraborty 0 Jan 29, 2022
This is a blog built with sveltekit, tailwind and daisyUI, made to be used as my personal blog.

svelte-blogger This is a blog built with sveltekit, tailwind and daisyUI, made to be used as my personal blog. This app also use graphql and use markd

lipe 6 Jun 23, 2022