--- /dev/null
+--- title: /apps.html
+--- description: Apps for macOS, iOS, and Linux written by Rubén Beltrán del Río.
+## Apps
+Here's applications I've written, divided into three sections.
+* I are macOS apps
+* II are command line tools for macOS and Linux.
+* III are apps for iOS.
+=> / ⧍ Home
+
+## I
+### Captura
+Quickly record your mac's screen and share as .gif or .mp4.
+=> https://captura.tranquil.systems/ captura.tranquil.systems
+
+### Map
+Create wardley maps on mac using text.
+=> https://map.tranquil.systems/ map.tranquil.systems
+
+
+## II
+### Lyricli
+Print the lyrics of your current track to the terminal. Supports Apple Music, Spotify for mac, and most Linux players.
+=> /lyricli.gmi ./lyricli.gmi
+
+### Blog
+Author and publish an (almost) ephemeral html blog with a gemini archive.
+=> /blog.gmi ./blog.gmi
+
+### Page
+Generate HTML and static gemini websites from .gmi files.
+=> /page.gmi ./page.gmi
+
+## III
+### Do
+A task manager that makes you write a journal entry when the task is done.
+=> https://do.tranquil.systems/ do.tranquil.systems
+
+### Ritmo
+Keep a healthy balance in life by getting periodic reminders. For iOS and mac.
+=> https://ritmo.tranquil.systems/ ritmo.tranquil.systems
}
h1, h2, h3, a { color: #00f }
-[data-title="/index.html"] {
- .h2:nth-of-type(n+5):nth-of-type(-n+6) {
- h2, h3, a { color: #EE0700 }
- }
-
- .h2:nth-of-type(n+7):nth-of-type(-n+9) {
- h2, h3, a { color: #6A5ACD }
- }
-
- .h2:nth-of-type(10) {
- h2, h3, a { color: #A76905 }
- }
-
- .h2:nth-of-type(11) {
- h2, h3, a { color: #398557 }
- }
-
- .h2:nth-of-type(n+12):nth-of-type(-n+16) {
- h2, h3, a { color: #D505C6 }
- }
-
- .h2:nth-of-type(17) {
- h2, h3, a { color: #6A788A }
- }
-}
.h2 a {
display: inline-block;
border: 1px solid #fff;
}
h1, h2, h3, a { color: #5dc1fd }
- [data-title="/index.html"] .h2:nth-of-type(n+7):nth-of-type(-n+9) {
- h2, h3, a { color: #675CFB }
- }
pre { background-color: #222 }
header h1 a {
-webkit-text-stroke: 1px #fff;
--- /dev/null
+--- title: etc.html
+--- description: Assorted programming projects written by Rubén Beltrán del Río.
+## Etc.
+This is an assortment of programming projects that i've built throughout the years: either unmaintained, experimental, useless or art. The projects are listed chronologically.
+=> / ⧍ Home
+
+## I
+### Lissajous
+(2024) Play with parametric curves.
+=> https://lissajous.unlimited.pizza/ lissajous.unlimited.pizza
+=> https://git.r.bdr.sh/rbdr/lissajous ⧇ Lissajous source code
+
+### Prompt
+(2021) Drawing prompts on demand.
+=> https://prompt.unlimited.pizza/ prompt.unlimited.pizza
+=> https://git.r.bdr.sh/rbdr/prompt ⧇ Prompt source code
+
+### Corona Regeln
+(2021) Up-to-date corona rules for Berlin. Refresh frequently.
+=> https://corona.unlimited.pizza/ corona.unlimited.pizza
+=> https://git.r.bdr.sh/rbdr/corona-regeln ⧇ Corona Regeln source code
+
+## II
+### Flower
+(2018) 🌹🌸🌺💐🌼🌻🌷 draw a flower rotating a cube 🌷🌻🌼💐🌺🌸🌹
+=> https://flower.unlimited.pizza/ flower.unlimited.pizza
+
+### Sorting Hat
+(2017) Reads your brain and places you in a category based on your mental activity
+=> https://git.r.bdr.sh/rbdr/sorting-hat Sorting hat source
+=> https://git.r.bdr.sh/rbdr/sorting-hat-renderer ⧇ Sorting hat renderer source code
+
+### Dasein
+(2017) Ephemeral posts experiment: the posts stay alive as the conversation continues, but disappear shortly after activity stops.
+=> https://git.r.bdr.sh/rbdr/dasein ⧇ Dasein source code
+
+## III
+### Frames
+(2017) 🆒
+=> https://frames.unlimited.pizza/ frames.unlimited.pizza
+
+### Dead Drop
+(2017, Spanish) Marca un número de 📞 y deja un mensaje secreto, o escucha algo al azar.
+=> https://git.r.bdr.sh/rbdr/dead-drop ⧇ Dead Drop source code
+
+### Tomato Sauce
+(2016) a random work of ansi art via telnet. Better with 24-bit enabled terminals.
+=> telnet:tomato.unlimited.pizza:6666 telnet tomato.unlimited.pizza 6666
+=> https://git.r.bdr.sh/rbdr/tomato-sauce ⧇ Tomato Sauce source code
+
+## IV
+### LGTM
+(2016) Looks Good To Me! 👍
+=> https://lgtm.unlimited.pizza/ lgtm.unlimited.pizza
+=> https://git.r.bdr.sh/rbdr/lgtm ⧇ lgtm source code
+
+### Heart
+(2016) ❤️💜💙💛💚
+=> https://heart.unlimited.pizza/ heart.unlimited.pizza
+
+### Generador de Insultos
+(2015, Spanish) Un generador de insultos multi-usos que te da un insulto nuevo cada vez que lo cargas.
+=> https://insultos.unlimited.pizza/ insultos.unlimited.pizza
+=> https://git.r.bdr.sh/rbdr/generador-de-insultos ⧇ generador de insultos source code
+
+## V
+### Grita
+(2010, Spanish) Comparte texto anónimamente y distribuyelo con QR codes y URLs cortas.
+=> https://git.r.bdr.sh/rbdr/grita ⧇ grita source code
+
+### Polarity
+(2009) Top-down arena shooter game with magnetism.
+=> ./files/polarity.zip polarity.zip
+
+### Pico Engine
+(2009) Platform game engine with lua scripting.
+=> https://git.r.bdr.sh/rbdr/pico-engine ⧇ pico source code
+
=> /learning.txt ☝︎ learning.txt
=> gemini://r.bdr.sh/guestbook ✍︎ guestbook
-=> https://pixelfed.de/minoltacos ✧ pictures
=> https://friendship.quest/@ruben ☹︎ social media
=> https://links.srv.bdr.sh/bookmarks/shared ♡ bookmarks
-=> https://myspace.bandcamp.com/ ♬ music
=> mailto:contact@r.bdr.sh ✉︎ e-mail
=> /pub.txt ✶ gpg key
=> /messages_key.txt ✷ contact key
-## Apps I
-### Captura
-Quickly record your mac's screen and share as .gif or .mp4.
-=> https://captura.tranquil.systems/ captura.tranquil.systems
+## Code
-### Lyricli
-Print the lyrics of your current track to the terminal. Supports Apple Music, Spotify for mac, and most Linux players.
-=> /lyricli.gmi ./lyricli.gmi
-=> https://git.r.bdr.sh/rbdr/lyricli lyricli source code.
+I write code, including apps[1] for linux, macOS, and iOS; libraries[2] for Rust, Swift, and JavaScript; plugins[3] for neovim, nginx, swiftbar, quicksilver, and browsers and other[4] stuff like toy pages, art, or experiments.
-### Map
-Create wardley maps on mac using text.
-=> https://map.tranquil.systems/ map.tranquil.systems
+=> ./apps.gmi [1] ./apps.gmi
+=> ./libraries.gmi [2] ./libraries.gmi
+=> ./plugins.gmi [3] ./plugins.gmi
+=> ./etc.gmi [4] ./etc.gmi
+## Art
-## II
-### Blog
-Author and publish an (almost) ephemeral html blog with a gemini archive.
-=> /blog.gmi ./blog.gmi
-=> https://git.r.bdr.sh/rbdr/blog blog source code
-
-### Page
-Generate HTML and static gemini websites from .gmi files.
-=> /page.gmi ./page.gmi
-=> https://git.r.bdr.sh/rbdr/page page source code
-
-## III
-### Do
-A task manager that makes you write a journal entry when the task is done.
-=> https://do.tranquil.systems/ do.tranquil.systems
-
-### Ritmo
-Keep a healthy balance in life by getting periodic reminders. For iOS and mac.
-=> https://ritmo.tranquil.systems/ ritmo.tranquil.systems
-
-
-## Libraries I
-### Patterns
-MacPaint style pattern views for SwiftUI
-=> https://git.r.bdr.sh/rbdr/patterns Patterns source code
-
-### Serpentity
-Entity-component-system framework for Javascript
-=> https://git.r.bdr.sh/rbdr/serpentity Serpentity source code
-=> https://git.r.bdr.sh/rbdr/serpentity-lib Serpentity Shared Library source code
-=> https://www.npmjs.com/org/serpentity Serpentity @ npm
-
-## II
-
-### Grafn
-Flow based programming library for Javascript.
-=> https://git.r.bdr.sh/rbdr/grafn Grafn source code
-
-### Cologne
-Log multiplexer for Javascript with no dependencies.
-=> https://git.r.bdr.sh/rbdr/cologne Cologne source code
-
-## Plugins I
-### Flat Bezel.qsplugin
-Quicksilver UI Plugin that modernizes the classic Bezel.
-
-=> ./flat_bezel.gmi ./flat_bezel.gmi
-
-### NGINX Office Hours
-A victory for the server's labor rights: Serve nginx content only during office hours.
-
-=> ./nginx_office_hours.gmi ./nginx_office_hours.gmi
-
-### Junction
-Start audio calls in your browser from any URL. Supports Firefox, and Safari.
-
-=> https://junction.unlimited.pizza Junction
-
-## II
-### nota.nvim
-Manage periodic notes, tasks, learning and .plan files with neovim.
-
-=> ./nota.gmi ./nota.gmi
-=> https://git.r.bdr.sh/rbdr/nota.nvim nota.nvim source code
-
-### oleoboard.nvim
-Use directories as a kanban-like board with neovim.
-
-=> ./oleoboard.gmi ./oleoboard.gmi
-=> https://git.r.bdr.sh/rbdr/oleoboard.nvim nota.nvim source code
-
-## III
-### API Notation
-A syntax for notating component APIs in text documents. We provide a tree-sitter parser and a neovim plugin.
-
-=> ./api.gmi ./api.gmi
-=> https://git.r.bdr.sh/rbdr/tree-sitter-api-notation tree-sitter parser and neovim plugin.
-
-Older versions of the plugin exist for other editors, though they support an older version of the notation definition.
-
-=> https://git.r.bdr.sh/rbdr/api-notation.vim Syntax for vim
-=> https://git.r.bdr.sh/rbdr/api-notation.vscode Syntax for vscode
-=> https://git.r.bdr.sh/rbdr/api-notation-atom Syntax for atom
-=> https://git.r.bdr.sh/rbdr/api-notation.tmLanguage Syntax for sublime text
-
-## Music
-### Direct Download
-You can download music I've made via SFTP.
-
-```
-password: 8SBF7Lv#k7
-```
-
-=> sftp://music@music.r.bdr.sh
-
-### Streaming
-To listen online, you can also find it in the world wide web.
-
-=> https://myspace.bandcamp.com/ Bandcamp
-=> https://music.apple.com/de/artist/ben-beltran/1338665508?l=en Apple Music
-=> https://open.audio/channels/benbeltran/ Open Audio
+I write and record music[1], and take pictures[2] (nowadays mostly with 35mm film.)
+=> ./music.gmi [1] ./music.gmi
+=> https://pixelfed.de/minoltacos [2] photography @ pixelfed
## Pages
-### Mac File Attributes
+
(2024) A list of mac file attributes for common files
=> ./mac_file_attributes.gmi ./mac_file_attributes.gmi
-### Min Sizes
(2023) Minimum window sizes for assorted mac software
=> ./min_sizes.gmi ./min_sizes.gmi
-### SwiftBar Scripts
-SwiftBar scripts I've created.
-=> ./swiftbar_scripts.gmi ./swiftbar_scripts.gmi
-
-## Etc I
-### Lissajous
-(2024) Play with parametric curves.
-=> https://lissajous.unlimited.pizza/ lissajous.unlimited.pizza
-=> https://git.r.bdr.sh/rbdr/lissajous Lissajous source code
-
-### Prompt
-(2021) Drawing prompts on demand.
-=> https://prompt.unlimited.pizza/ prompt.unlimited.pizza
-=> https://git.r.bdr.sh/rbdr/prompt Prompt source code
-
-### Corona Regeln
-(2021) Up-to-date corona rules for Berlin. Refresh frequently.
-=> https://corona.unlimited.pizza/ corona.unlimited.pizza
-=> https://git.r.bdr.sh/rbdr/corona-regeln Corona Regeln source code
-
-## II
-### Flower
-(2018) 🌹🌸🌺💐🌼🌻🌷 draw a flower rotating a cube 🌷🌻🌼💐🌺🌸🌹
-=> https://flower.unlimited.pizza/ flower.unlimited.pizza
-
-### Sorting Hat
-(2017) Reads your brain and places you in a category based on your mental activity
-=> https://git.r.bdr.sh/rbdr/sorting-hat Sorting hat source
-=> https://git.r.bdr.sh/rbdr/sorting-hat-renderer Sorting hat renderer source code
-
-### Dasein
-(2017) Ephemeral posts experiment: the posts stay alive as the conversation continues, but disappear shortly after activity stops.
-=> https://git.r.bdr.sh/rbdr/dasein Dasein source code
-
-## III
-### Frames
-(2017) 🆒
-=> https://frames.unlimited.pizza/ frames.unlimited.pizza
-
-### Dead Drop
-(2017, Spanish) Marca un número de 📞 y deja un mensaje secreto, o escucha algo al azar.
-=> https://git.r.bdr.sh/rbdr/dead-drop Dead Drop source code
-
-### Tomato Sauce
-(2016) a random work of ansi art via telnet. Better with 24-bit enabled terminals.
-=> telnet:tomato.unlimited.pizza:6666 telnet tomato.unlimited.pizza 6666
-=> https://git.r.bdr.sh/rbdr/tomato-sauce Tomato Sauce source code
-
-## IV
-### LGTM
-(2016) Looks Good To Me! 👍
-=> https://lgtm.unlimited.pizza/ lgtm.unlimited.pizza
-=> https://git.r.bdr.sh/rbdr/lgtm lgtm source code
-
-### Heart
-(2016) ❤️💜💙💛💚
-=> https://heart.unlimited.pizza/ heart.unlimited.pizza
-
-### Generador de Insultos
-(2015, Spanish) Un generador de insultos multi-usos que te da un insulto nuevo cada vez que lo cargas.
-=> https://insultos.unlimited.pizza/ insultos.unlimited.pizza
-=> https://git.r.bdr.sh/rbdr/generador-de-insultos generador de insultos source code
-
-## V
-### Grita
-(2010, Spanish) Comparte texto anónimamente y distribuyelo con QR codes y URLs cortas.
-=> https://git.r.bdr.sh/rbdr/grita grita source code
-
-### Polarity
-(2009) Top-down arena shooter game with magnetism.
-=> ./files/polarity.zip polarity.zip
-
-### Pico Engine
-(2009) Platform game engine with lua scripting.
-=> https://git.r.bdr.sh/rbdr/pico-engine pico source code
-
## Additional Services and Links
### Git
This domain hosts all my git repositories, available on https[1] or gemini[2]. (Mirror available at sourcehut[3])
--- /dev/null
+--- title: /libraries.html
+--- description: Libraries for Rust, Swift, and Javascript written by Rubén Beltrán del Río.
+## Libraries
+Here's libraries I've written.
+* Section I is Swift and Rust.
+* Section II is JavaScript.
+=> / ⧍ Home
+
+## I
+### Patterns
+MacPaint style pattern views for SwiftUI.
+=> https://git.r.bdr.sh/rbdr/patterns ⧇ Patterns source code
+
+### gema_texto
+Parse gemtext and render HTML with Rust.
+=> https://git.r.bdr.sh/rbdr/gema_texto ⧇ gema_texto source code
+=> https://crates.io/crates/gema_texto ⊞ gema_texto @ crates.io
+
+## II
+### Serpentity
+Entity-component-system framework for Javascript
+=> https://git.r.bdr.sh/rbdr/serpentity ⧇ serpentity source code
+=> https://git.r.bdr.sh/rbdr/serpentity-lib ⧇ serpentity Shared Library source code
+=> https://www.npmjs.com/org/serpentity ⊞ serpentity @ npm
+
+### Grafn
+Flow based programming library for Javascript.
+=> https://git.r.bdr.sh/rbdr/grafn ⧇ grafn source code
+=> https://www.npmjs.com/package/grafn ⊞ grafn @ npm
+
+### Cologne
+Log multiplexer for Javascript with no dependencies.
+=> https://git.r.bdr.sh/rbdr/cologne ⧇ cologne source code
+=> https://www.npmjs.com/package/cologne ⊞ cologne @ npm
--- /dev/null
+--- title: /music.html
+--- description: Music written and performed by Rubén Beltrán del Río.
+## Music
+Here's some music I've written and recorded over the years.
+=> / ⧍ Home
+
+## I
+### Direct Download
+You can download the music I've made via SFTP. It includes the same albums you can find on Bandcamp in flac or mp3v0. You can also find my 2015 "one song a week" recordings.
+
+```
+password: 8SBF7Lv#k7
+```
+
+=> sftp://music@music.r.bdr.sh
+
+## II
+### Purchase & Stream
+You can also listen online by purchasing my albums on Bandcamp, or streaming on Apple Music. I have some additional random tracks on Open Audio.
+
+=> https://myspace.bandcamp.com/ myspace.bandcamp.com
+=> https://music.apple.com/de/artist/ben-beltran/1338665508?l=en Apple Music
+=> https://open.audio/channels/benbeltran/ Open Audio
## Changelog
+* 1.4.2 Update gema_texto to fix a regression where html links aren't updated.
+* 1.4.1 Extracts gemini parsing logic to gema_texto.
+* 1.4.0 Adds tests and uses <p> for empty lines.
* 1.3.2 Use section and p instead of div, to better support "reader mode"
* 1.3.1 Don't add closing slash to line breaks
* 1.3.0 Adds support for specifying alt-text for preformatted text blocks.
--- /dev/null
+--- title: plugins.html
+--- description: Plugins for QuickSilver, nginx and neovim written by Rubén Beltrán del Río.
+## Plugins
+Here's plugins I've written for different applications.
+* I are plugins for QuickSilver and nginx.
+* II are extensions for Firefox/Safari and SwiftBar scripts.
+* III are plugins for neovim.
+* IV is a syntax plugin for several editors.
+=> / ⧍ Home
+
+## I
+### Flat Bezel.qsplugin
+Quicksilver UI Plugin that modernizes the classic Bezel.
+
+=> ./flat_bezel.gmi ./flat_bezel.gmi
+
+### NGINX Office Hours
+A victory for the server's labor rights: Serve nginx content only during office hours.
+
+=> ./nginx_office_hours.gmi ./nginx_office_hours.gmi
+
+## II
+### Junction
+Start audio calls in your browser from any URL. Supports Firefox, and Safari.
+
+=> https://junction.unlimited.pizza Junction
+
+### SwiftBar Scripts
+SwiftBar scripts I've created.
+=> ./swiftbar_scripts.gmi ./swiftbar_scripts.gmi
+
+
+## III
+### nota.nvim
+Manage periodic notes, tasks, learning and .plan files with neovim.
+
+=> ./nota.gmi ./nota.gmi
+
+### oleoboard.nvim
+Use directories as a kanban-like board with neovim.
+
+=> ./oleoboard.gmi ./oleoboard.gmi
+
+## IV
+### API Notation
+A syntax for notating component APIs in text documents. We provide a tree-sitter parser and a neovim plugin.
+
+=> ./api.gmi ./api.gmi
+=> https://git.r.bdr.sh/rbdr/tree-sitter-api-notation tree-sitter parser and neovim plugin.
+
+Older versions of the plugin exist for other editors, though they support an older version of the notation definition.
+
+=> https://git.r.bdr.sh/rbdr/api-notation.vim Syntax for vim
+=> https://git.r.bdr.sh/rbdr/api-notation.vscode Syntax for vscode
+=> https://git.r.bdr.sh/rbdr/api-notation-atom Syntax for atom
+=> https://git.r.bdr.sh/rbdr/api-notation.tmLanguage Syntax for sublime text