[HN Gopher] Blacksmithing and Lisp
___________________________________________________________________
Blacksmithing and Lisp
Author : 082349872349872
Score : 129 points
Date : 2025-04-03 08:34 UTC (3 days ago)
(HTM) web link (funcall.blogspot.com)
(TXT) w3m dump (funcall.blogspot.com)
| kazinator wrote:
| The 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 wrote:
| More 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/likzw...
|
| These additional basic tools are created from essentially the
| same working material, on the fly, just like the tongs in TFA
| pfdietz wrote:
| This 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 wrote:
| From 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 wrote:
| Are 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 wrote:
| Is 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 wrote:
| Whitehead probably did not consider how many "hobbyist
| blacksmiths" we would need to fix the abstractions when
| they leak
| asa400 wrote:
| Actually 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 wrote:
| The industrial metal factory needs an army of artisans to
| keep the equipment running.
| eikenberry wrote:
| This 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.
| hdkdicnsnjes wrote:
| Imagine the software industry if lisp was mainstream.
| owebmaster wrote:
| Microsoft/Google would push a TypeLisp with Java DX
| hdkdicnsnjes wrote:
| Ah shit, right, it's probably for the best lisp isn't
| mainstream.
| jimbob45 wrote:
| Heavyweight 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 wrote:
| What 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 wrote:
| A 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.
| vindarel wrote:
| > first-class IDE
|
| Atom/Pulsar, or Portacle (portable Emacs with SBCL +
| Quicklisp), or plain-common-lisp (2 clicks install for
| Windows), ALIVE for VSCode is getting there, also the
| newer Intellij plugin. And vim. LispWorks. Sublime, Lem,
| Jupyter notebooks, and more.
|
| https://lispcookbook.github.io/cl-cookbook/editor-
| support.ht...
| asa400 wrote:
| Why do you consider Clojure a failure in the Java
| ecosystem?
| jimbob45 wrote:
| MS only really wants runaway successes, not modest
| successes, particularly at the salaries required for the
| types of engineers to pull such a thing off. Clojure
| hasn't attained runaway success in the corporate world
| and that's even with the nearly flawless design and
| implementation Hickey executed. Even the branding is
| somehow more memorable than most languages.
| MrMcCall wrote:
| Parentheses wouldn't be shift-9 and -0.
| NikkiA wrote:
| "If C was mainstream braces wouldn't be shift-[ and shift-],
| clearly LOGO must be the dominant language"
| throwawaylsp wrote:
| There's one thing I've never understood. Lisp is 65 years old.
| It's older than any mainstream programming language apart from
| FORTRAN. It has a bevy of vocal fans in every generation.
| So...why hasn't it gone mainstream? Or at least, why has it
| failed to remain there?
| Jtsummers wrote:
| It very nearly did. Then the AI Winter happened.
|
| https://en.wikipedia.org/wiki/AI_winter
| linguae wrote:
| Programming language adoption is more than just about syntax
| and semantics; there are other factors. For example,
| JavaScript is often criticized for its design, yet this
| hasn't stopped tens of millions of developers from learning
| the language, since if you want to do client-side Web
| programming (the most widely deployed platform in the world),
| you need to use JavaScript, period. It also helps if a
| language has/had a major corporate backer at a crucial time
| in its life. Java has Sun/Oracle, C# has Microsoft, Go has
| Google, and C and C++ had AT&T (Bell Labs).
|
| Lisp's most successful commercial period was during the 1980s
| during an AI boom. Companies such as Symbolics, Texas
| Instruments, and Xerox sold workstations known as Lisp
| machines that were architecturally designed for running Lisp
| programs. They had corporate and institutional customers who
| were interested in AI applications developed under Lisp,
| including the United States government. Lisp was also
| standardized during this time period (Common Lisp). Lisp even
| caught the attention of Apple; Apple had some interesting
| Lisp and Lisp-related projects during its "interregnum"
| period when Steve Jobs was absent, most notably Macintosh
| Common Lisp, the original Newton OS (before C++ advocates won
| approval from CEO John Sculley), Dylan, and SK8.
|
| However, the AI Winter of the late 1980s and early 1990s,
| combined with advances in the Unix workstation market where
| cheaper Sun and DEC machines were outperforming expensive
| Lisp machines at Lisp programs, severely hurt Lisp in the
| marketplace. AI would boom again in the 2010s, but this
| current AI boom is based not on the symbolic AI that Lisp
| excelled at, but on machine learning, which relies on
| numerical computing libraries that have C, C++, and even
| Fortran implementations and Python wrappers. Apple in the
| 1990s could have been a leading advocate of Lisp for desktop
| computing, but Apple was an unfocused beacon of creativity;
| many interesting projects, but no solid execution for
| replacing the classic Mac OS with an OS that could fully meet
| the demands for 1990s and 2000s computing. It took Apple to
| purchase NeXT to make this happen, and under Steve Jobs'
| leadership Apple was a focused beacon of creativity with
| sharp execution. Of course, we ended up with Smalltalk-
| inspired Objective-C, not Common Lisp or Dylan, as Apple's
| official language before Swift was released after the end of
| Jobs' second reign.
|
| Some other factors: 1. Lisp was truly unique in the 60s, 70s,
| and 80s, but it required expensive hardware to run. It would
| be hard to conceive of a Lisp running well on a 6502 or an
| 8086. Something like my NeXT Cube with a 68040 would do a
| much better job, but those machines cost roughly $6500 in
| 1989 dollars, out of reach for many developers.
|
| 2. By the time hardware capable of running Lisp acceptably
| became affordable, other languages started offering certain
| features that used to be unique to Lisp. Wanted garbage
| collection? In 1995 Java became available. Want object-
| oriented programming? You didn't even have to wait until 1995
| for that due to C++. Want anonymous functions and map()?
| Python's popularity took off in the 2000s. Yes, Lisp still
| offers features that are not easily found in other languages
| (such as extensive metaprogramming), but the gap between Lisp
| and competing popular languages has been narrowing with each
| successive decade.
| throwawaylsp wrote:
| Thanks, that was very interesting and informative!
| zozbot234 wrote:
| > Lisp was truly unique in the 60s, 70s, and 80s, but it
| required expensive hardware to run. It would be hard to
| conceive of a Lisp running well on a 6502 or an 8086.
|
| You'd be surprised. https://retrocomputing.stackexchange.co
| m/questions/11192/wha... Of course something like FORTH was
| perhaps more suited to these smaller machines, but LISP
| implementations were around. Many users of 6502-based
| microcomputers were familiar with LOGO, which is just a
| LISP with different syntax.
| vindarel wrote:
| But where is it now? If not mainstream, where? Is it not used
| at all, or only by hobbyists, or also by successful
| companies, today? If it isn't mainstream, is it important, if
| not, what's the cursor?
|
| elements to not judge in the void
| https://github.com/azzamsa/awesome-lisp-companies/ (some are
| hiring) (that's just the companies we know, nothing official)
|
| https://github.com/CodyReichert/awesome-cl/
| hcarvalhoalves wrote:
| The language was married to and sold with a hardware
| architecture that didn't achieve massive commercial success
| compared to the other workstations at the time and later
| microcomputers.
| jcranmer wrote:
| Disclaimer: this mostly happened before, or at best shortly
| after, I was born, so this isn't drawn from personal
| recollection but rather attempting to synthesize from others'
| recollections, often from people who have some bias.
|
| One of the major trends in computing in the 80's and 90's is
| that high-end systems lost out to the growth in capabilities
| of low-end systems, and this happens in pretty much every
| level in the computing stack. Several people responded to
| this trend by writing articles sniffling that their high-end
| systems lost to mass market garbage, often by focusing on the
| garbage of the mass market garbage and conveniently avoiding
| analysis as to why the high-end systems failed to be
| competitive in the mass market. The wonders of Lisp is one of
| the major topics of this genre.
|
| Most famously, Lisp was tarred by its association with AI
| during the concomitant collapse of AI that led to the AI
| Winter, though it's less often explored why AI failed. In
| short, _it didn 't work_. But more than just AI at the time,
| people also felt that the future of programming _in general_
| was based around the concept of something like rules-based
| systems: you have a set of rules that correspond to all of
| the necessary business logic, and a framework of program
| logic that 's making those rules actually take effect--you
| can see how a language like Lisp works very well in such a
| world. But programming doesn't have a clean separation
| between business logic and program logic in practice, and
| attempts to make that separation cleaner have largely failed.
|
| So Lisp has a strong competitive advantage in a feature that
| hasn't proven to actually be compelling (separating business
| from program logic). Outside of that feature, most of its
| other features are rather less unique and have seeped into
| most mainstream programming languages. Functional paradigms,
| REPLs, smart debuggers, garbage collection--these are all
| pretty widespread nowadays. Where Lisp had good ideas,
| they've been extensively borrowed. Where those ideas haven't
| pulled their weight... they've languished, and most of the
| people wistfully wishing for a return to Lisp haven't
| acknowledged that the limitations of these features.
| stzsch wrote:
| The Lisp Curse:
| http://winestockwebdesign.com/Essays/Lisp_Curse.html
| dreamcompiler wrote:
| "Lisp is so powerful that problems which are technical
| issues in other programming languages are social issues in
| Lisp."
|
| So true. Lisp was designed to give individual programmers
| tremendous power. That means Lisp programmers sometimes
| prefer to reinvent solutions to problems rather than learn
| to use some existing solution. This tendency can be an
| absolute nightmare on a software engineering team.
|
| Not that using Lisp on a software engineering team cannot
| be done, but it requires very strong discipline and
| leadership. The absence of strong discipline and leadership
| on a Lisp SWE team can lead to enormous amounts of wheel
| reinvention and technical debt.
|
| Obviously discipline and leadership are necessary for any
| SWE team but languages like C don't encourage reinvention
| nearly as much as Lisp does, and Lisp programmers in
| general tend to be very resistant to the imposed discipline
| that SWE requires. (I say this as a diehard Lisp
| programmer, so I'm talking about myself.)
| dreamcompiler wrote:
| Related question: Why is welding pretty mainstream while
| blacksmithing is a much more niche craft? Blacksmithing is a
| more overarching skill: After all every blacksmith knows how
| to weld but relatively few welders can forge effectively.
|
| Possible answers:
|
| 1. Blacksmiths enjoy making custom tools for each domain
| while welders just want to get on with solving their domain
| problem.
|
| 2. Blacksmithing is harder to learn. Welding using modern
| techniques is easy to learn. (Caveat: Welding _well_ is quite
| difficult. But learning to weld good enough to repair a
| broken hitch on your tractor is easy.)
|
| 3. Welding can solve a very large chunk of metalwork
| problems. Not all of them--and not always with elegance--but
| it gets the job done quickly. Blacksmithing can solve a
| larger set of metalwork problems with more elegance but it
| also takes more time and skill.
| convolvatron wrote:
| you can very reasonably do welding in your garage. aside
| from a welder (as little as $150 for a barely-usable mig),
| all you need is an angle grinder to cut and finish the
| welds. commercially you can get a mid-range mig and a
| couple more smallish tools and you can start selling custom
| fencework and mounting brackets and such.
|
| blacksmithing you need a forge, which immediately takes up
| more space and is somewhat more likely to start a fire. an
| anvil, and tongs, and hammers. its also a lot more
| physically demanding, even if you use a power hammer.
|
| your #2 and #3 are pretty key. most importantly most
| fabrication jobs are much happier to get quick work with
| reasonable precision using stock shapes. once you start
| talking about real free-form hot shaping you're immediately
| going up at least 10x in price/time. welded table base -
| $500. handcrafted wrought table base - $10,000.
|
| really its that metalwork is mostly functional (fences,
| stairs, railings, walkways, enclosures, stainless for
| commercial kitchens, pipefitting, etc). its very difficult
| to stay in business as a actual craftsman making well-
| designed objects. architectural metal is probably the
| easiest in (wall coverings, nice looking railing and
| stairs, lamps, and other decorative elements). and there
| its still dominated by fabrication processes (machining and
| welding of stock shapes), although nicer materials like
| bronze start to have their place.
|
| edit: you know I left this thinking I was missing something
| and I realized what it is. welding you make shapes out of
| like-shapes. like making drawings in figma. I don't think a
| lot of people have what it takes to learn to be a really
| good freehand artist. and even if you have the skill, being
| able to design those kind of organic arbitrary shapes so
| that they are emotive and attractive is another step up. do
| you want a piece of art which is a direct expression of the
| concept held by the artist? or do you want a 3x5' 32" inch
| high workbench for 1/20 the cost?
| bigstrat2003 wrote:
| Also, if you live in the city (including suburbs), your
| neighbors are likely to get pretty annoyed by the sound
| of hammering metal. Welding makes noise too, but a lot
| less of it. That's the main reason why I haven't gotten
| into blacksmithing even though I think I would really
| enjoy it. I just don't think it'd go over well with the
| neighbors.
| bsder wrote:
| Because Lispers sneered at the microprocessors of the time
| while everybody else piggybacked on them. And, by the time
| that attitude changed in the early 90s, there were already
| socially entrenched languages that had the "superpower" of
| garbage collection (Tcl for ECAD, Perl for sysadmin).
|
| Nobody in the Lisp world ever took the time to implement
| stuff that people wanted on those tiny machines. Or to
| demonstrate to people the cool stuff it could do.
|
| You can see this in Dr. Dobbs Journal. People are doing
| things like drawing graphics, writing spell checkers and
| controlling modems. Assembly and BASIC are normal but C and
| Forth are mentioned regularly. Turbo Pascal pops up in 1984.
| Some of the names are famous enough that you recognize them
| even now, decades later.
|
| Lisp just ... gets barely mentioned in passing sometimes. And
| nobody of note writes anything about it. Somebody could have
| built a word processor, a spell checker, a chess game, a
| reversi game, _ANYTHING_ ... but nobody did.
| Animats wrote:
| The 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....
| pmarreck wrote:
| That'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.
| djaouen wrote:
| Have you considered the possibility that this would have made
| things _worse_?
| gsf_emergency wrote:
| According 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
|
| 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
| shirleyquirk wrote:
| It doesn't make any sense that you'd need tongs to make
| tongs; just hold the workpiece. Maybe you cant draw out the
| reins quite so much on your first one. (Ok im a modern
| blacksmith that assumes the existence of rolled bar as a
| source material)
|
| But a hammer! How do you make a hammer without a hammer?
| WillAdams wrote:
| Find a chunk of raw metal (possibly meteoric iron, more
| likely copper) of a suitable size/shape, find a tree, using
| a sharp rock, saw off a suitable branch, split it open,
| insert the metal chunk, using vines or the intestines of a
| small animal secure it in place --- if desired, allow the
| tree to grow around the inclusion for a couple of years,
| then use a sharp rock to saw off the branch at a suitable
| length.
| PaulRobinson wrote:
| Whitworth [0] showed that you can make a more precise tool than
| the one you use to make it. This means you "evolve" towards
| tongs, or screws, or high-precision calipers, or anything else
| you want to make, if you use the right process.
|
| [0] https://en.wikipedia.org/wiki/Joseph_Whitworth
| WillAdams wrote:
| Simon Winchester did a book on this:
|
| _The Perfectionists: How Precision Engineers Created the
| Modern World_
|
| (alternately title _Exactly_)
|
| https://www.goodreads.com/work/editions/56364115-the-
| perfect...
|
| and for further technical details see:
|
| _Foundations of Mechanical Accuracy_ by Wayne R. Moore
|
| https://mitpress.mit.edu/9780262130806/foundations-of-
| mechan...
| bsder wrote:
| Please don't recommend "Foundations of Mechanical Accuracy"
| without also providing a source. The prices people want for
| it are absurd if it is even available.
| WillAdams wrote:
| Interlibrary loan through your local library?
|
| See:
|
| https://mooretool.com/about-us/publications/
|
| for a form to request it.
| hyperbrainer wrote:
| Any sufficiently complicated piece of code contains an ad-hoc
| implementation of Lisp.
| MortyWaves wrote:
| I just don't get the analogy he's trying to draw here
| Jtsummers wrote:
| Lisp 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 wrote:
| It'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 wrote:
| appropedia.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!
| unoti wrote:
| > 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 wrote:
| Yes! 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.
| resize2996 wrote:
| I want to hear more about this functional core/imperative
| shell....
| SatvikBeri wrote:
| It's by Gary Bernhardt: https://www.destroyallsoftware.com/
| screencasts/catalog/funct...
|
| He also did another talk expanding the concept called
| Boundaries:
| https://www.destroyallsoftware.com/talks/boundaries
| bch wrote:
| "The reasonable man adapts himself to the world: the
| unreasonable one persists in trying to adapt the world to
| himself. Therefore all progress depends on the unreasonable
| man."
|
| George Bernard Shaw, Man and Superman
| WillAdams wrote:
| Creating a Domain Specific Language (DSL) for a given task is a
| classic approach to solving problems.
| robocat wrote:
| C++ is for when complexity cost is worth trading for
| performance gain. What type of person successfully finds
| simplicity working in C++?
| WillAdams wrote:
| For the academic take on this see:
|
| https://ocw.mit.edu/courses/6-001-structure-and-interpretati...
___________________________________________________________________
(page generated 2025-04-06 23:00 UTC)