Abbreviation: hypertext markup language

A file format for text documents. As you use the web, your browser downloads content in this format, interprets it, and presents you with a web page.

  • What’s hypertext? Basically, text with links to other text.
  • As can be seen by opening it in a text editor, the HTML of a page generally contains its readable text content. Additionally, it contains markup. This is extra information about the content’s structure, meaning, and functionality.
  • It’s a computer language. There are specific rules that define valid HTML. It can be written and read by human beings. In practice, it’s mostly computer-generated — human authors write things with tools like WordPress which, operated properly, create the appropriate additional markup on our behalf.


<h1>Definition list</h1>
<p>Let me clear up a few things.</p>
<div class="tree"></div>
<hr />

The HTML for this page. (Right click, view source.)

Learn more

Ostrich emoji

Many folks want one.

to be continued

Converting Kindle books to EPUB format

…is not easy. But it’s possible. At least, at the time of writing, and the handful of ebooks I tried so far. There are many such guides online, often incomplete. Or more accurately, out of date, because Amazon subsequently added more stumbling blocks. I shall document what worked for me, a combination of steps from various guides. Some steps may be redundant!

Continue reading “Converting Kindle books to EPUB format”

Simple static wiki [WIP]

I’m setting up a lightweight wiki for dumping notes on miscellaneous topics up to a website as a set of arbitrarily-linked pages.

Here’s my first pass solution, using the Eleventy/11ty static site generator.

11ty converts the markdown into HTML files (in folders too). It also does templating, which I’ve yet to get my head around.

The main wiki-ish thing I’m looking for is quick linking. So I’ve added a shortcode for this.

Here’s my (only) bit of config for that:

module.exports = function(eleventyConfig) {
  // Liquid Shortcode
  eleventyConfig.addShortcode("link", function(title) {
    const slug = title.toLowerCase()
      .split(" ")
    return `<a href="/${slug}">${title}</a>`;

So, {% link 'personal wiki' %} gets turned into an HTML link: <a href="/personal-wiki">personal wiki</a>

The syntax isn’t ideal. It’s kind of clunky. I’d rather have [[this style of link]], the double-square-brackets markup, used in FedWiki, Zim, and Roam, invented by UseMod, I think.

But that syntax isn’t part of any of the template languages that 11ty supports. Perhaps this can be achieved via a plugin.

Another feature I’m looking to include in this thing:

Fixing all broken links with stub pages, automatically.

I’m not commited to sticking with the 11ty way of doing this. Here are my requirements:

  • content source is a flat directory of text (markdown) files
  • output is a website usable without JavaScript in the browser… so probably not React
  • easy linking between pages

I’m not wedded to static HTML generation (but the portability of this approach makes it valuable). I’m not allergic to databases nor dynamic serverside stuff.

Hosting will be on Github Pages for now.




Beginning development with function and a DB on Begin

I wrote about my impressions with this software development platform:

View at

I expressed some confusion about certain obstacles and described some workarounds. Ryan from the project replied on Twitter and helped me towards figuring out the issues, and I’m quite satisfied with proper solutions.

I amended my post with the answers. But I think it’d be useful to have a post with only the specific ‘right’ answers, without the less-than-optimal workaround hacks there to confuse people. So, TODO.

One other mystery comes to mind, I’m not sure if the platform would support ‘unlimited’, ‘open’ url paths, e.g.

Where each of those terms between ‘/’s are pages, to be displayed lined up, Fedwiki-style.

An investigation, TODO. Along with Authentication.


Presenting the newest part of the Space publishing infrastructure: a forum!

Keep an eye on it for new content from me. It’ll integrate with the blog in yet-to-be-determined ways. You could also join… it’s in beta.

Software crisis

The major cause of the software crisis is that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem.

Edsger Dijkstra, The Humble Programmer (EWD340), Communications of the ACM

Computers and socialism

Project Cybersyn was a Chilean project from 1971–1973 during the presidency of Salvador Allende aimed at constructing a distributed decision support system to aid in the management of the national economy. The project consisted of four modules: an economic simulator, custom software to check factory performance, an operations room, and a national network of telex machines that were linked to one mainframe computer.

Slava Gerovitch, From Newspeak to Cyberspeak: A History of Soviet Cybernetics
(MIT Press, 2002)

The history of Soviet cybernetics followed a curious arc. In the 1950s it was labeled a reactionary pseudoscience and a weapon of imperialist ideology.

[Psychologist Mikhail Iaroshevskii against cybernetics originator Norbert Wiener:]

“accused Wiener of reducing human thought to formal operations with signs, and labeled cybernetics a “modish pseudo-theory” fabricated by “philosophizing ignoramuses” and “utterly hostile to the people and to science.” He went on to cite Wiener’s well-known remark that the computer revolution was “bound to devalue the human brain” in the same way that the industrial revolution had devalued the human arm. While Wiener meant his comment to be a liberal critique of capitalism, and called on having “a society based on human values other than buying and selling,” Iaroshevskii apparently interpreted it as a misanthropic escapade. “From this fantastic idea,” he wrote, “semanticists-cannibals derive the conclusion that a larger part of humanity must be exterminated.”

Then, the story goes, the USSR falls in love with computers, puts them to work processing economic data. Bureaucratic dysfunction prevents the outputs of such processing to support good decision-making. Then it collapses.

Wonder if much of the early Soviet anti-cybernetics stuff is translated.

Draft: Article 13

Note: I wanted to get this article finished and published before the protests, and before the vote. Oh well.

Last Saturday across Europe there were demonstrations and protests against proposed new EU copyright legislation. The concerning legislation concerns ‘online content-sharing service providers’, which means sites like Facebook, Twitter, YouTube, and regular web hosting companies. Right now, companies running such sites are generally not liable for copyright infringement that folks get up to using their systems.

If online services were always liable for copyright-infringing sharing performed by their users, running them would be much riskier and more expensive. Social networking and much online infrastructure, cloud services and such, would arguably not be able to exist as we know them.

So, our enlightened governments, having been convinced of the value these services provide in powering the digital economy and relieving our fellow citizens’ abysmal boredom, have exempted ‘online content-sharing service providers’ from regular burdens of copyright compliance. Under certain conditions.

To keep this special exemption, to keep out of the courts, sites need to work with copyright-owners to help reduce the infringing uses of their services. They need to follow certain practices like ‘notice and take down‘ procedures.

As a condition for limited liability online hosts must expeditiously remove or disable access to content they host when they are notified of the alleged illegality.

The massive quantity of content uploaded to big services includes, apparently, quite a lot of piracy. So copyright-owners understandably send lots and lots of takedown notices every day. They even churn them out automatically, guided by content-identification software. Copyright lawyer-bots. The sheer amount of notices is too much for online services to deal with manually, but deal with them they must! So, they too use automation on their side of the process. A decision that a certain piece of content, identified as problematic by someone‘s algorithm, should be removed or left alone is, frequently, decided by someone else’s algorithm, another machine, rather than humans.

New law expands the requirements for platforms to keep their limited liability status.

Click to access A-8-2018-0245-AM-271-271_EN.pdf

They must ‘demonstrate that they have’:

made, in accordance with high industry standards of professional diligence, best efforts to ensure the unavailability of specific works and other subject matter for which the rightholders have provided the service providers with the relevant and necessary information;

Article 17: 4. (b)

Big tech was against it. Civil rights advocates didn’t like it either. Now it’s law, or soon enough it will be.