Pablo Enoc

Pablo Enoc

Software Writer

Las Vegas, NV

Recent Posts

Pablo Enoc

Pablo Enoc

Software Writer

Las Vegas, NV

The nato-region function in Emacs

Emacs never ceases to amaze me. There’s a nato-region function that converts plain text in region to NATO spelling alphabet.

It’s so Charlie-Oscar-Oscar-Lima

Reply via e-mail

Mute Words on powRSS

You can now mute words on powRSS.

Mute Words on powRSS Screenshot

It’s only available on the desktop version. Click on the settings dropdown and add the words you don’t want to see on the home feed.

Reply via e-mail

Notes on Configuring Emacs for Web Development

New computer means new configuration from scratch! Since Emacs is the mainstay program I use across devices, I want to document how I’m doing web development with it right now.

First I took the time to go over my init.el and remove anything I’m not using. I like to aim for about 100-120 lines of code on it. It’s an arbitrary number, but it makes it easy to know where things are whenever I change it. One of the drawbacks of Emacs is how fun and time consuming it can become to want to mess around with configurations, but that’s just procrastination so this limit is important to keep me in check.

Here are my notes on how I’m setting up Emacs for web development.

I’ve installed Emacs on macOS via the emacs-plus homebrew recipe. I learned about it from Alvaro Ramirez’s Awesome Emacs on macOS article.

Emacs packages

Installing Prettier

First I installed npm via homebrew:

$ brew install npm

Next, to get prettier to run in Emacs I installed it globally via npm:

$ npm i -g prettier@3.9.5

For Emacs to find the node executable, I had to update my init.el. This code synchronizes Emacs’s internal environment variables with my system user shell.

(exec-path-from-shell-initialize)

File-based Mode Inits

I’m sure I’ll update the list as I start working on other projects on this computer, but for now HTML and CSS is enough for this blog, so here’s what I added in my init.el to start web-mode when opening files with those extensions:

;; File-based mode inits
(add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.css?\\'" . web-mode))

There’s also a hook on web-mode to set some configuration and start the other minor modes:

;; Hooks 
(add-hook 'web-mode-hook
	  (lambda ()
	    (display-line-numbers-mode 1)
	    (emmet-mode 1)
	    (prettier-mode 1)
	    (setq web-mode-markup-indent-offset 2)
	    (setq web-mode-css-indent-offset 2)
	    (define-key emmet-mode-keymap (kbd "TAB") 'emmet-expand-line)))

That’s it for now! :-)

Reply via e-mail

Una computadora modesta

La compra de un nuevo dispositivo electrónico siempre ha significado un nuevo comienzo en mi vida digital. A lo largo de mi carrera he usado el mismo tipo de computadora: una laptop. De joven optaba por la portabilidad porque disfrutaba trabajar desde cafés en compañía de mis amigos. Ahora que trabajo desde mi oficina en casa, la portabilidad ya no es un factor importante, pero el hábito sigue ahí. Ayer por la tarde compré por primera vez una computadora desde que me gradué de la universidad. Opté por un MacBook Neo en color verde, con la configuración más básica. Alguna vez leí que el software moderno, a falta de optimizaciones como era costumbre en décadas pasadas, hará por defecto mal uso de la memoria: adquieres una laptop de un terabyte y las aplicaciones consumirán cada bit. Me rehuso a contribuir a ese despilfarro de recursos. En todo caso, mi trabajo consiste principalmente en editar textos y para todo lo demás uso aplicaciones web. Si los 8GB de RAM y 256GB de almacenamiento de esta computadora no son suficientes para mis necesidades como escritor y programador, algo estaré haciendo mal.

Responder por e-mail

On AI-enhanced Writing

Today Arun wrote a blog post describing an AI-enhanced writing process which got me thinking about writing in general. The following is a response which I hope can create a respectful and thoughtful discussion about the nature of writing and our responsibility as humans when it comes to embracing these tools to create work meant to be read by others.

I want to start with some disclaimers: I am not interested in reading AI writing, and last year I expressed my feelings about this. It got some traction on Hacker News if you want to read more about that there.

I also want to acknowledge that my opinions on AI writing are influenced by having had the privilege of an education that heavily emphasized writing as a skill. I am eager to see technology democratizing communication, so this is a “thinking out loud” reflection on my own assumptions.

Let’s begin.

Structuring Thought

Arun starts with two principles to get AI tools to enhance his writing:

Principle 1: don’t let the AI write any of my words

Principle 2: don’t let the AI think for me

The writing process begins with prompting Claude to create an outline of his ideas.

AI tools make this much easier now. I can copy-paste the raw notes into Claude and ask for variations: “Can you structure this into a three-part story?” or “Can you arrange this chronologically?” I keep prompting and tweaking until I have an outline I like. Then I ask for a final version, making sure it doesn’t lose any of my original ideas or add any of its own. The outline is still entirely my thinking — all the LLM has done is moved things around.

This is the first part I reject. The moving things around is precisely what thinking and writing involves. It’s where ideas are born and cultivated, shaped to become what we have in mind. The rearranging of words to capture an incipient thought is the struggle and joy of being a writer. More precisely, this restructuring process violates the second principle.

To support this claim I offer this quote from Joan Didion from her article Why I Write.

All I know about grammar is its infinite power. To shift the structure of a sentence alters the meaning of that sentence, as definitely and inflexibly as the position of a camera alters the meaning of the object photographed. Many people know about camera angles now, but not so many know about sentences. The arrangement of the words matters, and the arrangement you want can be found in the picture in your mind. The picture dictates the arrangement. The picture dictates whether this will be a sentence with or without clauses, a sentence that ends hard or a dying-fall sentence, long or short, active or passive. The picture tells you how to arrange the words and the arrangement of the words tells you, or tells me, what’s going on in the picture. Nota bene:

It tells you.

You don’t tell it.

The next step in the process describes the use of dictation tools and AI to clean it up. Henry James famously wrote this way and enough has been said about it. I agree that it can make writing more conversational and engaging.

AI Critiques

Next, Arun writes the following:

With a draft in hand, the next step is to critically evaluate whether the words I’ve spoken actually convey what I was trying to say at the outline stage.

I don’t believe software is capable of critical evaluation of human thought. Critical evaluation goes beyond the constraints and weights of a Large Language Model. It requires the cognitive and poetic sensibilities only we have. Let me offer an example.

In November of 1947, Frida Kahlo wrote a love letter to Mexican poet Carlos Pellicer, where she muses on the creation of new verbs.

Can verbs be invented? I want to give you one: I heaven you, this way my wings open wide to love you boundlessly.

Here it is in the original Spanish:

¿Se pueden inventar verbos? Quiero decirte uno: yo te cielo, así mis alas se extienden enormes para amarte sin medida.

Let’s take ChatGPT for a spin on this construction. Want to know how it responds to Frida Kahlo?

1. “Quiero decirte uno” is slightly clunky. It breaks the poetic flow a bit.

2. “Para amarte sin medida” is beautiful but also more conventional. The earlier imagery is more original.

In matters of taste, we can’t shortcut our way to developing sound value judgments. This ability remains a human faculty. And I want to clarify that this goes beyond literature and poetry. You might think technical documents or something simpler like a blog post don’t require aesthetic refinement.

To this I ask: if that’s the case, then why seek critique at all? If it truly doesn’t matter (I think it does) then why seek feedback?

And for those of us who enjoy technical writing, surely we don’t think this genre is devoid of aesthetics? Anyone who has read The C Programming Language by Brian Kernighan and Dennis Ritchie knows how important good, elegant and economical writing is to the sciences.

We seek feedback and critiques to become better writers. We want to make our ideas clear for others. My point is that if the goal is to improve our communication skills when what we have to say is meant for other humans to understand, then we necessarily must request feedback from humans.

Editing

The last step in Arun’s process involves editing by hand.

From there, I write a short list in Notion of the structural changes I want to make, and then I go through and do all of it by hand. Writing by hand forces me consider the high-level ideas and how they translate at the sentence level. It also keeps me practice critical thinking and writing, which are ultimately why I write in the first place.

But what is being edited in this case? Is it not the AI’s interpretation of your ideas, rather than the fruit of your labor as a writer?

Arun concludes with this:

The tools feel like amplifiers now. And this process leaves me confident that I’m not falling into the trap I fell into before, where I was letting AI do the thinking and writing for me.

Why I Care

Why does this matter, and why do I care?

I care because it seems as though the trap of not letting AI do the writing is still there. It will always remain as long as we continue to give it our trust in matters of taste. The web can help us come across the thoughts and ideas of others who also believe in the power of technology in service of human goals. I trust that when someone replies to something I write it’s because they took the time to read it. But I also take the time to read what you write because I trust that you wrote it.

Reply via e-mail