From: Ruben Beltran del Rio Date: Sat, 7 Oct 2023 14:45:58 +0000 (+0200) Subject: Add CI + columns X-Git-Url: https://git.r.bdr.sh/rbdr/r.bdr.sh/commitdiff_plain/f752d89abc304e444ce345b634b62a4be4fb2502?ds=sidebyside Add CI + columns --- diff --git a/.build.yml b/.build.yml new file mode 100644 index 0000000..3eade29 --- /dev/null +++ b/.build.yml @@ -0,0 +1,21 @@ +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 diff --git a/_layout.html b/_layout.html index c1514ac..6a90b1a 100644 --- a/_layout.html +++ b/_layout.html @@ -24,11 +24,13 @@

- + unlimited.pizza

=> ♊️ This page is better consumed via gemini

- {{ content }} +
+ {{ content }} +
diff --git a/api.gmi b/api.gmi index d0d99ad..60cc62a 100644 --- a/api.gmi +++ b/api.gmi @@ -1,9 +1,11 @@ --- 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 @@ -17,45 +19,38 @@ NameOfClass.WithPossibleNamespace <- dispatched events (instance) :: class method # instance method - +---- Other symbols => returns #> throws [xx] optional 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 - -instance_property >>> + +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 ) => ReturnValueType #> BadTimesException,UnknownError - #update(text , [options] ) => Promise + ::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 ) + +>static_listener(parameters_expected <Bool>) ->instance_listener() - ~>network_events(peer ) + ~>network_events(peer <Networking.Peer>) // Emitted Events - <+emitted_statically(payload ) - <-emitted_by_instance(reason , code ) - <~emitted_through_network(text ) -``` - -When defining function types, you may use parameter lists, returns and throws notation as well. - -``` -HypotheticalModule - #transform( Function(payload ) => , announce ) => + <+emitted_statically(payload <StaticEventPayload>) + <-emitted_by_instance(reason <String>, code <Int>) + <~emitted_through_network(text <String>) ``` diff --git a/css/style.css b/css/style.css index dae306d..d5d2179 100644 --- a/css/style.css +++ b/css/style.css @@ -2,22 +2,50 @@ body { 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 { diff --git a/flat_bezel.gmi b/flat_bezel.gmi index b0dfeb4..b47c2ee 100644 --- a/flat_bezel.gmi +++ b/flat_bezel.gmi @@ -24,4 +24,4 @@ You may need to allow the plugin to run in "Privacy & Security" in your syst => /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 diff --git a/index.gmi b/index.gmi index 7c5b996..467b486 100644 --- a/index.gmi +++ b/index.gmi @@ -1,9 +1,10 @@ --- 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 -┬ ┬┌┐┌┬ ┬┌┬┐┬┌┬┐┌─┐┌┬┐╔═╗╦╔═╗╔═╗╔═╗ -│ │││││ │││││ │ ├┤ ││╠═╝║╔═╝╔═╝╠═╣ -└─┘┘└┘┴─┘┴┴ ┴┴ ┴ └─┘─┴┘╩ ╩╚═╝╚═╝╩ ╩ +┬ ┬┌┐┌┬ ┬┌┬┐┬┌┬┐┌─┐┌┬┐ ╔═╗╦╔═╗╔═╗╔═╗ +│ │││││ │││││ │ ├┤ ││●╠═╝║╔═╝╔═╝╠═╣ +└─┘┘└┘┴─┘┴┴ ┴┴ ┴ └─┘─┴┘ ╩ ╩╚═╝╚═╝╩ ╩ ``` The personal capsule of Rubén Beltrán del Río @@ -11,51 +12,57 @@ 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. @@ -65,14 +72,14 @@ Older versions of the plugin exist for other editors, though they support an old => 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 @@ -97,63 +104,83 @@ To listen online, you can also find it in the world wide web. => 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 --- diff --git a/lyricli.gmi b/lyricli.gmi index 455c92c..c109c87 100644 --- a/lyricli.gmi +++ b/lyricli.gmi @@ -2,14 +2,13 @@ --- 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. ``` @@ -17,7 +16,8 @@ $ brew tap rbdr/apps git@git.sr.ht:~rbdr/homebrew-apps $ 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 @@ -69,12 +69,14 @@ $ lrc --list-sources ## 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) diff --git a/min_sizes.gmi b/min_sizes.gmi index 4696147..0447bf6 100644 --- a/min_sizes.gmi +++ b/min_sizes.gmi @@ -1,4 +1,4 @@ -# 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. @@ -10,7 +10,7 @@ I use the following thresholds: * > 500 <= 800 = LARGE * > 800 = HUGE -## Browsers +### Browsers * Arc: MEDIUM, 470px * Firefox: MEDIUM, 450px * Google Chrome: MEDIUM, 500px @@ -18,13 +18,15 @@ I use the following thresholds: * 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 @@ -36,35 +38,39 @@ I use the following thresholds: * 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 @@ -78,7 +84,7 @@ I use the following thresholds: * 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 @@ -92,31 +98,35 @@ I use the following thresholds: * 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 @@ -125,10 +135,10 @@ I use the following thresholds: * 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 @@ -136,31 +146,33 @@ I use the following thresholds: * 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 @@ -172,7 +184,9 @@ I use the following thresholds: * Ulysses: LARGE, 555px * Visual Studio Code: SMALL, 400px -## Utilities +## VIII + +### Utilities * Activity Monitor: LARGE, 740px * Clock: LARGE, 600px * CrystalFetch: LARGE, 800px @@ -197,10 +211,10 @@ I use the following thresholds: * 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