acabal

Joined 16 years ago

Karma
9,174
Submissions
1,020
Member since
Aug 4
I run Scribophile, at www.scribophile.com, and Writerfolio, at writerfolio.com.

My company is called Turkey Sandwich Industries, at turkeysandwichindustries.com.

I'm also the Editor-in-Chief of Standard Ebooks, at standardebooks.org. Standard Ebooks is a volunteer-driven project dedicated to producing commercial-quality public domain ebooks edited to strict typography and coding standards for free and libre distribution.

My website is at alexcabal.com.

View on Hacker News

Recent submissions

Comment · 2 months ago
But can't they just use an xpath expression to test the computed text content of a node, like `/path/to/ad/div[contains(., 'sponsored')]`? In that expression, there could be any number of nested elements inside the terminal `<div>` and it wouldn't matter. (And you'd probably have to use a regex test to account for tricky white space.)
Comment · 3 months ago
I see this is part of the Triptych project, an attempt to, among other things, bring more verbs into HTML forms. As I've said before one of my long-time dreams is to have HTML forms support methods other than GET and POST.

Clicking on forms is how humans interact with HTTP, and for some strange reason the web has evolved to omit many very important words us humans must use to communicate. While a machine is allowed to say `DELETE /widgets/123`, a human is forced to say `POST /widgets/123/delete` or `POST /widgets/123?_method=DELETE`.

This is not only semantically incorrect, but also results in idempotency and caching issues, and, perhaps worst of all, forces developers to maintain two separate APIs: nice, well-formed REST endpoints for machines, and separate kludgy endpoints for humans, who were granted a stunted language.

Comment · 3 months ago
Butler's Odyssey and Iliad are prose translations, which we felt didn't fit the commonly understood image of those works as works of verse.
Comment · 3 months ago
SE Editor-in-Chief here. We selected the William Cullen Bryant translation because we felt that, of the public domain translations, it was the one most accessible to modern readers. We also host his translation of the Iliad.

Pope's is certainly very beautiful, but also very literary and written in a style of English that can be difficult for the average modern reader. I think that determination is well reflected in this survey. Maybe we'll do it too one day (our current collections policy declines alternate translations) - it's certainly deserving.

Comment · 3 months ago
At Standard Ebooks we use the three-em-dash to indicate a fully obscured word, for example this line from Tristram Shandy:

> He lies buried in the corner of his churchyard, in the parish of ⸻, under a plain marble slab

If we were to use three em dashes in a row, the renderer typically puts a 1-2px gap between them. Using U+2E3B leaves no gaps.

Likewise, we use a 2-em dash, U+2E3A, for partially obscured words, for example this line from Gogol's short fiction:

> The town of B⸺ had become very lively since a cavalry regiment had taken up its quarters in it.

Comment · 4 months ago
Because if HTTP is the language of the web, then HTML forms are how humans speak that language to computers. Right now we humans can only speak GET and POST.

In other words, right now if a human wants to DELETE a widget, the human has click on an HTML form to `POST /widgets/123/delete` - i.e. use an incorrect verb on an incorrect URL/object - or use some other workaround like smuggling a special `_method=DELETE` variable. This is unnatural and semantically incorrect, resulting in ugly hacks that break HTTP-level expectations like idempotency; and it also requires additional app-level logic to process.

Meanwhile a machine is allowed to simply `DELETE /widgets/123` because their interface to HTTP is not clicking on HTML forms.

We humans could converse with websites in semantically correct HTTP, have clean URLs in which both REST APIs and human-facing URLs are identical without hacks, and require no extra app/framework logic, if HTML forms simply allowed all (human-relevant) HTTP verbs.

Comment · 4 months ago
Comment · 4 months ago
Comment · 4 months ago
The gem in this post is Pure, which I haven't heard of until now. I also have my prompt show the git status, and for large repos `git status` can take 10+ seconds to load and cache.

I had no idea that you could do that asynchronously, and then have ZSH update the already printed prompt with the status later! That blows my mind!

Comment · 5 months ago
SE editor in chief here. What you describe is incorrect. The only thing we do is very light sound-alike spelling modernization, like "to-night" -> "tonight". We do not do things like change from en-GB to en-US, replace old words with different modern words, or change text for "American readers", whatever that means. I have no idea where you got that impression.

I personally worked on the Forsyte saga. If you think something was done in error, please let us know and we'll be happy to fix it.

Comment · 5 months ago
This article is rediscovering the same phenomenon that happened when the steam-powered machinery was invented, leading to the Luddite movement.

Machinery at the dawn of the industrial revolution was supposed to be a time-saving miracle that freed capitalists from having to deal with workers, and also freed workers from backbreaking labor, letting them spend their hours in the pursuit of leisure.

Of course, the opposite happened. Machinery meant workers could produce more output in the same amount of time, so they didn't work less, they worked at least the same and eventually even more to keep up with competition and the demands of consumers. It took decades of unrest and bloody conflict to give us the 8-hour workday.

This article is rediscovering that same history, but for a different class. AI is to white-collar knowledge workers what steam-powered machinery was to the rough-handed working class of the 1800s. It promises capitalists freedom from having to deal with highly-paid knowledge workers, and it promises highly-paid knowledge workers freedom from their labor so they can spend their time in the pursuit of leisure.

Look to history to see how that worked out.

Comment · 6 months ago
I've always told people, Kindles are ereaders seeming designed by people who hate books.

The renderer is atrocious and is holding back the entire industry, much like IE6's crappy renderer and monopoly on users held the entire web back a decade. Browsers (and thus ebooks, which are just HTML/CSS) can now do pretty decent typography, but Amazon inexplicably refuses to get on board with epub.

Their file formats are equally garbage. Mobi, a format that has hardly changed since circa the year 2005, was still in active use until just recently. Their other proprietary formats are confusing in feature set and are opaque to create. The official tool to create Amazon ebooks only runs on Windows![1]

Kindles still can't natively read epubs, but since they accept epubs via email, their customers get confused and email me about it. (Epubs sent via email are quietly convert to Amazon's propriety format, meaning all bets are off on the result. Good luck, publisher!)

I always tell people, buy literally any other ereader.

[1] Calibre can also create them but it's reverse-engineering and not the official implementation.

Comment · 7 months ago
The reading ease algorithm we use is the Flesh-Kincaid algorithm, which works pretty well for regular prose books but clearly fails very badly on avant-garde prose like Ulysses or As I Lay Dying.
Comment · 9 months ago
XML lost because 1) the existence of attributes means a document cannot be automatically mapped to a basic language data structure like an array of strings, and 2) namespaces are an unmitigated hell to work with. Even just declaring a default namespace and doing nothing else immediately makes your day 10x harder.

These items make XML deeply tedious and annoying to ingest and manipulate. Plus, some major XML libraries, like lxml in Python, are extremely unintuitive in their implementation of DOM structures and manipulation. If ingesting and manipulating your markup language feels like an endless trudge through a fiery wasteland then don't be surprised when a simpler, more ergonomic alternative wins, even if its feature set is strictly inferior. And that's exactly what happened.

I say this having spent the last 10 years struggling with lxml specifically, and my entire 25 year career dealing with XML in some shape or form. I still routinely throw up my hands in frustration when having to use Python tooling to do what feels like what should be even the most basic XML task.

Though xpath is nice.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton