hachoir VS KeenWrite

Compare hachoir vs KeenWrite and see what are their differences.

hachoir

Hachoir is a Python library to view and edit a binary stream field by field (by vstinner)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
hachoir KeenWrite
3 6
586 -
- -
6.4 -
3 months ago -
Python
GNU General Public License v3.0 only -
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

hachoir

Posts with mentions or reviews of hachoir. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-15.
  • Magika: AI powered fast and efficient file type identification
    15 projects | news.ycombinator.com | 15 Feb 2024
    https://github.com/vstinner/hachoir/blob/main/hachoir/subfil...

    File signature:

  • Kaitai Struct: A new way to develop parsers for binary structures
    12 projects | news.ycombinator.com | 17 Mar 2022
    I contributed a number of file formats a few years ago (and attempted numerous others) but ran into a number of problems with certain file formats:

    1. It's not possible to read from the file until a multiple byte termination sequence is detected. [1]

    2. You can't read sections of a file where the termination condition is the presence of a sequence of bytes denoting the next unrelated section of the file (and you don't want to consume/read these bytes) [2]

    3. The WebIDE at the time couldn't handle very large file format specifications such as Photoshop (PSD) [3]

    4. Files containing compressed or encrypted sections require a compression/encryption algorithm to be hardcoded into Kaitai struct libraries for each programming language it can output to.

    The WebIDE I particularly liked as it makes it easy to get started and share results. I also liked how Kaitai Struct allows easy definition of constraints (simple ones at least) into the file format specification so that you can say "this section of the file shall have a size not exceeding header.length * 2 bytes".

    Some alternative binary file format specification attempts for those interested in seeing alternatives, each with their own set of problems/pros/cons:

    1. 010 Editor [4]

    2. Synalysis [5]

    3. hachoir [6]

    4. DFDL [7]

    [1] https://github.com/kaitai-io/kaitai_struct/issues/158

    [2] https://github.com/kaitai-io/kaitai_struct/issues/156

    [3] https://raw.githubusercontent.com/davidhicks/kaitai_struct_f...

    [4] https://www.sweetscape.com/010editor/repository/templates/

    [5] https://github.com/synalysis/Grammars

    [6] https://github.com/vstinner/hachoir/tree/main/hachoir/parser

    [7] https://github.com/DFDLSchemas/

  • PyWhat: Identify Anything
    8 projects | news.ycombinator.com | 16 Jun 2021
    Another one sort of related is hachoir, and specifically the hachoir-metadata script: https://github.com/vstinner/hachoir

KeenWrite

Posts with mentions or reviews of KeenWrite. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-14.
  • Show HN: I made a tool to clean and convert any webpage to Markdown
    17 projects | news.ycombinator.com | 14 Apr 2024
    I wrote a series of blog posts about typesetting Markdown using pandoc:

    https://dave.autonoma.ca/blog

    I found pandoc on its own to be a little limiting:

    * Awkward to use interpolated variables within prose.

    * No real-time preview prior to rendering the final document.

    * Limited options for TeX support (e.g., SVG vs. inline; ConTeXt vs. LaTeX).

    * Inconsistent syntax for captions and cross-references.

    For my purposes, I wanted to convert variable-laden Markdown and R Markdown to text, XHTML, and PDF formats. Eventually I replaced my tool chain of yamlp + pandoc + knitr with an integrated FOSS cross-platform desktop editor.

    https://keenwrite.com/

    KeenWrite uses flexmark-java + Renjin to provide a solution that can replace pandoc + knitr.

    Note how the captions and cross-reference syntax for images, tables, and equations is unified to use a double-colon sigil:

    https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/docs/ref...

  • Magika: AI powered fast and efficient file type identification
    15 projects | news.ycombinator.com | 15 Feb 2024
  • Ask HN: What's the best way to write a book in Markdown?
    4 projects | news.ycombinator.com | 12 Nov 2023
    My Typesetting Markdown series[1] describes crafting shell scripts to cobble together pandoc, knitr, math, ConTeXt, and YAML-based interpolated variables to produce PDF files.

    For my sci-fi novel, my character sheet was inside of a spreadsheet. It dawned on me that the character sheet could be replaced with a YAML file and integrated with a Markdown editor. I developed KeenWrite[2] to replace the scripts while allowing me to use interpolated variables and R inside of the prose.

    My novel has two separate timelines and I wanted to make sure that dates lined up correctly without having to do the date math manually. I implemented a number date functions in R[3] based around an "anchor" date. As long as all my other dates are relative (in days) to the anchor date, all the math checks out. Possessives and pronouns are also handled in R (meaning I can change a character's gender by changing a single variable, provided I haven't referenced any sex-specific body parts or characteristics).

    Also, I wanted a nice-looking PDF file to send to alpha readers (more wanted, see profile). For that, I crafted KeenWrite Themes[4] along with a video tutorial series showing how all the software components work together.

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

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

    [3]: https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/R/conver...

    [4]: https://gitlab.com/DaveJarvis/keenwrite-themes/

    [5]: https://www.youtube.com/playlist?list=PLB-WIt1cZYLm1MMx2FBG9...

  • Show HN: Generate pdf with gitbook or mdbook url
    6 projects | news.ycombinator.com | 11 Nov 2023
    I developed KeenWrite[0] with similar ideas to mdbook: typeset into PDF from Markdown. Technically, this happens in three stages. First, the Markdown is converted to XHTML. Second, the XHTML is converted to TeX commands. Third, the ConTeXt typesetting system produces a PDF file. Both the GUI and CLI can export to PDF.[1]

    Like mdbook, the themes are isolated. Instead of CSS, KeenWrite themes are written in ConTeXt. There are several example starter themes.[2] A "thesis" theme would be a nice addition, but there's a problem.

    Markdown lacks a standard for cross-references and citations. An open KeenWrite issue animates a possible UX solution.[3] The topic of references/citations has been discussed on CommonMark[4] without much movement. Parsing cross-references and citations would benefit flexmark-java[5] integrations. KeenWrite uses flexmark-java, but I'm otherwise unaffiliated. If anyone is interested in helping, reach out (see profile).

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

    [1]: https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/docs/cmd...

    [2]: https://gitlab.com/DaveJarvis/keenwrite-themes/

    [3]: https://gitlab.com/DaveJarvis/KeenWrite/-/issues/145

    [4]: https://talk.commonmark.org/t/cross-references-and-citations...

    [5]: https://github.com/vsch/flexmark-java

  • The Windows installer of ImageMagick will no longer be signed
    9 projects | news.ycombinator.com | 28 Oct 2023
    My desktop text editor, KeenWrite, uses Wine, rcedit-x64.exe, osslsigncode, and a shell script. First, rcedit-x64.exe tags the binary with identifying information:

    https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/installe...

    Then osslsigncode applies the certificate:

    https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/scripts/...

    Echoing what Rodeoclash wrote: Having to pay to play on Windows for an open-source project that makes $0 is a decline of ownership over our own machines.

  • Using AsciiDoc and Asciidoctor for Blogging
    3 projects | news.ycombinator.com | 21 Oct 2023
    When I started developing KeenWrite[1], I wanted a modular architecture[2] that made the choice of Markdown vs. AsciiDoc vs. DocBook irrelevant with respect to generating PDF or HTML files. The core idea of writing pure text documents is to separate content from presentation; the syntax, while important to some, shouldn't sway the output format.

    KeenWrite could integrate AsciidoctorJ and its XHTML5 back-end to support AsciiDoc in the future, if there was demand.

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

    [2]: https://gitlab.com/DaveJarvis/KeenWrite/-/raw/main/docs/imag...

What are some alternatives?

When comparing hachoir and KeenWrite you can also consider the following projects:

binrw - A Rust crate for helping parse and rebuild binary data using ✨macro magic✨.

keenwrite-themes

usaddress - :us: a python library for parsing unstructured United States address strings into address components

rustypwneddownloader - Rust based pwnedpasswords Downloader

fuckitjs - The Original Javascript Error Steamroller

AzureSignTool - SignTool Library and Azure Key Vault Support

pyWhat - 🐸 Identify anything. pyWhat easily lets you identify emails, IP addresses, and more. Feed it a .pcap file or some text and it'll tell you what it is! 🧙‍♀️

ursus - Static site generator for All About Berlin

probablepeople - :family: a python library for parsing unstructured western names into name components.

PowerShell-OpenAuthenticode - Cross platform PowerShell implementation of Authenticode signing and verification

smm2-documentation - Documentation for the game Super Mario Maker 2.

pandoc - Universal markup converter