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
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
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
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
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
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
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
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
#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
Raspberry Pi 5: Getting Started - YouTubee. | Continue reading
Reading crumbs structure: fermentation. Todays loaf and some advice after making 100+ loaves over 6 years. | Continue reading
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
The chatgpt-shell package started as an experiment glueing the ChatGPT API to an Emacs comint buffer. Over time, it grew into several packages within the same repository: shell-maker, ob-chatgpt-shell, dall-e-shell, ob-dall-e-shell, and of course chatgpt-shell itself. I'm splitti … | Continue reading
The chatgpt-shell package started as an experiment glueing the ChatGPT API to an Emacs comint buffer. Over time, it grew into several packages within the same repository: shell-maker, ob-chatgpt-shell, dall-e-shell, ob-dall-e-shell, and of course chatgpt-shell itself. I'm splitti … | Continue reading
It's been 5 years since I talked about showing/hiding Emacs dired details in style, a short post showcasing hide-details-mode (built-in) and diredfl (third-party). While my dired usage increased over the years, my dired config remained largely unchanged. Today, I'll show a new di … | Continue reading
It's been 5 years since I talked about showing/hiding Emacs dired details in style, a short post showcasing hide-details-mode (built-in) and diredfl (third-party). While my dired usage increased over the years, my dired config remained largely unchanged. Today, I'll show a new di … | Continue reading
My significant other needed to share proof of address by providing a number of bank statements for a period of time. That's easy enough to download as pdfs from the bank, but statements typically provide more personal information than the recipient requires. For a proof of addres … | Continue reading
My significant other needed to share proof of address by providing a number of bank statements for a period of time. That's easy enough to download as pdfs from the bank, but statements typically provide more personal information than the recipient requires. For a proof of addres … | Continue reading
From time to time, I want to grab a source code viewport of sorts and feed to an LLM for questioning. From Emacs, I normally use chatgpt-shell's chatgpt-shell-prompt-compose, which automatically grabs the active region. This led me to explore a few options to select a region, or … | Continue reading
From time to time, I want to grab a source code viewport of sorts and feed to an LLM for questioning. From Emacs, I normally use chatgpt-shell's chatgpt-shell-prompt-compose, which automatically grabs the active region. This led me to explore a few options to select a region, or … | Continue reading
Well-ingrained into every Emacs user is the echo area, a one-stop shop to receive any kind of message from the editor, located at the bottom of the frame. Posting messages to this area from elisp couldn't be simpler: (message "Hello world") If we want to get a little fancier, we … | Continue reading
Well-ingrained into every Emacs user is the echo area, a one-stop shop to receive any kind of message from the editor, located at the bottom of the frame. Posting messages to this area from elisp couldn't be simpler: (message "Hello world") If we want to get a little fancier, we … | Continue reading
A couple of months ago, I introduced Ready Player Mode, an Emacs major mode used to peek at media files from my beloved text editor. The goal was simple. Treat opening media files like any other file, that is, open and go. The initial implementation served me well while reviewing … | Continue reading