The author details the creation of their own programming language, "Oxcart," driven by dissatisfaction with existing tools for personal projects. Oxcart prioritizes simplicity and explicitness over complex features, aiming for ease of understanding and modification. Key features include a minimal syntax inspired by Lisp, straightforward memory management using a linear allocator and garbage collection, and a compilation process that produces C code for portability. The language is designed specifically for the author's own use case – writing small, self-contained programs – and therefore sacrifices performance and common features for the sake of personal productivity and enjoyment.
Rivulet is a new esoteric programming language designed to produce visually appealing source code that resembles branching river networks. The language's syntax utilizes characters like /
, \
, |
, and -
to direct the "flow" of the program, creating tree-like structures. While functionally simple, primarily focused on integer manipulation and output, Rivulet prioritizes aesthetic form over practical utility, offering programmers a way to create visually interesting code art. The resulting programs, when visualized, evoke a sense of natural formations, hence the name "Rivulet."
Hacker News users discussed Rivulet, a language for creating generative art. Several commenters expressed fascination with the project, praising its elegance and the beauty of the generated output. Some discussed the underlying techniques, connecting it to concepts like domain warping and vector fields. Others explored potential applications, such as animating SVGs or creating screensavers. A few commenters compared it to other creative coding tools like Shadertoy and Processing, while others delved into technical aspects like performance optimization and the choice of using JavaScript. There was general interest in understanding the language's syntax and semantics.
Summary of Comments ( 104 )
https://news.ycombinator.com/item?id=43970800
Hacker News users generally praised the author's approach of building a language tailored to their specific needs. Several commenters highlighted the value of this kind of "scratch your own itch" project for deepening one's understanding of language design and implementation. Some expressed interest in the specific features mentioned, like pattern matching and optional typing. A few cautionary notes were raised regarding the potential for over-engineering and the long-term maintenance burden of a custom language. However, the prevailing sentiment supported the author's exploration, viewing it as a valuable learning experience and a potential solution for a niche use case. Some discussion also revolved around existing languages that offer similar features, suggesting the author might explore those before committing to a fully custom implementation.
The Hacker News post titled "A programming language made for me" (linking to zylinski.se/posts/a-programming-language-for-me/) generated a moderate amount of discussion, with several commenters engaging with the author's approach to language design.
Several commenters praised the author for taking the initiative to build a language tailored to their specific needs and workflow. They saw this as a valuable exercise in understanding language design principles and appreciated the author's willingness to share their process and rationale. Some saw it as a refreshing alternative to constantly adapting to existing languages that might not perfectly fit a particular problem domain.
A recurring theme in the comments was the tension between creating a language specifically for personal use versus designing one for a wider audience. Some argued that hyper-specialization could limit the language's applicability and hinder collaboration, while others emphasized the benefits of prioritizing individual productivity and enjoyment. One commenter suggested that starting with a personal focus could be a good first step, potentially evolving into a more general-purpose language later on.
There was also discussion around the practicality of maintaining and evolving a personal language. Some commenters questioned the long-term viability of such projects, highlighting the potential challenges of debugging, tooling, and documentation. Concerns were raised about the "bus factor" – the risk of the project becoming unsustainable if the sole developer becomes unavailable.
Technical aspects of the language itself were also discussed, with some commenters offering specific feedback and suggestions. Topics included the choice of syntax, the implementation of certain features, and the potential benefits of incorporating existing language constructs or libraries. One commenter recommended exploring existing niche languages that might already address some of the author's needs.
Finally, some commenters drew parallels to other projects where individuals had created custom tools or languages to solve specific problems, emphasizing the empowering nature of such endeavors. They highlighted the potential for personal projects to lead to unexpected insights and innovations.