DaveJarvis's recent activity

  1. Comment on KeenWrite 3.6.3 in ~comp

    DaveJarvis
    Link Parent
    Completely agreed. The feature matrix was written in (R) Markdown (source) and I used KeenWrite to generate the static XHTML web page for it: keenwrite.bin \ -i index.Rmd \ -o index.xhtml \...

    Completely agreed. The feature matrix was written in (R) Markdown (source) and I used KeenWrite to generate the static XHTML web page for it:

    keenwrite.bin \
      -i index.Rmd \
      -o index.xhtml \
      --curl-quotes=rsquo \
      --variables=$(pwd)/metadata.yaml \
      --r-script=$(pwd)/bootstrap.R \
      --r-dir=$(pwd) \
      --html-head="$(pwd)/head.html" \
      --html-foot="$(pwd)/foot.html"
    

    KeenWrite's architecture uses a processor chain for document transforms, where a document is processed and fed into a subsequent processor. One such chain is Markdown → XHTML, which allows for converting Markdown to web pages. Another chain is Markdown → HTML, which is what the real-time preview panel uses in the GUI. At one point, I had the lofty XML/XSLT → Variables → R Markdown → Markdown → XHTML → TeX → PDF, but eventually eliminated XML as an input source.

    2 votes
  2. Comment on KeenWrite 3.6.3 in ~comp

    DaveJarvis
    (edited )
    Link Parent
    LaTeX, ConTeXt, LuaTeX, and such are far more powerful. See: https://keenwrite.com/blog/2025/09/08/feature-matrix/ It's another tool in the toolbox. I developed KeenWrite because I wanted to have...

    equally powerful as just using LaTeX myself

    LaTeX, ConTeXt, LuaTeX, and such are far more powerful.

    There are existing markdown-to-pdf rendering options

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

    It's another tool in the toolbox. I developed KeenWrite because I wanted to have interpolated variables at my fingertips for use within my hard sci-fi novel. As I noticed more aspects of the final document that I wanted to change, I kept adding features for my own use. Custom typography, curling straight quotes, etc. I started typesetting markdown with pandoc, ConTeXt, and bash scripts, but then wanted an editor with preview to speed up the update-build-review cycle to real-time.

    Interlinear glosses are the reason my professors first told me to learn LaTeX back in undergrad, so they're non-trivial for the field.

    If it is possible to express in a regular grammar (as https://linguistics.stackexchange.com/a/159 suggests), then it's possible to typeset with any Turing complete typesetting system, including ConTeXt. An AI-generated ConTeXt file produced some rudimentary output. Perhaps a combination of ::: class and [word]{.class} syntax could be sufficient to express an intergloss? I have no idea, I'm not a linguist.

    In any case, it would take lots of elbow grease to get it working with ConTeXt. Since LaTeX already has a solution, use LaTeX, it's the right tool for the job.

    I'm not sure whether the charts available using KeenWrite can replicate syntax trees either.

    If it can be graphed in GraphViz, then it can be graphed in KeenWrite. Here's a quick and ugly AI-generated AST for (a + b) * c.

    For my purposes, I wanted to create a family tree and inject variables for character names, which was a fairly complex graph and is the first screenshot.

    Typst didn't sacrifice power

    If Typst works for you, great! There were a number of solutions I looked at that couldn't help me write and typeset my sci-fi novel to my satisfaction. Typst and Obsidian come to mind. My pain points were interpolated variables, automatic curling of straight quotes, no registration, free, open-source, cross-platform, and a desktop app that I could modify. Neither Typst nor Obsidian hits all those checkboxes. It sounds like you have a different set of checkboxes.

    put all the documentation into pdf

    A lot of manufacturers still require shipping printed manuals with hardware (e.g., mountain-top repeaters). Print shops work best when given print-ready PDF files. So while your use case finds PDF annoying, there are cases where PDF files are still needed. Not to mention novels and other types of books, such as my Impacts Project, which was written in 99% pure CommonMark (with some pandoc-compatible div extensions).

    6 votes
  3. Comment on KeenWrite 3.6.3 in ~comp

    DaveJarvis
    Link Parent
    That's a good idea. Yes, that's an unfortunate situation. Also, custom math-heavy documents tend to be a lot more dependent on LaTeX features than what Markdown can provide. Take sub-figures and...

    I forget if I asked this in the past but: have you done any outreach to universities, PhDs and graduate students?

    That's a good idea.

    the journals generally require the original source document in LaTeX

    Yes, that's an unfortunate situation. Also, custom math-heavy documents tend to be a lot more dependent on LaTeX features than what Markdown can provide. Take sub-figures and sub-equations for example. While these could be marked up with ::: subfigure ... ::: and ::: subequation ... :::, it'd still take elbow grease to percolate the typesetting behaviour through to ConTeXt.

    Still, for non-math-intensive papers not slated for LaTeX-mandated journals, I think you're spot on that many students would like it. I'll poke around. If you have ideas where to start, do let me know.

    3 votes
  4. Comment on What programming/technical projects have you been working on? in ~comp

    DaveJarvis
    Link
    Released a new version of KeenWrite, a desktop text editor that converts Markdown files into PDF files using ConTeXt. See the user manual for sample output.

    Released a new version of KeenWrite, a desktop text editor that converts Markdown files into PDF files using ConTeXt. See the user manual for sample output.

    1 vote
  5. Comment on KeenWrite 3.6.3 in ~comp

    DaveJarvis
    (edited )
    Link
    Here's a user manual written in Markdown and typeset using ConTeXt. The source code is also available. Thoughts?

    Here's a user manual written in Markdown and typeset using ConTeXt. The source code is also available.

    Thoughts?

    6 votes
  6. Comment on A tree a minute: One man planting 1440 trees in a day in ~enviro

    DaveJarvis
    Link
    https://www.youtube.com/watch?v=EiYPGsvPNi4 From Stuart McLean's Vinyl Cafe:

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

    From Stuart McLean's Vinyl Cafe:

    Back in the bush the next day, Stephanie still couldn't crack 2000 trees, even with her modified shovel. She cornered Rob in the cook tent, "I know you aren't telling me something," she said. "I know there's a secret. Tell me the secret."

    "There isn't any secret," said Rob.

    "Of course there's a secret," said Stephanie, her voice almost hoarse with desperation. "Tell me."

    "Okay," said Rob. "Listen, there is a secret. The secret to planting more trees ... is to plant more trees."

    ...

    Stephanie thought that she had been working hard all along. Watching Rob, she wasn't so sure. He didn't listen to music. And he didn't rest or talk to people when he bagged up. And he didn't take an hour at lunch.

    ...

    "When it's time to plant," she read [Rob's note], "plant. When it's time to eat, eat. Whatever you're doing, just do it. When it's raining, you can worry about the rain all day or you can plant and make money. The rain will pass. And then it'll be dinner and then it'll be time to go to sleep. And like the rain, the night will pass too, so better that you just shut up and sleep. As for tomorrow? Tomorrow," read Stephanie, "doesn't even enter into it."

    Stephanie hit 1900 trees the next morning. Morning after that, she pounded in 2000. Two weeks would pass before she'd break the magic 2500 mark.

    3 votes
  7. Letter to Grand Chiefs

    Long ago, Cree leader Captain Swan visited the Athabasca area. In 1715, he described a scene to Hudson’s Bay Company fur trader James Knight: “... there is a Certain Gum or pitch that runs down...

    Long ago, Cree leader Captain Swan visited the Athabasca area. In 1715, he described a scene to Hudson’s Bay Company fur trader James Knight: “... there is a Certain Gum or pitch that runs down the river in such abundance that [Indians] cannot land but at certain places.” This was the first written reference to bitumen in Canada. Bitumen forms when organic matter is buried and subjected to heat and pressure over geological timescales. That organic matter was primarily algae and plants, which had sequestered carbon dioxide (CO₂) from the atmosphere by photosynthesis, thereby locking CO₂ in place, significantly reducing atmospheric CO₂ levels, and helping sustain all aerobic life.

    In 1859, John Tyndall explained how atmospheric gases absorb heat from the sun as infrared radiation. His paper details an early understanding of the greenhouse effect. Scientists have long since linked CO₂ emissions—burning refined bitumen and coal—to changing Earth’s climate. A 1912 Popular Mechanics article states, “The furnaces of the world are now burning about 2 billion tons of coal a year. When this is burned, uniting with oxygen, it adds about 7 billion tons of carbon dioxide to the atmosphere yearly. This tends to make the air a more effective blanket for the earth and raise its temperature.” A century on, we’re burning 500% more fossil fuels.

    Wishful thoughts will not prevent Earth’s global average temperature from increasing as we combust fossil fuels back into atmospheric CO₂. And while our generation reaps the rewards of inexpensive energy, our grandchildren will face the consequences of repaying this debt. A debt undermining the ancient Haudenosaunee philosophy that today’s decisions should result in a sustainable world seven generations from now.

    Building a better world for our children requires energy—yet doing so by burning fossil fuels to the point of climate destabilization twists irony into generational betrayal far removed from sustainability.

    In a 2013 experiment, University of Berkeley researchers found that breathing in a CO₂ concentration of 1,000 parts per million (ppm) indoors causes a measurable decline in intellectual capacity; at 2,500 ppm, initiative and strategic thinking declined to a dysfunctional level, which has since been corroborated by other researchers, including a 2023 meta-analysis on the short-term exposure to indoor CO₂ levels versus cognitive task performance. These cognitive effects become particularly concerning when viewed against atmospheric trends. On June 2, 2025, atmospheric CO₂ surpassed 429 ppm, a significant increase from the 318 ppm measured at Mauna Loa on June 15, 1959.

    https://i.ibb.co/yFcXJqCy/graph.png

    The graph illustrates a troubling acceleration in CO₂ emissions. At the current growth rate of 3.8 ppm per year, atmospheric CO₂ could reach 1,000 ppm in six generations (150 years). A 2021 study published in Nature emphasized the urgent need for action, stating that global oil and gas production must decline by 3% annually until 2050. Moreover, to limit warming to 1.5 °C above pre-industrial levels (1850–1900), an additional 25% of oil reserves must remain untouched.

    Against this backdrop, political leaders advocate for increased fossil fuel extraction. Danielle Smith wants to unlock Alberta’s “$14 trillion in oil wealth” to “benefit millions of Canadians for generations.”

    Short-term economic benefits derived from resource exploitation have repeatedly led to gradual, often unheeded, environmental degradation. This pattern repeatedly culminated in ecological and economic crashes, devastating the very communities who initially profited. Notable cases include Mesopotamian salinization, the Classic Maya collapse, the Ancestral Puebloan collapse, Norse Greenland settlements, Easter Island’s deforestation, the Dust Bowl, the Aral Sea’s desiccation, and the Grand Banks cod collapse. While some nations have sustainably managed resource wealth, the immediate economic pressures and political incentives that drive extraction often overshadow long-term planning.

    The question is not: “How many Canadian generations will benefit?”

    The question is: “How many generations will suffer, globally?”

    Will we learn from history? Will we set an example for the next seven generations?

    Or will we build more oil and gas pipelines, condemning our descendants to an unsustainable future?


    Hereby released into the public domain. Feel free to adapt, correct, and send to representatives.

    9 votes
  8. Comment on What dashcam do you use? in ~tech

    DaveJarvis
    Link
    Before moving from Vancouver Island to the lower mainland, I had the following installed: VIOFO Dual Dash Cam - Front and back dash cams, great resolution, excellent low-light recording Cellink...

    Before moving from Vancouver Island to the lower mainland, I had the following installed:

    Shortly after moving to the lower mainland, the rear camera filmed a vehicular stalker, who shortly thereafter received a visit from the RCMP. Without the video, I wouldn't have had any evidence.

    1 vote
  9. Comment on What programming/technical projects have you been working on? in ~comp

    DaveJarvis
    Link
    Started to move my open source projects off of GitHub, GitLab, and BitBucket. https://repo.autonoma.ca/ It's nice not being subjected to the whims, resource limits, and authentication rules of...

    Started to move my open source projects off of GitHub, GitLab, and BitBucket.

    https://repo.autonoma.ca/

    It's nice not being subjected to the whims, resource limits, and authentication rules of third-party hosts. A few programming projects of note:

    5 votes
  10. Comment on Real-time speech-to-speech translation in ~comp

  11. Comment on Real-time speech-to-speech translation in ~comp

    DaveJarvis
    (edited )
    Link Parent
    Did you see the video on StreamSpeech's GitHub? I don't know the hardware backing that demo, but it seems quite close to real-time.

    You'll likely never have a translation software that can talk back at the same speed

    Did you see the video on StreamSpeech's GitHub?

    I don't know the hardware backing that demo, but it seems quite close to real-time.

    1 vote
  12. Comment on Real-time speech-to-speech translation in ~comp

    DaveJarvis
    (edited )
    Link Parent
    2.1.1 is installed. Looks like there's no TTS for Korean, and numerous other languages. The WalkieTalkie mode translates English into Korean text just fine. Meaning, it is not quite...

    The online remark makes me think you used the v1.0

    2.1.1 is installed. Looks like there's no TTS for Korean, and numerous other languages. The WalkieTalkie mode translates English into Korean text just fine. Meaning, it is not quite speech-to-speech, yet.

    Unless I'm missing a TTS engine for Korean? If that's the case, the software should detect the desired output language and prompt to install a TTS engine.

    2 votes
  13. Real-time speech-to-speech translation

    Has anyone used a free, offline, open-source, real-time speech-to-speech translation app on under-powered devices (i.e., older smart phones)? There are a few libraries that written that...

    Has anyone used a free, offline, open-source, real-time speech-to-speech translation app on under-powered devices (i.e., older smart phones)? There are a few libraries that written that purportedly can do or help with local speech-to-speech:

    I'm looking for a simple app that can listen for English, translate into Korean (and other languages), then perform speech synthesis on the translation. Although real-time would be great, a short delay would work.

    RTranslator is awkward (couldn't get it to perform speech-to-speech using a single phone). 3PO sprouts errors like dandelions and requires an online connection.

    Any suggestions?

    6 votes
  14. Comment on Recruiting help for election day posters in ~creative

    DaveJarvis
    (edited )
    Link
    While doing some research for a recent blog post on racism, I read about Robert Paxon's analysis of the Five Stages of Fascism. There's a beautiful illustration crafted by the Council on Foreign...

    While doing some research for a recent blog post on racism, I read about Robert Paxon's analysis of the Five Stages of Fascism. There's a beautiful illustration crafted by the Council on Foreign Relations.

    As a general note, consider taking away his microphone and, instead, emphasize Harris' policies. That is, don't give Voldemort any more time in the spotlight, for the same reason the media has stopped naming people who commit mass shootings. Nickelback has sold 50 million albums. We don't need more Nickelback.

    5 votes
  15. Comment on What programming/technical projects have you been working on? in ~comp

    DaveJarvis
    (edited )
    Link
    Two related projects: KeenWrite, a FOSS destktop Markdown editor that can export to plain text, XHTML or PDF files. Recently added automatic curling of straight quotes to the preview panel....

    Two related projects:

    • KeenWrite, a FOSS destktop Markdown editor that can export to plain text, XHTML or PDF files. Recently added automatic curling of straight quotes to the preview panel.
    • NotaNexus, a collaborative PDF annotation editor that stores annotations in flat JSON files on the server. This ties into KeenWrite in that once a PDF file is created, it'll provide a way for readers to offer feedback.

    NotaNexus doesn't have any functionality, it's more sussing out feasibility at this stage. Nearly all the code was generated using a GPT. Screen shot showing a PDF rendered in the browser using PDF.js: https://i.ibb.co/H7Q7N6s/pdfjs-viewer.png

    3 votes
  16. Comment on What creative projects have you been working on? in ~creative

    DaveJarvis
    Link
    Been working on a near-future hard sci-fi novel (7+ years in the making; short-listed in an international writer's contest). It's about a woman who invents a free food distribution system and a...

    Been working on a near-future hard sci-fi novel (7+ years in the making; short-listed in an international writer's contest). It's about a woman who invents a free food distribution system and a covert government organization that uses AGI to subvert her plans to further their capitalistic regime. Along the way, the novel explores the Stop Button problem, Hume's Guillotine, and other aspects of AGI. The novel is nearly finished.

    I'm looking for alpha readers to poke some holes in the story. DM me your name and email, and I'll send you a copy.

    1 vote
  17. Comment on What is a software you wish existed? in ~comp

    DaveJarvis
    Link Parent
    The upload script deletes the annotations file (i.e., filename.yaml in the diagram). I don't need a history. For my purposes, I take the annotations and collate them into a separate document.

    Then you make some revisions and re-upload it.

    The upload script deletes the annotations file (i.e., filename.yaml in the diagram). I don't need a history. For my purposes, I take the annotations and collate them into a separate document.

  18. Comment on What is a software you wish existed? in ~comp

    DaveJarvis
    Link Parent
    I'm looking for self-hosted, not SaaS, but thank you. Also, the software is doing way too much for my needs. A simple solution without collaborative editing. From Reddit:

    I'm looking for self-hosted, not SaaS, but thank you. Also, the software is doing way too much for my needs. A simple solution without collaborative editing. From Reddit:

    We've used them for the past 4 years at my company, and from experience, the platform is hot garbage.

    1 vote
  19. Comment on What is a software you wish existed? in ~comp

    DaveJarvis
    (edited )
    Link
    A self-hosted, FOSS, online PDF editor that allows anyone with the link to annotate the PDF with sticky notes, which kick off an email notification a configurable number of hours after the last...

    A self-hosted, FOSS, online PDF editor that allows anyone with the link to annotate the PDF with sticky notes, which kick off an email notification a configurable number of hours after the last change was made. Consider the following workflow:

    1. Generate a PDF.
    2. Publish the PDF on a web server.
    3. Send a link to the PDF to an alpha or beta reader.
    4. The alpha/beta reader can suggest changes via annotations.
    5. The browser sends changes to the web server.
    6. The web server stores the changes in a json, yaml, toml, or XML flat file.
    7. A cronjob sends an email if an annotation has been added since the last time the cronjob ran and the change is older than X hours.

    When viewing the PDF, the web server loads the flat file (e.g., json file), restores the annotations on-the-fly, then sends the modified PDF back to the web browser.

    Ideally, the installation would be something like:

    1. Log in to web server (Linux).
    2. Download install script.
    3. Run install script.
    4. Install script downloads suitable binary, configures .htaccess file, and sets up cronjob.

    Stirling PDF goes part of the way. Solving the problem end-to-end would take more glue.

    See the workflow diagram (noting that the flat file format for storing the annotations doesn't matter, even CSV could work).

    2 votes