41554 blogs · [ { "id": "01a0d4d5-27df-723a-bff7-066407770848", "title": "agent-shell 0.78 updates", "url": "https://xenodium.com/agent-shell-0-78-updates", "published_at": "2026-09-22T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba157152ca0b", "title": "Focus windows across Emacs frames", "url": "https://xenodium.com/focus-windows-across-emacs-frames", "published_at": "2026-08-16T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba157237e521", "title": "agent-shell 0.73 updates", "url": "https://xenodium.com/agent-shell-0-73-updates", "published_at": "2026-08-15T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1572ea3f71", "title": "agent-shell 0.63 updates", "url": "https://xenodium.com/agent-shell-0-63-updates", "published_at": "2026-07-22T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1573a2a22b", "title": "ytr: YouTube radio for Emacs", "url": "https://xenodium.com/ytr-youtube-radio-for-emacs", "published_at": "2026-06-23T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1573cf9844", "title": "agent-shell 0.55 updates", "url": "https://xenodium.com/agent-shell-0-55-updates", "published_at": "2026-06-11T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba157442191b", "title": "…and then there were three (expect delays)", "url": "https://xenodium.com/and-then-there-were-three", "published_at": "2026-04-03T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1574f78ca3", "title": "agent-shell 0.47 updates", "url": "https://xenodium.com/agent-shell-0-47-1-updates", "published_at": "2026-03-12T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1575cba0ef", "title": "Bending Emacs - Episode 13: agent-shell charting", "url": "https://xenodium.com/bending-emacs-episode-13-agent-shell-charting", "published_at": "2026-03-04T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1575ddb5a0", "title": "Bending Emacs - Episode 12: agent-shell + Claude Skills", "url": "https://xenodium.com/bending-emacs-episode-12-agent-shell-claude-skills", "published_at": "2026-02-25T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1575ffb207", "title": "Ready Player cover download improvements", "url": "https://xenodium.com/ready-player-cover-download-improvements", "published_at": "2026-02-18T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1576854d4e", "title": "Bending Emacs - Episode 11: winpulse", "url": "https://xenodium.com/bending-emacs-episode-11-winpulse", "published_at": "2026-02-17T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15773e1677", "title": "Introducing winpulse", "url": "https://xenodium.com/introducing-winpulse", "published_at": "2026-02-10T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15780a680e", "title": "Film/TV bookmarks (chaos resolved)", "url": "https://xenodium.com/film-tv-bookmarks-chaos-resolved", "published_at": "2026-01-29T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15787e8386", "title": "Introducing Kitty Cards", "url": "https://xenodium.com/introducing-kitty-cards", "published_at": "2026-01-23T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15796ad66b", "title": "Bending Emacs - Episode 10: agent-shell", "url": "https://xenodium.com/bending-emacs-episode-10-agent-shell", "published_at": "2026-01-16T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1579ef93c0", "title": "Bending Emacs - Episode 9: World times", "url": "https://xenodium.com/bending-emacs-episode-9-world-times", "published_at": "2026-01-06T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba157a0fe5ee", "title": "My 2025 review as an indie dev", "url": "https://xenodium.com/my-2025-review-as-an-indie-dev", "published_at": "2025-12-30T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba157a37a73d", "title": "Journelly 1.3 released: Hello Markdown!", "url": "https://xenodium.com/journelly-1-3-released", "published_at": "2025-12-21T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba157b2f7719", "title": "agent-shell 0.25 updates", "url": "https://xenodium.com/agent-shell-0-25-updates", "published_at": "2025-12-20T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba157c1bf2f6", "title": "Bending Emacs - Episode 8: completing-read", "url": "https://xenodium.com/bending-emacs-episode-8-completing-read", "published_at": "2025-12-13T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba157ceb9935", "title": "At one with your code", "url": "https://xenodium.com/at-one-with-your-code", "published_at": "2025-12-02T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba157d497882", "title": "Bending Emacs - Episode 7: Eshell built-in commands", "url": "https://xenodium.com/bending-emacs-episode-7-eshell-built-in-commands", "published_at": "2025-11-30T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba157d5eacf6", "title": "Rinku: CLI link previews", "url": "https://xenodium.com/rinku-cli-link-previews", "published_at": "2025-11-29T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba157d96b3dd", "title": "Bending Emacs - Episode 6: Overlays", "url": "https://xenodium.com/bending-emacs-episode-6-overlays", "published_at": "2025-11-27T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba157e63115a", "title": "WhatsApp from you know where", "url": "https://xenodium.com/whatsapp-from-you-know-where", "published_at": "2025-11-24T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba157f570c48", "title": "Want a WhatsApp Emacs client? Will you fund it?", "url": "https://xenodium.com/want-a-whatsapp-emacs-client", "published_at": "2025-11-12T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba157f692913", "title": "Bending Emacs - Episode 5: Ready Player Mode", "url": "https://xenodium.com/bending-emacs-episode-5-ready-player-mode", "published_at": "2025-11-05T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba157f98d50a", "title": "agent-shell 0.17 improvements + MELPA", "url": "https://xenodium.com/agent-shell-016-improvements-melpa", "published_at": "2025-11-04T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15806bc48f", "title": "time-zones now on MELPA. Do I have your support?", "url": "https://xenodium.com/time-zones-now-on-melpa", "published_at": "2025-10-27T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15812bf4d5", "title": "Bending Emacs - Episode 4: Batch renaming files", "url": "https://xenodium.com/bending-emacs-episode-4-batch-renaming-files", "published_at": "2025-10-23T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158168aeb2", "title": "Emacs time-zones", "url": "https://xenodium.com/emacs-time-zones-mode", "published_at": "2025-10-19T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158252d383", "title": "Bending Emacs - Episode 3: Git clone (the lazy way)", "url": "https://xenodium.com/bending-emacs-episode-3-git-clone-the-lazy-way", "published_at": "2025-10-15T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1582abf583", "title": "agent-shell 0.5 improvements", "url": "https://xenodium.com/agent-shell-0-5-improvements", "published_at": "2025-10-12T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158314a7e6", "title": "Bending Emacs - Episode 2: From vanilla to your flavor", "url": "https://xenodium.com/bending-emacs-episode-2", "published_at": "2025-10-08T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15831a3747", "title": "Bending Emacs - Episode 1: Applying CLI utils", "url": "https://xenodium.com/bending-emacs-episode-1", "published_at": "2025-09-30T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158330b0d6", "title": "Introducing Emacs agent-shell (powered by ACP)", "url": "https://xenodium.com/introducing-agent-shell", "published_at": "2025-09-25T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158367d229", "title": "Introducing acp.el", "url": "https://xenodium.com/introducing-acpel", "published_at": "2025-09-14T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15846552ac", "title": "So you want ACP (Agent Client Protocol) for Emacs?", "url": "https://xenodium.com/so-you-want-acp-for-emacs", "published_at": "2025-09-09T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1584c90545", "title": "Diverted mode", "url": "https://xenodium.com/diverted-mode", "published_at": "2025-09-02T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1584e35619", "title": "Who moved my text?", "url": "https://xenodium.com/who-moved-my-text", "published_at": "2025-08-31T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1584f7b6b6", "title": "Dired buffers with media overlays", "url": "https://xenodium.com/dired-buffers-with-media-overlays", "published_at": "2025-08-29T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1585734f89", "title": "Brisket recipe", "url": "https://xenodium.com/brisket-recipe", "published_at": "2025-08-27T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1585f997c5", "title": "A tiny upgrade to the LLM model picker", "url": "https://xenodium.com/a-tiny-upgrade-to-the-llm-model-picker", "published_at": "2025-08-25T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158661010b", "title": "Emacs elevator pitch", "url": "https://xenodium.com/emacs-elevator-pitch", "published_at": "2025-08-20T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1587422820", "title": "Emacs as your video-trimming tool", "url": "https://xenodium.com/emacs-as-your-video-trimming-tool", "published_at": "2025-08-19T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15876de232", "title": "macOS dictation returns to Emacs (fix merged)", "url": "https://xenodium.com/macos-dictation-returns-to-emacs-fix-merged", "published_at": "2025-07-26T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1587886314", "title": "Writing experience: My decade with Org", "url": "https://xenodium.com/writing-experience-my-decade-with-org", "published_at": "2025-07-25T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1588655fa3", "title": "Interactive ordering of dired items", "url": "https://xenodium.com/interactive-ordering-of-dired-items", "published_at": "2025-07-24T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15895d3aab", "title": "Patching your Homebrew's Emacs Plus (macOS)", "url": "https://xenodium.com/patching-your-homebrews-emacs-plus-macos", "published_at": "2025-07-23T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1589837945", "title": "Emacs send-to (aka macOS sharing) merged upstream", "url": "https://xenodium.com/emacs-send-to-aka-macos-sharing-merged-upstream", "published_at": "2025-07-20T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158a005ca9", "title": "Mochi Invaders now on the App Store", "url": "https://xenodium.com/mochi-invaders-now-on-the-app-store", "published_at": "2025-06-30T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158a138ba9", "title": "Markdown is coming to Journelly", "url": "https://xenodium.com/markdown-is-coming-to-journelly", "published_at": "2025-06-18T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158a4212d0", "title": "EverTime available via Homebrew", "url": "https://xenodium.com/evertime-available-via-homebrew", "published_at": "2025-06-15T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158af43172", "title": "Journelly 1.2 released", "url": "https://xenodium.com/journelly-1-2-released", "published_at": "2025-06-12T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158bd131c7", "title": "Ranking Officer now on the App Store", "url": "https://xenodium.com/ranking-officer-now-on-the-app-store", "published_at": "2025-06-02T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158c93a01b", "title": "Awesome Emacs on macOS", "url": "https://xenodium.com/awesome-emacs-on-macos", "published_at": "2025-05-27T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158d41e177", "title": "Journelly 1.1 released", "url": "https://xenodium.com/journelly-1-1-released", "published_at": "2025-05-19T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158d4bf0bb", "title": "LLM text chat is everywhere. Who’s optimizing its UX?", "url": "https://xenodium.com/llm-text-chat-is-everywhere-whos-optimizing-ux", "published_at": "2025-05-18T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158df5b39d", "title": "A richer Journelly org capture template", "url": "https://xenodium.com/a-richer-journelly-org-capture-template", "published_at": "2025-05-16T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158edbe673", "title": "Journelly: like tweeting but for your eyes only (in plain text)", "url": "https://xenodium.com/journelly-like-tweeting-but-for-your-eyes-only", "published_at": "2025-05-01T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158f3aa84b", "title": "Journelly vs Emacs: Why Not Both?", "url": "https://xenodium.com/journelly-vs-emacs-why-not-both", "published_at": "2025-04-02T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba158ff98858", "title": "The Mac Observer showcases Journelly", "url": "https://xenodium.com/the-mac-observer-showcases-journelly", "published_at": "2025-03-25T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1590c95cc3", "title": "Journelly open for beta", "url": "https://xenodium.com/journelly-open-for-beta", "published_at": "2025-03-14T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159129ab67", "title": "DeepSeek, Open Router, Kagi, and Perplexity join the chat", "url": "https://xenodium.com/deepseek-open-router-kagi-and-perplexity-join-the-chat", "published_at": "2025-03-06T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1591887076", "title": "Keychron K3 Pro: F1-F12 as default macOS keys", "url": "https://xenodium.com/keychron-k3-pro-f1-f12-as-default-macos-keys", "published_at": "2025-02-20T00:00:00+00:00" }, { "id": "01a0821f-5932-7273-9b5f-fa9db7fe93a0", "title": "Raspberry Pi bookmarks", "url": "https://xenodium.com/raspberry-pi-bookmarks", "published_at": "2025-02-04T00:00:00+00:00" }, { "id": "01a0821f-5932-7273-9b5f-fa9db9746766", "title": "Alzheimer bookmarks", "url": "https://xenodium.com/alzheimer-bookmarks", "published_at": "2025-02-04T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15924aa49e", "title": "E-ink bookmarks", "url": "https://xenodium.com/e-ink-bookmarks", "published_at": "2025-02-03T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1592e9d056", "title": "Sourdough bookmarks", "url": "https://xenodium.com/sourdough-bookmarks", "published_at": "2025-02-03T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159348866e", "title": "Cardamom Buns recipe", "url": "https://xenodium.com/cardamom-buns-a-yak-shaving-story-plus-recipe", "published_at": "2025-01-30T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15940c0e13", "title": "A tour of Ready Player Mode", "url": "https://xenodium.com/a-tour-of-ready-player-mode", "published_at": "2025-01-30T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1594250d09", "title": "A platform that moulds to your needs", "url": "https://xenodium.com/a-platform-that-moulds-to-your-needs", "published_at": "2025-01-21T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15942638c7", "title": "Blogging minus the yucky bits of the modern web", "url": "https://xenodium.com/blogging-minus-the-yucky-bits-of-modern-web", "published_at": "2025-01-01T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1594c93856", "title": "symbol-overlay-mc now on MELPA", "url": "https://xenodium.com/symbol-overlay-mc-now-on-melpa", "published_at": "2024-12-28T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15953cc167", "title": "Hello emacs.tv", "url": "https://xenodium.com/hello-emacstv", "published_at": "2024-12-23T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159607a593", "title": "An experimental (e)shell pager", "url": "https://xenodium.com/an-experimental-e-shell-pager", "published_at": "2024-12-09T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15968326e5", "title": "LLM chat navigation", "url": "https://xenodium.com/llm-chat-navigation", "published_at": "2024-12-05T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1596d474ef", "title": "Awesome elisp", "url": "https://xenodium.com/awesome-elisp", "published_at": "2024-12-04T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1596df0065", "title": "ob-chatgpt-shell goes multi-model too", "url": "https://xenodium.com/ob-chatgpt-shell-goes-multi-model-too", "published_at": "2024-11-27T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba1597a1bd16", "title": "LLM iterate and insert", "url": "https://xenodium.com/llm-iterate-and-insert", "published_at": "2024-11-25T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159878f755", "title": "Toggle macOS menu bar from you know where", "url": "https://xenodium.com/toggle-macos-menu-bar-from-you-know-where", "published_at": "2024-11-22T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159930c1dc", "title": "chatgpt-shell goes offline", "url": "https://xenodium.com/chatgpt-shell-goes-offline", "published_at": "2024-11-21T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159a1599c6", "title": "chatgpt-shell goes multi-model", "url": "https://xenodium.com/chatgpt-shell-goes-multi-model", "published_at": "2024-11-20T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159a546f81", "title": "chatgpt-shell splits up", "url": "https://xenodium.com/chatgpt-shell-repo-splits-up", "published_at": "2024-11-13T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159b4b5629", "title": "Hide another detail", "url": "https://xenodium.com/hide-another-detail", "published_at": "2024-10-21T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159c0cd324", "title": "How I batch apply and save one-liners", "url": "https://xenodium.com/how-i-batch-apply-and-save-one-liners", "published_at": "2024-09-21T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159cb453e7", "title": "Emacs bubble mode", "url": "https://xenodium.com/emacs-bubble-mode", "published_at": "2024-09-19T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159d73675d", "title": "Spiffing up those echo messages", "url": "https://xenodium.com/spiffing-up-those-echo-messages", "published_at": "2024-09-11T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159d77df44", "title": "Seek and you shall find", "url": "https://xenodium.com/seek-and-you-shall-find", "published_at": "2024-09-07T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159d963460", "title": "Anki bookmarks", "url": "https://xenodium.com/anki-bookmarks", "published_at": "2024-09-04T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159e18c16b", "title": "`*scratch*` v1.3 released", "url": "https://xenodium.com/scratch-v1-3-released", "published_at": "2024-08-23T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159e3e876b", "title": "The dired abstraction", "url": "https://xenodium.com/the-dired-abstraction", "published_at": "2024-08-16T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159e979819", "title": "Ctrl-n/p everywhere. Balance restored.", "url": "https://xenodium.com/ctrl-np-everywhere-balance-restored", "published_at": "2024-08-01T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba159f5f64e8", "title": "Emacs macOS native emoji picker (revisited)", "url": "https://xenodium.com/emacs-macos-native-emoji-picker-revisited", "published_at": "2024-07-25T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15a0076bd6", "title": "Fresh Eyes 1.7 released", "url": "https://xenodium.com/fresh-eyes-17-released", "published_at": "2024-07-24T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15a0cf123b", "title": "Ready Player Mode now on MELPA", "url": "https://xenodium.com/ready-player-mode-now-on-melpa", "published_at": "2024-07-21T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15a0d5b8be", "title": "OCR those buffers", "url": "https://xenodium.com/ocr-those-buffers", "published_at": "2024-07-17T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15a1b49106", "title": "It's all up for grabs, compound with glue", "url": "https://xenodium.com/its-all-up-for-grabs-and-it-compounds", "published_at": "2024-07-14T00:00:00+00:00" }, { "id": "01a0821f-5930-734f-96d5-ba15a288d4fa", "title": "Ready Player Mode", "url": "https://xenodium.com/ready-player-mode", "published_at": "2024-07-03T00:00:00+00:00" } ] posts Claim your blog
Back to Alvaro Ramirez
Blog · corpus.blog/blogs/xenodium.com/posts

Alvaro Ramirez

xenodium.com

2026

2025

2024