Share your
Nim 👑 Adventures
with Nimib 🐳!


slides: github.com/pietroppeter/nimconf2021

### 👨‍👩‍👧 Me and Nim * Pietro Peterlongo, [Milan, Italy](https://goo.gl/maps/nWwfT35yM9nHWo4X9) * Python Data Scientist working on a [Supply Chain Planning Software](https://www.toolsgroup.com/) * ran into Nim in Sep, 2018 on HN: [Programming Language Underdog](https://news.ycombinator.com/item?id=18045259)
### What is Nimib 🐳? A template-based DSL for publishing Nim code and its outputs (text, images, ...). Kind of inspired by [Jupyter](https://nbviewer.jupyter.org/url/norvig.com/ipython/Advent%20of%20Code.ipynb), [RMarkdown](https://rmarkdown.rstudio.com/lesson-10.html) and the like...
### What is Nimib 🐳? Target use cases are _tutorials_ and _blogs_. [Example-driven development]() striving for: * simple API * sane defaults * easy customization

Installation

nimble install nimib

Usage

hello_nimoji.nim:


					import nimoji
					echo ":wave: :earth_africa:".emojize
					

Usage

hello_nimoji.nim:


					import nimib

					nbInit # initializes nimib document

					nbText: """# Hello nimoji
					Say _hi_ to [nimoji](https://github.com/pietroppeter/nimoji)"""

					nbCode: # code output will be captured
						import nimoji
						echo ":wave: :earth_africa:".emojize
					
					nbSave # creates a hello_nimoji.html with the published document
					

nim r hello_nimoji

hello_nimoji.html:

Default theme is styled with 🌊 water.css

Highlighting compatible with highlight.js styling

How to show an image

How to use Latex (powered by Katex)

How to customize stylesheet

How does customization work? With Mustache!

How to extend the DSL (Markdown cheatsheet)

How to create a new theme: Nimibook

### Other examples * [nimib](https://pietroppeter.github.io/nimib), nimib documentation is produced with nimib and contains more examples * [nblog](https://pietroppeter.github.io/nblog), a blog about nim ecosystem built with nimib, still to be themed * [adventofnim](https://pietroppeter.github.io/adventofnim), my solutions for advent of code, is the first thing I did with Nimib (and also the first thing I did with Nim)
### Other examples * [SciNim/getting-started](https://github.com/SciNim/getting-started) is a community effort to show how to use nim scientific libraries and it uses [Nimibook](https://github.com/pietroppeter/nimibook) * [Introduction to Binarylang](https://ajusa.github.io/binarylang-fun/intro.html) is the first documented public usage of nimib not by me * [Nimiboost](https://github.com/HugoGranstrom/nimiBoost/) is a VS Code extension to Highlight Markdown in Nimib files and preview the result in a separate panel. * [nimibujo](https://github.com/zetashift/nimibujo) is a port of LoqSeq Bujo Theme for Nimib * ... _keep them coming!_
### Roadmap 1. improve many small details - preserve code in block as in source [#20](https://github.com/pietroppeter/nimib/issues/20) - redesign how paths are handled [#55](https://github.com/pietroppeter/nimib/issues/20) - refactor global objects [#25](https://github.com/pietroppeter/nimib/issues/25)
### Roadmap 1. improve many small details 2. create new themes - improve default functionalities for blogging [#30](https://github.com/pietroppeter/nimib/issues/30) - steal from the masters ([neveal](https://github.com/pietroppeter/neveal), [npapermib](https://github.com/pietroppeter/npapermib), [niminal-mibstakes](https://github.com/pietroppeter/niminal-mibstakes))
### Roadmap 1. improve many small details 2. create new themes 3. extend the dsl - refactoring rendering [#35](https://github.com/pietroppeter/nimib/pull/35) - support workflows involving js backend [#34](https://github.com/pietroppeter/nimib/issues/34)
### Roadmap 1. improve many small details 2. create new themes 3. extend the dsl 4. full interactivity (build apps like in [streamlit](https://streamlit.io/), edit code like in [jupyter](https://jupyter.org/), ...)
### 🙏 Thanks [soasme](https://github.com/soasme) (for [nim-markdown](https://github.com/soasme/nim-markdown) and [nim-mustache](https://github.com/soasme/nim-mustache)), [Clonkk](https://github.com/Clonkk), [yardanico](https://github.com/yardanico), [HugoGranstrom](https://github.com/HugoGranstrom), [zetashift](https://github.com/zetashift), [ajusa](https://github.com/ajusa), all those who have put a ⭐ on the repo, ...
### 🙏 Thanks #### y'all for listening!