June 25th, 2024

Igneous Linearizer: semi-structured source code

The Igneous Linearizer project enhances source code in Obsidian Markdown format, enabling features like links and transclusion. It sacrifices AST correctness for compatibility with text editors and Git, benefiting literate programming. Users must follow specific input file formats for optimal use.

Read original articleLink Icon
Igneous Linearizer: semi-structured source code

The Igneous Linearizer project aims to provide a structured source code experience by utilizing source code as hypertext in Obsidian Markdown format. This approach allows for features like links, backlinks, renaming, attributes, and transclusion, resembling a code editor's functionalities. The linearizer tool transpiles hyperstring files into executable code, enabling a language-agnostic development experience. Unlike storing Abstract Syntax Trees (ASTs) in a database, this method sacrifices guaranteed-correct syntax for a more conventional development experience compatible with any text editor and version control systems like Git. While the project is still in its early stages and lacks certain essential plugins for a seamless programming experience in Obsidian, it offers benefits for literate programming and protolang development. Users need to be mindful of the differences between hyperstrings and Markdown when using the linearizer tool, as it requires a specific format for input files to ensure proper rendering and functionality.

Related

AI-powered conversion from Enzyme to React Testing Library

AI-powered conversion from Enzyme to React Testing Library

Slack engineers transitioned from Enzyme to React Testing Library due to React 18 compatibility issues. They used AST transformations and LLMs for automated conversion, achieving an 80% success rate.

Polytype: A Rosetta Stone for typesetting engines

Polytype: A Rosetta Stone for typesetting engines

Polytype is a project like Rosetta Code but for typesetting engines. It compares how different engines handle layout and orthographic features. Contributions are welcome via GitHub for new samples and improvements. Users can build examples locally and test the website.

Writing an IR from Scratch and survive to write a post

Writing an IR from Scratch and survive to write a post

Eduardo Blázquez developed an Intermediate Representation (IR) for the Kunai Static Analyzer during his PhD, aiming to enhance Dalvik bytecode analysis. The project, shared on GitHub and published in SoftwareX, transitioned to Shuriken. Blázquez drew inspiration from Triton and LLVM, exploring various IR structures like ASTs and CFGs. MjolnIR, Kunai's IR, utilized a Medium Level IL design with control-flow graphs representing methods. Blázquez's approach involved studying compiler design resources.

The Death of the Junior Developer – Steve Yegge

The Death of the Junior Developer – Steve Yegge

The blog discusses AI models like ChatGPT impacting junior developers in law, writing, editing, and programming. Senior professionals benefit from AI assistants like GPT-4o, Gemini, and Claude 3 Opus, enhancing efficiency and productivity in Chat Oriented Programming (CHOP).

The Eternal Truth of Markdown

The Eternal Truth of Markdown

Markdown, a simplified code alternative to HTML, enables diverse document formats from plain text. Despite lacking standardization, it thrives for its adaptability and simplicity, appealing to writers and programmers alike.

Link Icon 5 comments
By @JonChesterfield - 5 months
This is an interesting direction.

One thought is that obsidian can execute web assembly and a parser / sema checker written in something that turns into wasm can therefore be run on the source files. Can probably tie that to a syntax highlighter style thing for in-ide feedback.

The other is that markdown is a tempting format for literate programming. I do have some notes in obsidian that are fed to cmark to product html. With some conventions, splitting a literate program into executable code embedded in a html document is probably doable as an XML pipeline.

In a much simpler vein, I'm experimenting with machine configuration from within obsidian. The local DNS server sets itself up using a markdown file so editing an IP or adding a new machine can be done by changing that markdown.

I hope the author continues down this path and writes more about the experience.

By @arnsholt - 5 months
This is neat, but it does seem like a lot of work to get part of the way to what a Smalltalk already gives you.
By @zacgarby - 5 months
this is great! i’ve been thinking about exactly this (though styled after Logseq rather than Obsidian) but not gotten as far as implementing anything.

that being said, the thing i haven’t been able to convince myself of yet is why these are different to just normal (in-line) functions? as in, why should i have to write [[foo]]: would it not be better to have all identifiers automatically linked?

By @binary132 - 5 months
I really appreciate the unordinary direction you went with these articles and your site in general. An enjoyable read!
By @nbbaier - 5 months
> The solution I've been waiting for is source-code-in-the-database. I'm cheering on multiple projects attempting this.

What are the projects you're especially bullish on?