--- /dev/null
+image: archlinux
+packages:
+ - make
+ - rust
+ - rsync
+sources:
+ - git@git.sr.ht:~rbdr/page
+ - git@git.sr.ht:~rbdr/unlimited.pizza
+secrets:
+ - 21c73f87-a944-4560-a616-2dfd558c72da
+tasks:
+ - build_page: |
+ cd page
+ make -e profile=release
+ - generate_page: |
+ cd unlimited.piza
+ ../page/target/release/page
+ - sync_html: |
+ rsync -r unlimited.pizza_html/ deploy@barthes.unlimited.pizza:/var/www/www
+ - sync_gemini: |
+ rsync -r unlimited.pizza_gemini/ deploy@barthes.unlimited.pizza:/var/gemini/content
<body>
<header>
<h1>
- <canvas width=100 height=100></canvas>
+ <canvas width="100" height="100"></canvas>
<a href="/">unlimited.pizza</a>
</h1>
</header>
<p><a href="gemini://gemini.unlimited.pizza">=> ♊️ This page is better consumed via gemini</a></p>
- {{ content }}
+ <main class="columned">
+ {{ content }}
+ </main>
</body>
</html>
--- title: /api.html
--- description: API Notation
-# API Notation
+## API Notation
API Notation is a language-agnostic notation to share the public API of components in code. It was created to standardize software specification documents in teams that need to review code across several languages.
+## Reference
+The notation allows describing objects or modules, with properties, events and methods along with their types.
```
// Anything after two forward slashes is a comment
NameOfClass.WithPossibleNamespace
<- dispatched events (instance)
:: class method
# instance method
-
+----
Other symbols
=> returns
#> throws
[xx] optional
<xx> data type
-
-Recommended order: class first, then sockets, then instance. Internally:
-Properties, events, methods.
```
-Or, with some examples:
+## Example
+With this artificial example, you can see how to use it for more complex cases:
```
// Definitions start with object / module / class names, with namespaces
// separated by periods. Types are marked between angular brackets.
Definitions.Models.Post
// Properties.
- +static_property <Type>
- -instance_property <Types<Can<Be<Nested>>>>
+ +static_property <Type>
+ -instance_property <Types<Can<Be<Nested>>>>
// Methods. Parameters are listed in parentheses, and comma separated.
// Optional values are inside brackets
// => defines return values
// #> defines thrown exceptions, can be comma separated.
- ::static_methods(parameter_label <Type>) => ReturnValueType #> BadTimesException,UnknownError
- #update(text <String>, [options] <GlobalOptions.tOptions>) => Promise<Void>
+ ::static_methods(parameter_label <Type>) => ReturnValueType #> BadTimesException,UnknownError
+ #update(text <String>, [options] <GlobalOptions.tOptions>) => Promise<Void>
+ // Function types can include parameter lists, returns and throws as well.
+ #transform<T>( Function<T>(payload <T>) => <T>, announce <Bool>) => <Bool>
// Listened Events
- +>static_listener(parameters_expected <Bool>)
+ +>static_listener(parameters_expected <Bool>)
->instance_listener()
- ~>network_events(peer <Networking.Peer>)
+ ~>network_events(peer <Networking.Peer>)
// Emitted Events
- <+emitted_statically(payload <StaticEventPayload>)
- <-emitted_by_instance(reason <String>, code <Int>)
- <~emitted_through_network(text <String>)
-```
-
-When defining function types, you may use parameter lists, returns and throws notation as well.
-
-```
-HypotheticalModule
- #transform<T>( Function<T>(payload <T>) => <T>, announce <Bool>) => <Bool>
+ <+emitted_statically(payload <StaticEventPayload>)
+ <-emitted_by_instance(reason <String>, code <Int>)
+ <~emitted_through_network(text <String>)
```
font-family: "Times New Roman", Times, serif;
line-height: 1.6;
letter-spacing: 0.02em;
- column-count: auto;
- column-width: 15em;
}
-header, p:first-of-type, pre:first-of-type { column-span: all }
+@media only screen and (min-width: 500px) {
+ body {
+ overflow-x: auto;
+ }
-h1, h2, h3 { font-weight: normal }
+ .columned {
+ height: calc(100vh - 180px);
+ width: max-content;
+ }
-h2 { break-before: column }
+ .columned .h2 {
+ float: left;
+ margin: 0 40px;
+ height: calc(100vh - 180px);
+ }
-p { break-inside: avoid }
+ .columned h2 {
+ width: 14.6em;
+ }
+ .columned .h3, .columned p {
+ width: 22em;
+ break-inside: prevent;
+ }
+
+ .columned pre { width: 25em }
+}
+
+blockquote, p { max-width: 45em }
+pre { max-width: 55em }
+blockquote {
+ border-left: 4px solid #ccc;
+ padding-left: 10px;
+}
+
+h1, h2, h3 { font-weight: normal }
+br { display: none }
pre {
font-family: Monaco, monospace;
font-size: 14px;
background-color: #eee;
+ overflow-x: auto;
}
canvas {
=> /files/flat_bezel/Flat_Bezel-1.1.0.qsplugin.tar.gz Flat Bezel.qsplugin 1.1.0
1.0.0 - Initial release
-=> /files/flat_bezel/Flat_Bezel-1.0.0.qsplugin.tar.gz">Flat Bezel.qsplugin 1.0.0
+=> /files/flat_bezel/Flat_Bezel-1.0.0.qsplugin.tar.gz Flat Bezel.qsplugin 1.0.0
--- title: /index.html
--- description: unlimited.pizza - ruben beltran del río surfs the internet: programming, music, fun times, hugs, bad jokes, and unlimited pizza
+##
```Unlimited Pizza
-┬ ┬┌┐┌┬ ┬┌┬┐┬┌┬┐┌─┐┌┬┐╔═╗╦╔═╗╔═╗╔═╗
-│ │││││ │││││ │ ├┤ ││╠═╝║╔═╝╔═╝╠═╣
-└─┘┘└┘┴─┘┴┴ ┴┴ ┴ └─┘─┴┘╩ ╩╚═╝╚═╝╩ ╩
+┬ ┬┌┐┌┬ ┬┌┬┐┬┌┬┐┌─┐┌┬┐ ╔═╗╦╔═╗╔═╗╔═╗
+â\94\82 â\94\82â\94\82â\94\82â\94\82â\94\82 â\94\82â\94\82â\94\82â\94\82â\94\82 â\94\82 â\94\9câ\94¤ â\94\82â\94\82â\97\8fâ\95 â\95\90â\95\9dâ\95\91â\95\94â\95\90â\95\9dâ\95\94â\95\90â\95\9dâ\95 â\95\90â\95£
+└─┘┘└┘┴─┘┴┴ ┴┴ ┴ └─┘─┴┘ ╩ ╩╚═╝╚═╝╩ ╩
```
The personal capsule of Rubén Beltrán del Río
=> /gemlog/ 📓 Blog / Gemlog
=> /pub.txt 🔑 Public GPG Key
=> gemini://gemini.unlimited.pizza/guestbook 📒 Guestbook
+=> https://pixelfed.de/minoltacos 📷 Pictures I've taken
+=> https://hachyderm.io/@myspace 💭 Social Media™
=> mailto:ruben+up@unlimited.pizza ✉️ Send me an e-mail
## Apps
-
-Do, a task manager for iOS and MacOs that makes you write a journal entry when the task is done.
+### Do
+A task manager for iOS and MacOs that makes you write a journal entry when the task is done.
=> https://do.tranquil.systems/ do.tranquil.systems
-Map, A MacOS app that lets you create wardley maps using text.
+### Map
+A MacOS app that lets you create wardley maps using text.
=> https://map.tranquil.systems/ map.tranquil.systems
-Ritmo, An iOS and MacOS app that helps you maintain a healthy balance.
-=> https://map.tranquil.systems/ ritmo.tranquil.systems
+### Ritmo
+An iOS and MacOS app that helps you maintain a healthy balance.
+=> https://ritmo.tranquil.systems/ ritmo.tranquil.systems
-Lyricli, a command line tool to print the lyrics of your current Apple Music or Spotify track
+### Lyricli
+A command line tool to print the lyrics of your current Apple Music or Spotify track
=> /lyricli.gmi ./lyricli.gmi
=> https://git.sr.ht/~rbdr/lyricli lyricli source code.
## Libraries
-
-Patterns, MacPaint style pattern views for SwiftUI
+### Patterns
+MacPaint style pattern views for SwiftUI
=> https://git.sr.ht/~rbdr/patterns Patterns source code
-Serpentity, an entity-component-system framework for Javascript
+### Serpentity
+An entity-component-system framework for Javascript
=> https://sr.ht/~rbdr/serpentity Serpentity source code
=> https://sr.ht/~rbdr/serpentity-lib Serpentity Shared Library source code
-Grafn, flow based programming library for javascript.
+### Grafn
+Flow based programming library for javascript.
=> https://git.sr.ht/~rbdr/grafn Grafn source code
-Cologne, log multiplexer for javascript with no dependencies.
+### Cologne
+Log multiplexer for javascript with no dependencies.
=> https://git.sr.ht/~rbdr/cologne Cologne source code
-## Plugins
+## Plugins I
### Flat Bezel.qsplugin
+A UI Plugin for quicksilver inspired by the classic Bezel with a modern macOS look and SF Symbols.
-A UI Plugin for quicksilver
-
-=> ./flat_bezel.gmi Flat Bezel Homepage
+=> ./flat_bezel.gmi ./flat_bezel.gmi
### API Notation
-
A syntax for notating component APIs in text documents. We provide a tree-sitter parser and a neovim plugin.
-=> ./api.gmi API Notation definition
+=> ./api.gmi ./api.gmi
=> https://git.sr.ht/~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.sr.ht/~rbdr/api-notation-atom Syntax for atom
=> https://git.sr.ht/~rbdr/api-notation.tmLanguage Syntax for sublime text
-### NGINX Office Hours
+## II
+### NGINX Office Hours
A victory for the server's labor rights: An nginx module that allows you to serve your content only during office hours.
=> https://git.sr.ht/~rbdr/ngx_http_office_hours_filter_module ngx_http_office_hours_filter_module
### Junction
-
A browser extension that lets you start audio calls on any URL.
=> https://junction.unlimited.pizza Junction
=> https://music.apple.com/de/artist/ben-beltran/1338665508?l=en Apple Music
=> https://soundcloud.com/benbeltran Soundcloud
-## More of my things
-
-=> https://pixelfed.de/minoltacos 📷 Pictures I've taken
-=> https://hachyderm.io/@myspace 💭 Social Media™
+## Etc I
-## Etc
+### Min Sizes
+(2023) Minimum window sizes for assorted mac software
+=> ./min_sizes.gmi ./min_sizes.gmi
-Page (2023): A static website generator.
+### Page
+(2023) A static website generator.
=> gemini://gemini.unlimited.pizza/gemlog/1681763713661/introducing-page.gmi Gemlog entry about page.
=> https://git.sr.ht/~rbdr/page Page source code
-Prompt (2021): Drawing prompts on demand.
+### Prompt
+(2021) Drawing prompts on demand.
=> https://prompt.unlimited.pizza/ prompt.unlimited.pizza
=> https://git.sr.ht/~rbdr/prompt Prompt source code
-Corona Regeln (2021): Up-to-date corona rules for Berlin. Refresh frequently.
+### Corona Regeln
+(2021) Up-to-date corona rules for Berlin. Refresh frequently.
=> https://corona.unlimited.pizza/ corona.unlimited.pizza
=> https://git.sr.ht/~rbdr/corona-regeln Corona Regeln source code
-Flower (2018): 🌹🌸🌺💐🌼🌻🌷 draw a flower rotating a cube 🌷🌻🌼💐🌺🌸🌹
+## II
+
+### Flower
+(2018) 🌹🌸🌺💐🌼🌻🌷 draw a flower rotating a cube 🌷🌻🌼💐🌺🌸🌹
=> https://flower.unlimited.pizza/ flower.unlimited.pizza
-Sorting Hat & Renderer (2017): Reads your brain and places you in a category based on your mental activity
+### Sorting Hat
+(2017) Reads your brain and places you in a category based on your mental activity
=> https://git.sr.ht/~rbdr/sorting-hat Sorting hat source
=> https://git.sr.ht/~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.
+### Dasein
+(2017) Ephemeral posts experiment: the posts stay alive as the conversation continues, but disappear shortly after activity stops.
=> https://git.sr.ht/~rbdr/dasein Dasein source code
-Frames (2017): 🆒
+### 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.
+### Dead Drop
+(2017, Spanish) Marca un número de 📞 y deja un mensaje secreto, o escucha algo al azar.
=> https://git.sr.ht/~rbdr/dead-drop Dead Drop source code
-Tomato Sauce (2016): a random work of ansi art via telnet. Better with 24-bit enabled terminals.
+## III
+
+### Tomato Sauce
+(2016) a random work of ansi art via telnet. Better with 24-bit enabled terminals.
=> telnet:barthes.unlimited.pizza:7777 telnet barthes.unlimited.pizza 7777
=> https://git.sr.ht/~rbdr/tomato-sauce Tomato Sauce source code
-LGTM (2016): Looks Good To Me! 👍
+### LGTM
+(2016) Looks Good To Me! 👍
=> https://lgtm.unlimited.pizza/ lgtm.unlimited.pizza
=> https://git.sr.ht/~rbdr/lgtm lgtm source code
-Heart (2016): ❤️💜💙💛💚
+### 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.
+### 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.sr.ht/~rbdr/generador-de-insultos generador de insultos source code
-Grita (2010, Spanish): Comparte texto anónimamente y distribuyelo con QR codes y URLs cortas.
+## IV
+
+### Grita
+(2010, Spanish) Comparte texto anónimamente y distribuyelo con QR codes y URLs cortas.
=> https://git.sr.ht/~rbdr/grita grita source code
-Polarity (2009): Top-down arena shooter game with magnetism.
+### Polarity
+(2009) Top-down arena shooter game with magnetism.
=> ./files/polarity.zip polarity.zip
-Pico Engine (2009): Platform game engine with lua scripting.
+### Pico Engine
+(2009) Platform game engine with lua scripting.
=> https://git.sr.ht/~rbdr/pico-engine pico source code
---
--- description: "Lyricli (lrc), a command line lyrics finder"
## lyricli (lrc)
-Command line tool that shows lyrics for your currently playing song in the command line
+Command line tool that shows lyrics for your currently playing song in the terminal, supports spotify and apple music.
=> https://git.sr.ht/~rbdr/lyricli view source.
-You may need to allow the plugin to run in "Privacy & Security" in your system settings.
-
-## Install from Homebrew
+## Install
+### Homebrew
You can install using homebrew. For direct binaries see below.
```
$ brew install lyricli
```
-## Download
+### Download
+You can also manually download a precompiled binary.
* [1] Latest (2.0.1), for both intel and apple silicon macs (larger binary)
* [2] Latest (2.0.1), only for apple silicon macs
## All Versions
+### lrc 2.0.1
lrc 2.0.1 - Fixes a segfault when there are n1 results, and incorrect behavior when results are not songs.
=> /files/lyricli/lrc-2.0.1-universal.tar.gz lrc 2.0.1 (universal)
=> /files/lyricli/lrc-2.0.1-arm64.tar.gz lrc 2.0.1 (arm64)
=> /files/lyricli/lrc-2.0.1-x86_64.tar.gz lrc 2.0.1 (x86_64)
-lrc 2.0.0 - Rebuilt to use swift 5.8 and work with the genius API instead of defunct LyricsWiki
+### lrc 2.0.0
+Rebuilt to use swift 5.8 and work with the genius API instead of defunct LyricsWiki
=> /files/lyricli/lrc-2.0.0-universal.tar.gz lrc 2.0.0 (universal)
=> /files/lyricli/lrc-2.0.0-arm64.tar.gz lrc 2.0.0 (arm64)
=> /files/lyricli/lrc-2.0.0-x86_64.tar.gz lrc 2.0.0 (x86_64)
-# Minimum Window Sizes of Mac Apps
+## Minimum Window Sizes of Mac Apps
I use tiled window managers, and some layouts work better with smaller windows, but not all mac apps can do that so this is a collection of minimum window sizes of different apps to help me find which ones are better suited for my workflow.
* > 500 <= 800 = LARGE
* > 800 = HUGE
-## Browsers
+### Browsers
* Arc: MEDIUM, 470px
* Firefox: MEDIUM, 450px
* Google Chrome: MEDIUM, 500px
* Qutebrowser: TINY, 128px
* Safari: LARGE, 575px
-## Calendars and Contacts
+### Calendars and Contacts
* Calendar: LARGE, 639px
* Cardhop: SMALL, 350px
* Contacts: MEDIUM, 498px
* Fantastical: MEDIUM, 500px; Day view only, Week (510px), Month (516px), Quarter (524px), and Year (504px) are LARGE, though may vary by toolbar icons visible.
-## Developer Tools
+## II
+
+### Developer Tools
* Console: LARGE, 600px
* Dash: LARGE, 800px
* Hex Fiend: TINY, 173px
* Thony: TINY, 73px
* WorldWideWeb: MEDIUM, 480px
-## Diagramming
+### Diagramming
* Map: TINY, 116px
* Monodraw: LARGE, 700px
* OmniGraffle: HUGE, 865px
-## Document and Book Readers
+### Document and Book Readers
* Adobe Digital Editions: LARGE, 700px
* Books: MEDIUM, 500px; Only when reading, the main window (1000px) is HUGE
* Calibre: TINY, 74px; Only when reading, the main window (570px) is LARGE
* Marked: SMALL, 400px
* Preview: LARGE, 708px
-## File Managers
+## III
+
+### File Managers
* Finder: SMALL, 316px; Without sidebar, otherwise MEDIUM at 446px
* Transmission: SMALL, 350px
* Transmit: HUGE, 880px
* VeraCrypt: LARGE, 699px
-## Home and Automation
+### Home and Automation
* Automator: MEDIUM, 500px
* Home: LARGE, 515px
* Shortcuts: LARGE, 750px
-## IDEs
+### IDEs
* Android Studio: SMALL, 340px; Welcome window (800px) is LARGE
* Max 8: TINY, 118px
* Xcode: HUGE, 960px
-## Image/3D/Publishing
+## IV
+
+### Image/3D/Publishing
* Acorn: LARGE, 800px
* Affinity Designer 2: MEDIUM, 500px; Preferences (800px) is LARGE and Account (1078px) is HUGE
* Affinity Photo 2: MEDIUM, 500px; Preferences (800px) is LARGE and Account (1078px) is HUGE
* Pixelmator Pro: LARGE, 800px
* Sketch: LARGE, 800px
-## Instant Messaging / Chat / Social Media
+### Instant Messaging / Chat / Social Media
* Adium: TINY, 73px friend list, 200px chat; Some themes scroll at 200px
* Discord: HUGE, 940px
* Facetime: LARGE, 672px
* Textual: MEDIUM, 342px
* We: TINY, 74px
-## Marketplaces
+## V
+
+### Marketplaces
* App Store: HUGE, 1000px
* Setapp: HUGE, 1100px
* Steam: HUGE, 1008px
-## Math
+### Math
* Calculator: TINY, 232px; Programmer (398px) is SMALL, Scientific (574px) is LARGE
* PCalc: SMALL, 380px
* Numi: SMALL, 310px
* Soulver: LARGE, 730px
-## Note-taking
+### Note-taking
* Bear: SMALL, 300px; With Notes (570px) and Tags (752px) it's LARGE
* Notes: MEDIUM, 500px
* Obsidian: TINY, 200px
* Stickies: TINY, 54px
-## Office Software
+### Office Software
* iAPresenter: LARGE, 700px
* Keynote: LARGE, 540px
* Numbers: LARGE, 540px; The new window (760px) is also LARGE
* OmniPlan: LARGE, 740px
* Pages: LARGE, 640px
-## Media Players
+## VI
+
+### Media Players
* IINA: SMALL, 286px
* Music: HUGE, 980px
* Odio: HUGE, 1000px
* QuickTime Player: SMALL, 326px
* Swinsian: HUGE, 870px
-## Mail
+### Mail
* Mail: LARGE, 550px; Only in column layout, otherwise 610px
-## Music Making
+### Music Making
* Ableton Live: LARGE, 800px
* Capo: LARGE, 777px
* GarageBand: SMALL, 400px
* MuseScore: HUGE, 1050px
* Reason: HUGE, 972px; The Reason companion is 1200px
-## News Readers / Bookmarks
+### News Readers / Bookmarks
* NetNewsWire: LARGE, 585px
* News: HUGE, 860px
* Pins: LARGE, 515px
* Reeder: SMALL, 320px
* Unison: LARGE, 800px
-## Password Managers
+## VII
+
+### Password Managers
* 1password: LARGE, 784px
* Bitwarden: LARGE, 680px
* KeePassX: LARGE, 558px
* Secrets: LARGE, 603px
-## Task Managers
+### Task Managers
* Do: TINY, 180px
* Reminders: SMALL, 350px
* Ritmo: TINY, 85px
* Things: SMALL, 400px
-## Terminal Emulators
+### Terminal Emulators
* iTerm 2: TINY, 70px; Size depends on font, I got down to 7 columns
* Kitty: TINY, 22px; Size depends on font, I got down to 2 columns
* Terminal: TINY, 190px; Size depends on font, I got down to 20 columns
-## Text Editors
+### Text Editors
* Atom: TINY, 73px
* BBEdit: SMALL, 311px
* Byword: SMALL, 350px
* Ulysses: LARGE, 555px
* Visual Studio Code: SMALL, 400px
-## Utilities
+## VIII
+
+### Utilities
* Activity Monitor: LARGE, 740px
* Clock: LARGE, 600px
* CrystalFetch: LARGE, 800px
* Voice Memos: LARGE, 752px
* Weather: HUGE 985px
-## Video Editing / Streaming
+### Video Editing / Streaming
* DaVinci Resolve: HUGE, 1445px
* iMovie: HUGE, 1280px
* OBS: HUGE, 867px
-## VPN
+### VPN
* NordVPN: HUGE, 902px