7 ms·
Blacksmithing and Lisp
- kazinator 2y agoThe truth is that when you tap softened tongs around a workpiece into shape, they turn into parentheses. That's what reminds you of Lisp, not the malleability explanation that you invented afterward. Lisp, Jazz, Aikido and (now) Blacksmithing.
- gsf_emergency 2y agoMore generous & valuable comment from reddit The distinction between Lisp and the programming languages widely adopted in the industry is a bit like the distinction between artist blacksmiths and fabricators. If blacksmiths have the skills and technique to transform the form of the metal materials they work with. While fabricators essentially rely upon the two operations of cutting and welding. Blacksmiths will use those two operations in their work, but also have the more plastic techniques of splitting, drifting, upsetting, fullering, etc. https://old.reddit.com/r/lisp/comments/1eu9gd9/comment/likzw1n/ https://old.reddit.com/r/lisp/comments/1eu9gd9/comment/likzw... These additional basic tools are created from essentially the same working material, on the fly, just like the tongs in TFA
- pfdietz 2y agoThis comment reminded me of a Youtube channel I watch. The episode I was just watching had Kurtis making flogging spanners (wrenches intended to be used with a hammer) out of steel plate. Draw the outline, cut with a torch, smooth the edges with a grinder, done.
- asa400 2y agoFrom this comment it follows that for “industrial” software, having less power actually allows for a greater degree of composition at a higher level. Whether “more power” is advantageous is contextually dependent. Having only cutting and welding at your disposal is, as a designer, somewhat freeing.
- gsf_emergency 2y agoAre you accusing artist blacksmiths of spending too much time thinking about/admiring their ad hoc tools? Cf Whitehead Civilization advances by extending the number of important operations which we can perform without thinking of them.
- bmacho 2y agoIs this a definition for "advancing" regards civilization? Bc it is not happening, and it is arguable if it is good for us at all.
- gsf_emergency 2y agoWhitehead probably did not consider how many "hobbyist blacksmiths" we would need to fix the abstractions when they leak
- asa400 2y agoActually no! The tools that make sense for industry are sometimes not specific enough for artists, and simultaneously the tools that make sense for artists are sometimes hard to generalize in an industrial setting where repeatability and composition are have greater importance to the success of the end product. My quibble is when folks say artist blacksmiths and industrial metal forming are the same and should be treated the same, to continue the metaphor.
- HPsquared 2y agoThe industrial metal factory needs an army of artisans to keep the equipment running.
- deleted 2y ago[deleted]
- eikenberry 2y agoThis is a great analogy, particularly with one addition. That the two operations vary between fabricators so that, ideally, you have the two operations that work the best for your industry. That is the same difference between Lisp like languages and industrial languages, that the former allows you to build any domain language while the latter are already built domain languages. That is that when using Lisp you work like a sculptor, you build your language by removing expressiveness until you can only express your domain. Industrial languages have already removed the expressiveness and are adopted by people who find it useful for their working domain. The main difference is that the latter are more generalized to a category of domains vs. one particular domain. I think this is one of the key reasons they 'won' over more expressive languages like Lisp. They created a better common ground for related projects to collaborate on and collaboration is more important than domain expressiveness.
- wilsonjholmes 2y agoI love this analogy!
- gsf_emergency 2y ago[flagged]
- hdkdicnsnjes 2y agoImagine the software industry if lisp was mainstream.
- owebmaster 2y agoMicrosoft/Google would push a TypeLisp with Java DX
- hdkdicnsnjes 2y agoAh shit, right, it’s probably for the best lisp isn’t mainstream.
- jimbob45 2y agoHeavyweight support for corporate usecases is exactly what Lisp is missing right now. I would love for MS to pump out a Visual Scheme or TypeLisp. It’s the perfect scripting language for embedding in CLR Managed Code. Rather than bringing in something massive like C#. Alas, I think MS saw the failure of Clojure within the Java ecosystem and foresaw the same if they made a similar effort.
- roxolotl 2y agoWhat would TypeLisp or Visual Scheme provide that you can’t get from a repl and a language server integrated into your editor? At work I write a lot of TypeScript. At how I write a lot of lisp. The lisp is absolutely more ergonomic and extensible.
- jimbob45 2y agoA first-class IDE that doesn’t take six hours of fiddling and days of research to cobble together. Robust and well-maintained libraries for sockets, I/O, threading, and more. A corporate sponsor for corporations to be able to rely on when choosing to integrate Lisp into their .NET projects. The ML crowd received F# and that’s practically the only reason anyone still uses anything ML-esque. I would like the same for Lisp. I know Rich Hickey tried to make Clojure for .NET first and failed, though, so I’m not holding my breath.
- Animats 2y agoThe classic issue of who made the first tongs could be inserted here, with some hammering. (It's a classic legend. There is an Islamic legend that Allah gave the first pair of tongs to the first blacksmith because you need a pair of tongs to make a pair of tongs. There's a Nordic legend that Thor made the first tongs. In reality, somebody probably used a bent piece of green wood, which didn't last long, but could be easily replaced.) His piece "Vibe Coding, Final Word"[1] is relevant right now. [1] https://funcall.blogspot.com/2025/04/vibe-coding-final-word.html https://funcall.blogspot.com/2025/04/vibe-coding-final-word....
- pmarreck 2y agoThat's not remotely "vibe coding" though. Vibe coding would be like using Claude Code or Codeium Windsurf with a recent model. Something that does the code edits for you and optionally lets you code-review them first to approve/deny. Not copy-pasting GPT4o-produced bupkis.
- gsf_emergency 2y agoAccording to "official" legend it was the brothers Brokkr & Eitri who made Mjolnir, though I couldn't find anything about the tongs. https://en.wikipedia.org/wiki/Brokkr https://en.wikipedia.org/wiki/Brokkr Re: "funcall's vibe coding findings", it makes sense that human-style lisp (/tongs) would be too nonlinear for LLMs (or gods like Thor) to generate? Edit: but in line with latter-day retcons it also makes sense that Thor would get credit for something good that Loki did
- hyperbrainer 2y agoAny sufficiently complicated piece of code contains an ad-hoc implementation of Lisp.
- MortyWaves 2y agoI just don’t get the analogy he’s trying to draw here
- Jtsummers 2y agoLisp is a tool meant to be molded to the work, not to have the work forced into a broader, less expressive Lisp mold. Tongs are tools that can be molded to fit the work, rather than forcing the work to fit the tongs (or awkwardly, and perhaps disastrously, not fitting the tongs). That's it, not too complex.
- FredPret 2y agoIt'd be interesting if we could draw up a family tree of tool fabrication for any object. The root object would be two rocks brought together in a bang heard 'round the world, then perhaps some sharpened sticks, all the way up to a Colchester lathe somewhere in Victorian England and the machinery that made whatever object we're looking at.
- wilsonjholmes 2y agoappropedia.org has a lot of instructions on how to build things, I don't thing a "progression tree" exists, but it is a place to start!
- WillAdams 2y agoFor the machine shop there are the "Gingery" books: https://gingerybookstore.com/ https://gingerybookstore.com/ which is a multi-volume series based on the fact that a lathe is the only tool in a machine shop which can replicate itself, so the first volume has one make an aluminum casting foundry in one's backyard, the second how to use it to make a lathe, then one can use the rough-cast lathe to improve itself (or make a better lathe), and from there make the entirety of a machine shop. Blacksmithing as noted in the original article is unique in that it is self-sufficient in a way that few other processes are, and downright elemental in what one needs. Another book which touches on this sort of things is Verne's _The Mysterious Island_ which has a couple of escaped Civil War prisoners making things from essentially first principles: https://www.gutenberg.org/ebooks/1268 https://www.gutenberg.org/ebooks/1268 Less on the nose are _Robinson Crusoe_ and _The Swiss Family Robinson_, though those have starter kits in the form of flotsam and jetsam (rather more than that for the latter).
- unoti 2y ago> you can work on your problem, or you can customize the language to fit your problem better There’s a thing I’m whispering to myself constantly as I work on software: “if I had something that would make this easy, what would it look like?” I do this continuously, whether I’m working in C++ or Python. Although the author was talking about Lisp here, the approach should be applied to any language. Split the problem up into an abstraction that makes it look easy. Then dive in and make that abstraction, and ask yourself again what you’d need to make this level easy, and repeat. Sometimes it takes a lot of work to make some of those parts look and be easy. In the end, the whole thing looks easy, and your reward is someone auditing the code and saying that you work on a code base of moderate complexity and they’re not sure if you’re capable enough to do anything that isn’t simple. But that’s the way it is sometimes.
- crdrost 2y agoYes! I call this sort of top-down programming "wishful thinking." It is these days much easier to explain to people, because machine learning tools. “if you can just trust that chat GPT will later fill in whatever stub functions you write, how would you write this program?” — and you can quickly get going, “well, I guess I would have a queue, while the queue is not empty I pull an item from there, look up its responsible party in LDAP, I guess I need to memoize my LDAP queries so let's @cache that LDAP stub, if that party is authorized we just log the access to our S3-document, oh yeah I need an S3-document I am building up... otherwise we log AND we add the following new events to the queue...” It is not the technique that has most enhanced what I write, which is probably a variant on functional core imperative shell. But it's pretty solid as a way to break that writers block that you face in any new app.
- deleted 2y ago[deleted]
- resize2996 2y agoI want to hear more about this functional core/imperative shell....
- WillAdams 2y agoFor the academic take on this see: https://ocw.mit.edu/courses/6-001-structure-and-interpretation-of-computer-programs-spring-2005/ https://ocw.mit.edu/courses/6-001-structure-and-interpretati...