HNHacker News
TopNewBestAskShowJobs

thangalin

2,920 karma · joined October 1, 2009

Seeking alpha readers for a near-future hard sci-fi story that combines elements of generally intelligent machines, hunger, agrotech, surveillance, militarized police, virtual reality, hacking, climate change, and anti-establishment.

username @ gmail

submissionscomments
thangalin··on How Markdown took over the world
> Although it sucks that markdown is not standardized

Does CommonMark count?

https://spec.commonmark.org/

thangalin··on How Markdown took over the world
I've posted my feature matrix elsewhere in this thread:

https://keenwrite.com/blog/2025/09/08/feature-matrix/

The matrix, which you can download, aims to provide an objective comparison. Any idea what features are missing, or can you qualify what makes the other text formats "better"? From my perspective, they are largely equivalent.

thangalin··on How Markdown took over the world
Can you quantify "much better"? I compiled a set of over 70 features offered by a variety of plain text formats:

https://keenwrite.com/blog/2025/09/08/feature-matrix/

Are many features missing from the list? From what I can tell, objectively, plain text formats offer largely equivalent functionality.

thangalin··on How Markdown took over the world
> For example while docbook may have some technical

https://keenwrite.com/blog/2025/09/08/feature-matrix/

I wrote the feature matrix to objectively compare plain text-based documentation formats. How do DocBook's features compare against Markdown?

thangalin··on Ushikuvirus: Newly discovered virus may offer clues to the origin of eukaryotes
My brief, illustrated history of Microbial Mats (p.10) to Multicellular Eukaryotes (p.13) may be of interest:

https://impacts.to/downloads/lowres/impacts.pdf

thangalin··on Standard Ebooks: Public Domain Day 2026 in Literature
Standard Ebooks produces exceptional quality documents. Here's my comparison against similar projects:

https://dave.autonoma.ca/blog/2020/04/11/project-gutenberg-p...

thangalin··on 2026: The Year of Java in the Terminal?
> started in a reasonable amount of time

A hasty generalization with a little confirmation bias, perhaps?

    $ time keenwrite.bin --version
    KeenWrite version 3.6.5
    Copyright 2016-2025 White Magic Software, Ltd.

    user 0m0.329s
From Claude:

> It's worth noting this is a common perception about Java, and there's some historical truth to it (especially with Swing desktop applications from the 2000s). However, the absolute statement "no Java app... ever" is the fallacy - it's an overgeneralization from limited personal experience to a universal claim.

thangalin··on 2026: The Year of Java in the Terminal?
> There is no way to get your jar + the vm into a binary.

My text editor, KeenWrite[1], offered binaries for Linux, macOS, and Windows. The Windows binary was axed due code signing costs and requiring third-party builds, rather than any technical issues with cross-platform packaging.

One way is to create self-extracting executable binaries using a tool such as warp[2]. I've built an installer script[3] (install.sh) to create platform-specific launchers. Running `time keenwrite.bin --version` on Linux shows 0.327s; after the first run, subsequent launches are quick.

[1]: https://keenwrite.com

[2]: https://github.com/kirbylink/warp

[3]: https://repo.autonoma.ca/?action=repo&repo=keenwrite.git&vie...

thangalin··on Efficient method to capture carbon dioxide from the atmosphere
> I think it’s little appreciated that high CO2 levels cause cognitive impairment

Have you been telling representatives? Here's a letter I wrote to mine:

https://pdfhost.io/v/bRJEGptatL_climate-change

thangalin··on X-ray: a Python library for finding bad redactions in PDF documents
> I haven't seen any redaction system yet that protects against this.

The linked article suggests widening redacted areas more than needed with some randomization applied to the width. Strikes me that that wouldn't do much except add a few more possible solutions.

thangalin··on X-ray: a Python library for finding bad redactions in PDF documents
https://www.argeliuslabs.com/deep-research-on-pdf-redaction-...

> Information Leaking from Redaction Marks: Even when content is properly removed, the redaction marks themselves can leak some information if not done carefully. For example, if you have a black box exactly covering a word, the length of that black box gives a clue to the word’s length (and potentially its identity).

Does X-ray employ glyph spacing attacks and try to exploit font metric leaks?

thangalin··on Logging sucks
Use events instead of repetitious logging calls.

https://dave.autonoma.ca/blog/2022/01/08/logging-code-smell/

thangalin··on Show HN: RenderCV – Open-source CV/resume generator, YAML to PDF
In tough job markets, submitting 100 résumés before getting hired is not uncommon. Of possible interest is my Creating Catchy Cover Letters blog post, which uses my Markdown editor, KeenWrite (https://keenwrite.com), to create PDF files styled to match a company's branding:

https://keenwrite.com/blog/2025/10/15/creating-catchy-cover-...

A handful of prospective managers told me that my cover letter stood out among hundreds of applicants.

Here's the full shell script I used to build cover letters (you'll need to point "theme dir" to the directory where the cover letter theme---aspiros---is found). With this script, creating a cover letter went from about 20 minutes down to 5. If you have any troubles getting it to work, contact me via https://whitemagicsoftware.com/.

    #!/usr/bin/env bash

    # This script builds a cover letter based on a company's branding. The
    # parameters include:
    #
    # $1 -- The company name as a directory, containing colours and logo.
    # $2 -- The company name (normal case).
    # $3 -- The company role (job title).
    # $4 -- The relative path to the cover letter to typeset.
    #
    # Example:
    #
    # ./build.sh corp Corporation 'Job Title' template/cover-letter.md

    readonly SCRIPT_SRC="$(dirname "${BASH_SOURCE[${#BASH_SOURCE[@]} - 1]}")"
    readonly SCRIPT_DIR="$(cd "${SCRIPT_SRC}" >/dev/null 2>&1 && pwd)"

    readonly COMPANY_DIR="${1:-template}"
    readonly COMPANY_NAME="${2:-Template}"
    readonly COMPANY_ROLE="${3:-Job Title}"
    readonly PATH_COVER_LETTER="${4:-climate/cover-letter.md}"
    readonly EMPLOYEE_NAME="${5:-Your Name}"
    readonly EMPLOYEE_ROLE="${6:-Your Role}"

    read -r COLOUR_FG COLOUR_BG COLOUR_AC < "$COMPANY_DIR/colours.txt"
    readonly COLOUR_FG COLOUR_BG COLOUR_AC

    magick \
      signature-black.png \
      -alpha extract \
      -background "#${COLOUR_AC}" \
      -alpha shape \
      -define png:color-type=6 \
      signature.png

    rm -f ${HOME}/.local/share/keenwrite/logo_svg_*.pdf

    keenwrite.bin \
      -i "${PATH_COVER_LETTER}" \
      -o cover-letter.pdf \
      --set=employer.company.name="${COMPANY_NAME}" \
      --set=employer.position.role="${COMPANY_ROLE}" \
      --set=employee.name="${EMPLOYEE_NAME}" \
      --set=employee.role="${EMPLOYEE_ROLE}" \
      --set=employee.contact.phone="555-1212" \
      --set=employee.contact.email="email@hostname" \
      --set=employee.portfolio.url="gitlab.com/YourName" \
      --set=employee.address.line.1="address 1" \
      --set=employee.address.line.2="city, province" \
      --set=employee.address.line.3="postal code" \
      --metadata="foreground=${COLOUR_FG}" \
      --metadata="background=${COLOUR_BG}" \
      --metadata="accent=${COLOUR_AC}" \
      --image-dir="${SCRIPT_DIR}/${COMPANY_DIR}" \
      --theme-dir="${HOME}/dev/java/keenwrite/themes/aspiros"

    exiftool \
      -overwrite_original_in_place \
      -Title="${EMPLOYEE_NAME}" \
      -Author="${EMPLOYEE_NAME}" \
      cover-letter.pdf
This saved me about 19 hours of work; hopefully it will save you time, as well. See also: https://xkcd.com/1205/
thangalin··on Willison on Merchant's "Copywriters reveal how AI has decimated their industry"
https://autonoma.ca/model.png

By wholly automating food distribution, from seed to delivery, we eliminate the costs of high-quality, nutritious food, relying on volunteers for infrequent system maintenance. (This requires bootstrapping capitalism; I won't dive into the details here, because it would take a book ...)

Aside, that diagram is in the novel and was drawn about ten years ago.

thangalin··on Willison on Merchant's "Copywriters reveal how AI has decimated their industry"
I'd go one step further: The problem is that we cannot build a fair and equitable socioeconomic capitalistic-driven society. Rather than complain about capitalism, I've written a near-future hard sci-fi novel that proposes and explores creating a society that doesn't rely on monetary capital to operate. My theory, which guides the plot, is that we have to look at the seeds of capitalism, namely food, and figure out how to eliminate the exchange of currency for it.

I posit that until this point in history there has never been a time where technology would allow us to grow and distribute food for free (in terms of both financial cost and labour of time). With the rise and convergence of AI, robotics, low-cost renewable energy, advances in optimal light-biomass conversion, diminishing costs on vertical farms, and self-driving vehicles, we have within our reach a way to produce food at essentially no cost.

Think through what would happen to society and our economy if food was free for anyone, anywhere. Think about the meaning of work.

If these ideas intrigue you, beta are readers wanted, see my profile for contact.

thangalin··on Size of Life
https://www.youtube.com/watch?v=KEHCCsFFIuY

Star Size Comparison 3, simply a stunning visualization.

thangalin··on Delivery robots take over Chicago sidewalks
> pneumatic tubes or underground trains

Brilliant. See Tom Scott's video about Vancouver's Rabbit Line.

https://www.youtube.com/watch?v=eMTZvA8iFgI

Speaking of Vancouver and trains, the Broadway Subway Project is currently under construction, extending an existing line nearly 6 km for $3 billion.

https://www.broadwaysubway.ca/about/stations

In my hard sci-fi novel (beta readers wanted, see profile for contact), delivery bots play key roles in the plot. For local deliveries, a community of 1,000 people was constructed with no overhead cables, allowing food delivery by drop-drones.

thangalin··on Nixtml: Static website and blog generator written in Nix
> My biggest gripe with static site generators in general is that for some reason they require the author to write their pages in something other than plain HTML.

Being the author of KeenWrite, a Markdown editor that uses YAML variables (for content and metadata), I'm biased, but here's my take:

1. Writing <p> tags for every paragraph gets tedious.

2. Markdown is succinct (**bold** vs. <strong>bold</strong>).

3. Content is easier to edit when not surrounded by angle brackets.

4. Content is more robust against markup gaffs (e.g., missing closing tags, tag typos).

5. HTML mixes structural markup with content, making design changes harder.

6. Markdown's simpler format is more portable to other output formats (PDF, ePub).

7. Markdown diffs are easier to review, and likely have fewer merge conflicts.

8. Non-technical contributors are more comfortable with Markdown.

9. Embedding metadata through meta tags is messier and harder to parse using raw HTML.

Here are a couple of blog posts written in Markdown and converted to HTML using my software:

* https://keenwrite.com/blog/2025/09/08/feature-matrix/

* https://keenwrite.com/blog/2025/10/15/creating-catchy-cover-...

The user manual is a set of Markdown documents converted to PDF (note how the words TeX and ConTeXt and LaTeX are typeset; try to do that with HTML):

* https://keenwrite.com/docs/user-manual.pdf

thangalin··on Neato vacuum robots to stop working
Neato's D-Series Botvac just works (e.g., BVD8-SD/HP). No Bluetooth. No cloud. No Wi-Fi. Zero network connectivity required. Had mine about 10 years. Replaced the battery once, probably due for another one. Still cleans well.

I don't understand the appeal of having local appliances bound to the fate of network services.

thangalin··on Voyager 1 is about to reach one light-day from Earth
Add this one to your pile:

https://www.youtube.com/watch?v=KEHCCsFFIuY

thangalin··on Voyager 1 is about to reach one light-day from Earth
At Voyager 1's velocity, it would take ~456 million years to reach the heart of the Milky Way (Sagittarius A*), some ~26,000 light-years away. That's roughly the same amount of time that has passed since the Ordovician–Silurian extinction, when volcanic eruptions released enough carbon dioxide to heat up the planet and deoxygenate the oceans, resulting in the asphyxiation of aquatic species (about 85% of all life was snuffed out). The oceans remained deoxygenated for more than three million years.
thangalin··on Voyager 1 is about to reach one light-day from Earth
https://www.youtube.com/watch?v=KEHCCsFFIuY

Try that to give him a sense of awe. Watch it on a big screen, all the way to the end.

thangalin··on The code and open-source tools I used to produce a science fiction anthology
I developed my Markdown editor, KeenWrite[0], to replace the shell scripts described in the Typesetting Markdown series[1]. KeenWrite takes in YAML document metadata (for variables), (R) Markdown documents, and generates XHTML. The XHTML is passed to ConTeXt[2] for PDF typesetting.

A feature matrix[3] compares various text formats and ecosystems for generating PDF files.

[0]: https://keenwrite.com/

[1]: https://dave.autonoma.ca/blog/2019/05/22/typesetting-markdow...

[2]: https://wiki.contextgarden.net

[3]: https://keenwrite.com/blog/2025/09/08/feature-matrix/

thangalin··on Yt-dlp: External JavaScript runtime now required for full YouTube support
For Firefox + uBlock origin users having troubles viewing YouTube, please see my previous comment for filters that may help with playback issues:

https://news.ycombinator.com/item?id=44332976

thangalin··on How to create accessible PDFs from the start
> Ideally you would of course separate the two into separate files (template + content).

Exactly: If instructions for how to style the content are in the same file as the content, then that is mixing content _with_ presentation logic. Avoiding this approach to documentation is what I alluded to in writing, "Presumably, Typst allows including styles from external sources."

thangalin··on How to create accessible PDFs from the start

    #show strong: set text(fill: blue)

    Join us for a David Lynch double
    feature with *Mulholland Drive* and
    *Inland Empire* next Tuesday
    at 8:15 PM.
I didn't realize Typst mixes content and presentation. Presumably, Typst allows including styles from external sources, much like the HTML/CSS split?

ConTeXt has also been making strides in creating accessible PDF files:

* https://meeting.contextgarden.net/2024/talks/hans+mikael/con...

* https://wiki.contextgarden.net/Input_and_compilation/Accessi...

thangalin··on Synesthesia helps me find four-leaf clovers (2023)
The main protagonist in my novel experiences synethesia. She talks about numbers having colours. To help ensure consistency throughout the novel, I developed a text editor (KeenWrite) that allows me to refer to externally defined variables within the prose, such as:

      syn_1: black
      syn_2: purple
      syn_3: red
      syn_4: gold
      syn_5: blue
      syn_6: silver
      syn_7: yellow
      syn_8: brown
      syn_11: teal
      syn_16: orange
It's tempting to change the colour map based on your abilities. How far does your colour mapping go and what other "columbers" (that's what the protagonist calls them) do you perceive?
thangalin··on Llamafile Returns
Tips:

    # Avoid issues when wine is installed.
    sudo su -c 'echo 0 > /proc/sys/fs/binfmt_misc/status'
And:

    # Capture the entirety of the instructions to obtain the input length.
    readonly INSTRUCT=$(
      join ${PATH_PREFIX_SYSTEM} ${PATH_PROMPT_SYSTEM} ${PATH_PREFIX_SYSTEM}
      join ${PATH_SUFFIX_USER} ${PATH_PROMPT_USER} ${PATH_SUFFIX_USER}
      join ${PATH_SUFFIX_ASSIST} "/dev/null" ${PATH_SUFFIX_ASSIST}
    )

    (
      echo ${INSTRUCT}
    ) | ./llamafile \
      -m "${LINK_MODEL}" \
      -e \
      -f /dev/stdin \
      -n 1000 \
      -c ${#INSTRUCT} \
      --repeat-penalty 1.0 \
      --temp 1.5 \
      --silent-prompt > output.txt
thangalin··on KeenWrite 3.6.4
A change introduced to Java (JDK-8343006[1]) prevented KeenWrite from displaying SVG files, and has been logged as a bug (JDK-8368902[2]). Side-stepping the gory details, the library KeenWrite uses to render SVG files (EchoSVG[3]) released a fix last week for this issue. This KeenWrite release upgrades to JDK 25—a long-term support (LTS) release—and EchoSVG 2.2.1, which resolves the SVG issues.

This change to the JDK ended up breaking my documents, so I can only imagine that other people encountered the same issue. My apologies. I wrote the authors of the change, informing them that their assumption that the "impact is low" was incorrect. There are unit tests attached to the JDK bug, and EchoSVG has updated its unit tests. Hopefully that will decrease the likelihood of this happening in the future.

[1]: https://bugs.openjdk.org/browse/JDK-8343006

[2]: https://bugs.openjdk.org/browse/JDK-8368902

[3]: https://github.com/css4j/echosvg/releases/tag/v2.2.1

thangalin··on Rock Tumbler Instructions
Rock tumbler enclosure, soundproofing box.
← PreviousPage 5 of 31Next →