for context, i want to build a claude code like agent in a WYSIWYG markdown app. that's how i stumbled on your blog post :)
578 karma · joined December 3, 2021
for context, i want to build a claude code like agent in a WYSIWYG markdown app. that's how i stumbled on your blog post :)
the effort it takes to serialize and parse markdown into an AST that rich text editor frameworks reliably operate on takes months. been there, done that. the majority of the engineering effort of building a markdown editor in the browser went into parsing and serializing markdown :/
Anyhow, we took the learnings from the Markdown editor app and created "zettel" as a result: https://github.com/opral/monorepo/tree/main/packages/zettel/.... The goal is to have an interoperable rich text AST—basically Markdown but with an AST spec.
Interesting take. Usually web apps lower friction for users.
- no installations - no large binaries - collaborative - easy to adopt
I can't think of any (desktop) app that came out in recent years that specifically pitched "because native, we are better" and won. Sketch is a glaring example of a web app (figma) killing native (sketch)
See their old launch https://news.ycombinator.com/item?id=31166924
What are your reasons for advocating for SQLite as a filesystem abstraction?
- target the browser
- supports any file format, not just text files
- understands changes, not just versioning of files
- suited to build web apps on top
- ultimately enable 1000's of artists, designers, lawyers, civil engineers, etc. to collaborate
we are 2 years into the journey. dec 16, we'll release a public preview
[0] https://github.com/opral/monorepo/blob/99356e577f558f4442a95...
- File locking, concurrency, etc., are problems that SQLite solves
- Using SQLite allows drumroll querying files with SQL instead of platform-dependent fs APIs
- Using SQL queries is typesafe with Kysely https://kysely.dev/ (without the need for an ORM)
> when the company owning the DNS records for that origin goes out of business.
Likely not a problem. Local data in OPFS is synced with a remote server for collaboration reasons anyway.
> There's also the issue with actually having an executable that can just run without any external dependencies
Assume you target the browser as OS, then it's already possible to have an executable: Run the JS file that renders a UI. Related: We will likely have an app launcher demo soon for https://lix.opral.com/
What doesn't work in Safari and Firefox is (non sandboxed) access to the files of a user. OPFS is sandboxed.
The idea of parsing source code to auto inject translations, especially while leveraging machine translations comes up every 2 months.
It’s not solving the problem.
The problem to be solved is change control. Doing translations is (surprise!) cheap compared to controlling changes. Changes referring to the marketing copy changed, the button label changed, a new screen has been added, etc. It needs one system that can track and control changes across apps, translations, files.
If change control is solved, localization boils down to managing CI/CD pipelines.
If a system exists that enables (distributed) collaboration on files, the appeal of cloud-based software vanishes. Remote compute becomes possible as well.
At least, that’s the bet we are taking with lix https://lix.opral.com/
We are going to switch the approach from opening git repos in the browser to a new "version control" system that is designed for apps and file formats beyond text. Building an app on top of git is a fiasco that leads to 90% of time investments going into workarounds around git, like a text-based database to avoid merge conflicts.
We are making the "version control system" for apps and binary files available soon. Here is a landing page https://lix.opral.com/
- a commit is somewhat a 'save' but unlike a 'final_v1.docx'
- a commit prevents changes from being overwritten
From Wikipedia "A snapshot is a photograph that is "shot" spontaneously and quickly, most often without artistic or journalistic intent and usually made with a relatively cheap and compact camera."
monetizing your solution will likely be a dead end.
the value prop of your solution doesn't match the app you built, and what buyers pay for. for example, machine translating translation files is easier for you to build and developers to use with a cli [0] instead of a web app. there is no value in rendering json in the web app. vscode does a better job at rendering json's.
you could monetize via a web app if you allow non-devs to edit translations. but that's a beast called CAT editor [1], where you need to support all sorts of different file formats. aka, the value of a CAT editor is the file support and ecosystem around it, not the editor itself.
[0] https://inlang.com/m/2qj2w8pu/app-inlang-cli#machine-transla...
[1] https://inlang.com/m/tdozzpar/app-inlang-finkLocalizationEdi...