1,768 karma · joined November 3, 2011
[ my public key: https://keybase.io/rolandoam; my proof: https://keybase.io/rolandoam/sigs/Q8SNg1xUA0lrAKRtgdrKCDYNy7zPOLcWOygRHiWc0hE ]
Best of all, is that the syntax grammar is so simple, that a simple CLAUDE.md + a few review agents lets me move super fast using AI. I spend most of my time anchoring on the design/plan and let AI write the implementation for most of the code.
I created Schematra[1] and also a schematra-starter-kit[2] that can be spun from claude and create a project and get you ready in less than 5 minutes. I've created 10+ side projects this way and it's been a great joy. I even added a scheme reviewer agent that is extremely strict and focus on scheme best practices (it's all in the starter kit, btw)
I don't think the lack of training material makes LLMs poor at writing lisp. I think it's the lack of guidelines, and if you add enough of them, the fact that lisp has inherently such a simple pattern & grammar that it makes it a prime candidate (IMO) for code generation.
> The tool consumes and produces OCI-compatible container images...
* Schematra https://schematra.com/ - a web "framework" written in CHICKEN scheme
* Lots of (unpublished, but will try to do so soon) eggs that spawned from building schematra & KartInsightsPro
* llm.scm (inspired by ruby's llm gem)
* imgui.scm
* aws.scm (support for core AWS services like SSM, S3, other APIs)
* umami.scm
You get the idea. I started playing with CHICKEN to scratch the itch of building something in Scheme and I couldn't stop. Using ast-grep as a skill in claude code makes it a lot easier to edit code as well.Edit: format
But for Guile in particular there's https://artanis.dev/ that's a pretty close cousin.
Testing ergonomics: Went from 15+ lines of boilerplate to a one-liner by introducing structural testing. Routes can now return S-expressions (chiccup) instead of rendered HTML, so you test against data structures, not string parsing.
;; Assert against structure, not HTML strings
(test "returns greeting"
'(ccup [h1 "Hello"])
(test-route-body app 'GET "/hello"))
Structural middleware: Since routes return S-expressions and rendering happens at the framework boundary, middleware can inspect and transform the DOM structure before it becomes HTML. Want to inject CSRF tokens into every form? It's just an S-expression transform with sxml-transforms. No template engine plugins needed. (see the post for a complete example)Performance notes: I benchmarked chiccup rendering at 145k ops/sec average (339k for simple elements, 2k for 50-row tables). Even worst case is 0.5ms - way below database/network latency, so no caching layer needed, at least not for now.
What's next: Besides the Redis-backed job queue and rqlite-based ORM mentioned in the full post, I'm working on improving route handling with automatic path parameter extraction:
(get "/posts/:id/comments"
;; :id automatically becomes a local variable
(display id)) ; just works, no (alist-ref 'id params) needed
Schematra is a Sinatra-inspired web framework for CHICKEN Scheme. Still pre-1.0, API is evolving based on real-world use.Full post: https://schematra.com/blog/whats-new-in-schematra-0-4
Source: https://github.com/schematra/schematra
Benchmarks: https://github.com/schematra/schematra/tree/main/benchmarks
[1]: https://www.npr.org/2025/01/08/1223466587/zip-code-history
[0]: https://radioambulante.org/en/audio-en/the-street-network
ipfs get -o ggml-alpaca-7b-q4.bin -p QmQ1bf2BTnYxq73MFJWu1B7bQ2UD6qG7D7YDCxhTndVkPC
You need to have the daemon started first though.I might try other route just to give trains a shot again. I like the concept and the space and how comfortable is the ride, but SF - Truckee, I'm not sure I would do it again.
Were you thinking to change the shape of an airfoil to affect the aerodynamics? that seems really risky and potentially unnecessary. For control surfaces, hard to picture something else than moving parts over a hinge, except maybe flaps that already change the shape of the wing.