Emacs send-to (aka macOS sharing) merged upstream

Back in February, I asked folks on the Fediverse if I should try to contribute native macOS sharing to Emacs upstream. While folks were keen on the sharing feature, there were reservations about whether or not a macOS-only patch would be welcome upstream. While my chances of succ … | Continue reading


@xenodium.com | 1 year ago

Mochi Invaders now on the App Store

As a beginner learner of Japanese, I still need regular practice reading Kana (Hiragana and Katakana). Rather than using one of the countless existing resources, I decided to build my own little Space-Invaders-style game. No doubt I was procrastinating, but learning SpriteKit and … | Continue reading


@xenodium.com | 1 year ago

Markdown is coming to Journelly

When Journelly launched, I asked users to get in touch if they were interested in Markdown support. Since then, Markdown has by far been the most requested feature. Today, I’m excited to share that Journelly beta builds now include initial Markdown support! If you’ve been in touc … | Continue reading


@xenodium.com | 1 year ago

EverTime available via Homebrew

I typically like my macOS desktop free from distractions, which includes hiding the status bar. Having said that, I don't want to lose track of time, and for that, I built a tiny ever-present floating clock. While it's been a while since I built this clock, it's only now that I d … | Continue reading


@xenodium.com | 1 year ago

Journelly 1.2 released

What's new? Journelly v1.2 focuses exclusively on improving app accessibility. In particular: Improved VoiceOver navigation and general app experience. Improved edit layout when "Settings > Accessibility > Display & Text Size > Button Shapes" is enabled. Huge thanks to Yvonne Tho … | Continue reading


@xenodium.com | 1 year ago

Ranking Officer now on the App Store

With a handful of apps on the App Store, I like to keep an eye on their rankings and user reviews from around the world. I don't need much. Just a quick glance. A few of weeks ago, it just dawned on me that my Mac's status bar is likely the perfect place to keep this glanceable i … | Continue reading


@xenodium.com | 1 year ago

Awesome Emacs on macOS

While GNU/Linux had been my operating system of choice for many years, these days I'm primarily on macOS. Lucky for me, I spend most of my time in Emacs itself (or a web browser), making the switch between operating systems a relatively painless task. I build iOS and macOS apps f … | Continue reading


@xenodium.com | 1 year ago

Journelly 1.1 released

Journelly 1.1 available on the App Store What is Journelly? Journelly feels like tweeting but for your eyes only. A fresh take on frictionless note-taking for iOS, powered by Org plain text. Save cooking recipes, movies, music, restaurants, coffee shops… Jot down your thoughts. S … | Continue reading


@xenodium.com | 1 year ago

LLM text chat is everywhere. Who’s optimizing its UX?

When it comes to programming LLM tools, I've seen modes of interaction in the form of code completion, patch application, improvement suggestions, and text chat amongst others. Text chat is everywhere. In the context of text chat UX, I haven't really come across huge differentiat … | Continue reading


@xenodium.com | 1 year ago

A richer Journelly org capture template

In addition to including user content, Journelly entries typically bundle a few extra details like timestamp, location, and weather information, which look a little something like this: Behind the scenes, Journelly entries follow a fairly simple org structure: * [2025-04-23 Wed 1 … | Continue reading


@xenodium.com | 1 year ago

Journelly: like tweeting but for your eyes only (in plain text)

On iOS, we're spoiled for choice when it comes to note-taking, journaling, or social media apps. In note-taking alone, I've flip-flopped back and forth between different note-taking and journaling apps. For one reason or another, none would stick. My initial attempt at building s … | Continue reading


@xenodium.com | 1 year ago

Journelly for iOS

Like tweeting but for your eyes only ✨ frictionless notes / journal ✨ 🍦 backed by plain text 🍦 🫧 fully offline 🫧 💬 what folks are saying 💬 Privacy first By default, all notes and media are stored on your iPhone, entirely offline. A … | Continue reading


@xenodium.com | 1 year ago

My projects

Hi, I’m Álvaro 👋. These are my projects. Web lmno.lol - Start your blog here (no ads, tracking, paywalls, or bloat). Powered by a single markdown file. Drag and drop to the web. Bring your domain. My xenodium.com blog is hosted at lmno.lol. iOS Flat Habits Inspired by Ato … | Continue reading


@xenodium.com | 1 year ago

Flat Habits for iOS

Form and track positive lasting habits built with 💙 by me - powered by org 🦄 Why Keeping habits accessible and trackable has helped me form good habits. I built an app to remove friction from the tracking process, so I could increase the likelihood of sticking wit … | Continue reading


@xenodium.com | 1 year ago

Plain Org for iOS

4.7 / 5 ★★★★★ Bring org to your iPhone built with 💙 by me - powered by org 🦄 Why? Org mode on Emacs is wonderful. I'm a big fan and use it regularly on my laptop. As an iPhone user, I wanted quick access to my org files while on the go... so I built Plain Org for … | Continue reading


@xenodium.com | 1 year ago

Journelly vs Emacs: Why Not Both?

JTR recently posted an interesting question in response to Irreal's post wondering why he feels the need to use something that is not Emacs for quick notes? While I'm in no position to speak on behalf of Irreal, I am the Ramírez building this Journelly app he speaks of ;-) From m … | Continue reading


@xenodium.com | 1 year ago

The Mac Observer showcases Journelly

The Mac Observer is showcasing Monday App Finder: Journelly, a Twitter-Like Journal for iOS. Bemfica de Oliva does a wonderful rundown of Journelly's features and capabilities, much better than anything else I've posted before. They even mentioned Org markup and Emacs text editor … | Continue reading


@xenodium.com | 1 year ago

Journelly open for beta

I've reignited Journelly, my note-taking/journaling project. The iOS app is coming along nicely. I've been using Journelly daily. The best I can describe the experience is: "kinda like tweeting but for my eyes only". Journelly automatically includes date and time in your entries. … | Continue reading


@xenodium.com | 1 year ago

DeepSeek, Open Router, Kagi, and Perplexity join the chat

Back in November, I announced the chatgpt-shell Emacs package going offline. In real terms, it meant adding Ollama support after chatgpt-shell went multi-model. Since then, support for a handful of providers and models has been added. While DeepSeek is the latest joinee, Open Rou … | Continue reading


@xenodium.com | 1 year ago

Keychron K3 Pro: F1-F12 as default macOS keys

After resetting my Keychron K3 Pro, my F1 to F12 keys were no longer my default macOS keys. The entire row was defaulting to macOS's special keys (i.e. Mission Control, Launch Pad, Volume, etc). At first, I thought I may just need to revisit the macOS setting "Use F1, F2, etc key … | Continue reading


@xenodium.com | 1 year ago

Alzheimer bookmarks

#NYC #Alzheimer's Association hybrid event (in-person and Zoom). Dementia Training Australia (DTA), Free online courses and resources. Woman claims Alzheimer’s symptoms were reversed after five years | CNN. | Continue reading


@xenodium.com | 1 year ago

Raspberry Pi bookmarks

Raspberry Pi 5: Getting Started - YouTubee. | Continue reading


@xenodium.com | 1 year ago

Sourdough bookmarks

Reading crumbs structure: fermentation. Todays loaf and some advice after making 100+ loaves over 6 years. | Continue reading


@xenodium.com | 1 year ago

E-ink bookmarks

cPiArtFrame. DIY E-Ink clock update with more faces, github repo & full youtube tutorial. Show HN: E-Paper 7-color display showing the current weather | Hacker News. | Continue reading


@xenodium.com | 1 year ago

A tour of Ready Player Mode

Ready Player Mode, which began as a tiny media-viewing experiment, has now become my daily music player. Along the way, I moved from regular daily streaming to buying and playing music offline, relying on the odd streaming service exclusively for discovery. This setup's been work … | Continue reading


@xenodium.com | 1 year ago

Cardamom Buns recipe

Buns 150 ml milk 2 tsp instant yeast (2.25 tsp active-dry yeast, 17.5g fresh yeast) 1 large egg 1 egg yolk 50 grams sugar 1/2 tsp vanilla extract 1/2 tsp ground cardamom 1/2 tsp salt 375 grams all-purpose or bread flour 57 grams unsalted butter, softened Filling 71 grams unsalted … | Continue reading


@xenodium.com | 1 year ago

A platform that moulds to your needs

Emacs users may be known for bringing in all sorts of diverse workflows into their beloved text editor. From the outside, I get how odd this may seem. We often treat our text editor as a platform of sorts to do our email, web browsing, calendars, project management, chat… the lis … | Continue reading


@xenodium.com | 1 year ago

Blogging minus the yucky bits of the modern web

Happy New Year! If you follow my blog, you may have noticed that I've been hosting it on lmno.lol for a while now, a blogging service I built (invitation-only until now). #+ATTR_HTML: :width 90% Why build a blogging platform There's been a resurgence in blogging of sorts. Wonder … | Continue reading


@xenodium.com | 1 year ago

Blogging minus the yucky bits of the modern web

Happy New Year! If you follow my blog, you may have noticed that I've been hosting it on lmno.lol for a while now, a blogging service I built (invitation-only until now). #+ATTR_HTML: :width 90% Why build a blogging platform There's been a resurgence in blogging of sorts. Wonder … | Continue reading


@xenodium.com | 1 year ago

symbol-overlay-mc now on MELPA

Some time ago, I wrote about adding multiple cursor support to symbol-overlay by gluing the two packages together. If you're keen to learn how to bend Emacs to your way, have a look at that post. Later on, in a "Multiple cursors - how and why?" Reddit post, I showcased the overla … | Continue reading


@xenodium.com | 1 year ago

symbol-overlay-mc now on MELPA

Some time ago, I wrote about adding multiple cursor support to symbol-overlay by gluing the two packages together. If you're keen to learn how to bend Emacs to your way, have a look at that post. Later on, in a "Multiple cursors - how and why?" Reddit post, I showcased the overla … | Continue reading


@xenodium.com | 1 year ago

Hello emacs.tv

A few days ago, Sacha Chua mentioned how cool it would be to have an Emacs video index like Ruby Video. I mentioned how I had similarly considered a low-tech solution, maybe powered by plain text (bonus points for org mode of course). A little later, Sacha shared a preliminary vi … | Continue reading


@xenodium.com | 1 year ago

Hello emacs.tv

A few days ago, Sacha Chua mentioned how cool it would be to have an Emacs video index like Ruby Video. I mentioned how I had similarly considered a low-tech solution, maybe powered by plain text (bonus points for org mode of course). A little later, Sacha shared a preliminary vi … | Continue reading


@xenodium.com | 1 year ago

An experimental (e)shell pager

These days, my LLM interactions primarily take place via chatgpt-shell's compose UX. I've grown fond of this hybrid style of interaction. On sharing the latest incarnation, jllw asked about the possibility to port to comint shells. With jllw's great idea in mind, I set out to pro … | Continue reading


@xenodium.com | 1 year ago

An experimental (e)shell pager

These days, my LLM interactions primarily take place via chatgpt-shell's compose UX. I've grown fond of this hybrid style of interaction. On sharing the latest incarnation, jllw asked about the possibility to port to comint shells. With jllw's great idea in mind, I set out to pro … | Continue reading


@xenodium.com | 1 year ago

LLM chat navigation

LLM chats are often handy for refining answers to a question or task, part of a bigger goal. Navigating the chat transcript, copying and pasting, can be a frequent operation in the bigger goal. If we can do it more efficiently, the better. While chatgpt-shell offered chatgpt-shel … | Continue reading


@xenodium.com | 1 year ago

LLM chat navigation

LLM chats are often handy for refining answers to a question or task, part of a bigger goal. Navigating the chat transcript, copying and pasting, can be a frequent operation in the bigger goal. If we can do it more efficiently, the better. While chatgpt-shell offered chatgpt-shel … | Continue reading


@xenodium.com | 1 year ago

Awesome elisp

A few days ago, redditor gollyned asked about best practices: developing on top of modern elisp packages. It reminded of my modern Emacs lisp libraries post, which I shared with them. While my post is roughly 4.5 years old, these days I continue to reach out to the likes of seq.e … | Continue reading


@xenodium.com | 1 year ago

Awesome elisp

A few days ago, redditor gollyned asked about best practices: developing on top of modern elisp packages. It reminded of my modern Emacs lisp libraries post, which I shared with them. While my post is roughly 4.5 years old, these days I continue to reach out to the likes of seq.e … | Continue reading


@xenodium.com | 1 year ago

ob-chatgpt-shell goes multi-model too

A week ago, I announced chatgpt-shell going multi-model. What I failed to mention is that because ob-chatgpt-shell (its org babel Emacs cousin) relies on chatgpt-shell, this babel package has now gone multi-model also. ob-chatgpt-shell follows the familiar babel form. To swap mod … | Continue reading


@xenodium.com | 1 year ago

ob-chatgpt-shell goes multi-model too

A week ago, I announced chatgpt-shell going multi-model. What I failed to mention is that because ob-chatgpt-shell (its org babel Emacs cousin) relies on chatgpt-shell, this babel package has now gone multi-model also. ob-chatgpt-shell follows the familiar babel form. To swap mod … | Continue reading


@xenodium.com | 1 year ago

LLM iterate and insert

chatgpt-shell includes a couple of mechanisms to operate on an Emacs buffer region. That is, select a region and ask the LLM robots to modify it for us. Until now, both of these mechanisms didn't quite close the loop. They could either modify current region or iterate on a separa … | Continue reading


@xenodium.com | 1 year ago

LLM iterate and insert

chatgpt-shell includes a couple of mechanisms to operate on an Emacs buffer region. That is, select a region and ask the LLM robots to modify it for us. Until now, both of these mechanisms didn't quite close the loop. They could either modify current region or iterate on a separa … | Continue reading


@xenodium.com | 1 year ago

Toggle macOS menu bar from you know where

I'm a fan of macOS's auto-hide menu bar setting. Unless I'm reaching out to a menu item, I don't typically need to have a visible menu bar, so I set auto-hide to "Always". On rare occasions, I turn this setting off (say for a screen grab). While reaching out to macOS Control Cent … | Continue reading


@xenodium.com | 1 year ago

Toggle macOS menu bar from you know where

I'm a fan of macOS's auto-hide menu bar setting. Unless I'm reaching out to a menu item, I don't typically need to have a visible menu bar, so I set auto-hide to "Always". On rare occasions, I turn this setting off (say for a screen grab). While reaching out to macOS Control Cent … | Continue reading


@xenodium.com | 1 year ago

chatgpt-shell goes offline

Since chatgpt-shell going multi-model, it was only a matter of time until we added support for local/offline models. As of version 2.0.6, chatgpt-shell has a basic Ollama implementation (llama3.2 for now). chatgpt-shell is more than a shell. Check out the demos in the previous po … | Continue reading


@xenodium.com | 1 year ago

chatgpt-shell goes offline

Since chatgpt-shell going multi-model, it was only a matter of time until we added support for local/offline models. As of version 2.0.6, chatgpt-shell has a basic Ollama implementation (llama3.2 for now). chatgpt-shell is more than a shell. Check out the demos in the previous po … | Continue reading


@xenodium.com | 1 year ago

chatgpt-shell goes multi-model

Over the last few months, I've been chipping at implementing chatgpt-shell's most requested and biggest feature: multi-model support. Today, I get to unveil the first two implementations: Anthropic's Claude and Google's Gemini. Changing course In the past, I envisioned a differen … | Continue reading


@xenodium.com | 1 year ago