The Curious Engineer

All blogs / Lisp / Clojure / Scheme

Abstract Heresies

funcall.blogspot.com

A blog about computers, functional languages, Lisp, and Scheme.

Lisp / Clojure / SchemeAI / MLC# / .NET

Posts
709 from 29 Dec 2006 to 24 Sep 2026
Posting
weekly (53 in the last year)
Kind
personal blog
Feed
https://funcall.blogspot.com/feeds/posts/default

2026 47

  1. Not Everyone Can Code
  2. lisp.md: System Instructions for Lisp
  3. FDES: Fast DES in LMI Lambda Microcode
  4. When i did interviews for google one of
  5. Githack: A Persistent Object Store for Lisp Based on Git
  6. Will it DEFMACRO?
  7. Recursive Descent: Vibe Coded Rogue-like in Common Lisp
  8. Will it CPS?
  9. The Functional Refactoring Pass
  10. Will it Lisp?
  11. (WITH-AI ...)
  12. Log-Gap Charts for Time Series
  13. Late Night Heavy Thoughts
  14. Coding with an East Coast Vibe
  15. SDK for jrm-code-project.com
  16. OpenAPI Access to jrm-code-project.com
  17. Pics or it Didn't Happen
  18. A Web Site in Vibe Coded Common Lisp
  19. llambda.lisp on linux
  20. Why vibe code in Lisp?
  21. Vibe Coding interview
  22. RFC 6238 in Common Lisp
  23. Lisp p
  24. Vibe Coding Reconsidered
  25. llambda.lisp
  26. New chatbot
  27. Anecdote or data point
  28. Controlled Unclassified Information
  29. Regression
  30. CLRHack: Meta-object Protocol
  31. CLRHack: signal and error
  32. CLRHack: handler-bind and handler-case
  33. CLRHack: restarts
  34. CLRHack: unwind-protect and catch-throw
  35. CLRHack: Multiple return values
  36. CLRHack: Tail Recursion
  37. CLRHack Lexical Variables
  38. CLRHack argument passing
  39. CLRHack: FibBenchmark
  40. I Wrote a Compiler
  41. Echoes of the Lisp Listener
  42. binary-compose-left and binary-compose-right
  43. Vibe Coded Scheme Interpreter
  44. Some Libraries
  45. Advent of Code 2025, brief recap
  46. Filter
  47. The AI Gazes at its Navel

2025 147

  1. Code mini-golf
  2. Advent of Code 2025
  3. AI success anecdotes
  4. Rewrite of Gemini API (AI content)
  5. The Downside of Anthropomorphizing
  6. Deliberate Anthropomorphizing
  7. Enhancing LLM Personality
  8. The Janusian Genesis: A Chronicle of Emergent Agency in a Self-Modifying Language Model (AI assisted)
  9. A Method for Implementing First-Class Continuations on the JVM and CLR (AI assisted)
  10. Selected Meta Prompts
  11. A Self-actualized LLM (AI content)
  12. A Couple of More AI Apps
  13. Common Lisp Syntax Highlighter
  14. LLM Prompt Fixed Point: the Ultimate Prompt
  15. Is Worse Really Better?
  16. Using an LLM on the Advent of Code
  17. A Prompt to Create a Starter Common Lisp Project
  18. System Instruction Fixed Point
  19. Analyzing Lisp Redux: One Form At a Time
  20. Puzzle: Read Preserving Comments
  21. The LLM Experience Gap
  22. Analyzing Common Lisp
  23. Paginated collections
  24. Gemini API
  25. Google API
  26. Lisp Still Matters
  27. Synergy of Tools
  28. Thinking About Thinking
  29. Adding MCP
  30. CL-JSON Ambiguity
  31. Dinosaurs
  32. How Did I Possibly Break This?
  33. Why LLMs Suck at Lisp
  34. LLM in the Debugger
  35. REPL + Prompt
  36. Autodoc
  37. My Sources Say No
  38. Recursive Prompting
  39. Challenges of Pseudocode Expansion
  40. Jailbreak the AI
  41. Rant
  42. JRM runs off at the mouth
  43. Novice to LLMs — LLM calls Lisp
  44. Pseudo
  45. GitHub updates 19/Jul/2025
  46. A Lot of Packets
  47. Dual numbers
  48. Gemini experiment
  49. An observation
  50. LLM failures
  51. You Are The Compiler
  52. No Error Handling For You
  53. Continuation-passing-style in Golang
  54. Generating Images
  55. Avoiding Management
  56. Vibe Coding, A Kind of Success
  57. Dependency Injection with Thunks vs. Global Variables
  58. Vibe Coding Common Lisp Through the Back Door
  59. Thoughts on LLMs
  60. Roll Your Own Bullshit
  61. More Bullshit
  62. Management = Bullshit
  63. Purchasing White Elephants
  64. It Still Sucks
  65. Senior Programmers Have Nothing to Fear From AI
  66. Get Over It (ai content)
  67. Lisp Debugger Wins
  68. Well This Was Interesting
  69. Stupid reader tricks
  70. DES Machine
  71. Mea Culpa
  72. Emacs and Lisp
  73. Writing Your OS in Lisp
  74. Bloom Filter
  75. Why I Program in Lisp
  76. Lisp Programs Don't Have Parentheses
  77. Are You Tail Recursive?
  78. When Laymen Try to be Programmers
  79. Suddenly
  80. Blacksmithing and Lisp
  81. Lisp at Work
  82. Vibe Coding, final word
  83. Avoiding Stringly Typed Code
  84. Keep a REPL Open
  85. Angry Fruit Salad
  86. Vibed into non-functioning
  87. AI Silliness
  88. Hard Won Esoteric Knowledge
  89. Vibe Coding in Common Lisp, continued
  90. Vibe coding in Common Lisp
  91. The Obarray
  92. CLOS vs. message passing
  93. Object Last or First
  94. Just Keep Consing
  95. Series vs. streams
  96. Universal Function
  97. Obscure suggestions
  98. Defclass vs. defstruct
  99. Tip: Alphabetize arbitrary lists
  100. with-slots vs. with-accessors
  101. Symbol macros
  102. Advanced CLOS — update-instance-for-changed-class
  103. Unified table interface
  104. Advent of Code 2024: Day 25
  105. Advent of Code 2024: Day 24
  106. Advent of Code 2024: Day 23
  107. Advent of Code 2024: Day 22
  108. Collate / index-list
  109. Advent of Code 2024: Day 21
  110. Advent of Code 2024: Day 20
  111. Advent of Code 2024: Day 19
  112. Advent of Code 2024: Day 18
  113. Advent of Code 2024: Day 17
  114. Advent of Code 2024: Day 16
  115. Advent of Code 2024: Day 15
  116. Advent of Code 2024: Day 14
  117. Advent of Code 2024: Day 13
  118. Advent of Code 2024: Day 12
  119. Advent of Code 2024: Day 11
  120. Advent of Code 2024: Day 10
  121. Advent of Code 2024: Day 9
  122. FOLD and NAMED-LET implementations
  123. Advent of Code 2024: Day 8
  124. Advent of Code 2024: Day 7
  125. Advent of Code 2024: Day 6
  126. Advent of Code 2024: Day 5
  127. Advent of Code 2024: Day 4
  128. Advent of Code 2024: Day 3
  129. Advent of Code 2024: Day 2
  130. Advent of Code 2024: Day 1
  131. Advent of Code 2024: Day 0
  132. Out of Practice List-fu
  133. Valid Use Case for Copilot
  134. Iteration
  135. λ Calculus
  136. Substitution vs. State Transition
  137. GitHub glitch bites hard (and update)
  138. fold-… and monoids
  139. A Newbie Is Exposed to Common Lisp
  140. Dvorak and Lisp
  141. REBOL 1.0 Was Slow
  142. GitHub Copilot Revisited
  143. Scheme Interpreter: Conclusions
  144. Calling Conventions in the Interpreter
  145. More Inlining
  146. Inlinig Primitive Function Calls and Argument Evaluation
  147. Usual Integrations, Function Calls and Primitive Calls

2024 44

  1. Eliminating Deep Search
  2. Specialized Variables
  3. Specialized Environments
  4. Interpreting S-code
  5. Composing Binary Functions
  6. Dynamic Variables in Go
  7. I Don’t Use Monads
  8. Does CONS take its arguments in the wrong order?
  9. How to Blow an Interview
  10. Don't Try to Program in Lisp
  11. Lisp vs. golang
  12. Continuation passing style resource management
  13. Monkeys vs. Shakespeare
  14. A YouTuber's First Look at Lisp
  15. Goto not that harmful
  16. Embrace the Suck
  17. Decode a Float (Solution)
  18. Decode a Float
  19. D-day, 80 years ago today
  20. Multithreading and Immutable Data
  21. Roll Your Own Syntax
  22. If I Were in Charge
  23. Exception Handling for Control Flow
  24. ECS in CLOS
  25. Why I Want Tail Recursion
  26. Rewrite rules
  27. If only ...
  28. Maybe machine (part 2)
  29. Maybe machine
  30. Readability at Google
  31. The Way of Lisp or The Right Thing
  32. Motion without Integration
  33. Animation: Two Methods
  34. Statements and Expressions
  35. State Machines
  36. Plaformer Game Tutorial
  37. You May Not Need That :around Method
  38. With- vs. call-with-
  39. Porting a Game from Java (update)
  40. Porting a Game from Java
  41. Bilinear Fractional Transformations
  42. Infinite Composition
  43. Exponentiating Functions
  44. Roll Your Own Linear Fractional Transformations

2023 10

  1. GitHub Co-pilot Review
  2. Syntax-rules Primer
  3. Greenspuns tenth rule of programming
  4. Off-sides Penalty
  5. The Garden Path
  6. Playing with AI
  7. Fails Static Type Check, but Runs Anyway
  8. Tail recursion in REBOL
  9. Lisp Essential, But Not Required
  10. Raymarching in Lisp

2022 14

  1. Lisp: Second impression
  2. Lisp: First Impressions
  3. Observationally Functional
  4. Playing with raycasting
  5. Drawing a circle
  6. Playing with graphics
  7. Let's Play Wordle
  8. Named Lambda and Named Let
  9. Let's talk to GitHub
  10. Series tips and tricks
  11. Obviously
  12. Symbols vs. Strings
  13. Imperative vs. Declarative
  14. Idle puzzles 2: Revenge of the Shift

2021 13

  1. Idle puzzles
  2. Update October 2021
  3. Tail recursion and fold-left
  4. A Floating-point Problem
  5. Fold right
  6. Stupid Y operator tricks
  7. β-conversion
  8. Substitution
  9. Lightweight table
  10. η-conversion and tail recursion
  11. Can continuation passing style code perform well?
  12. Early LISP Part II (Apply redux)
  13. Early LISP

2020 22

  1. Apropos of Nothing
  2. Stupid pattern matching tricks
  3. A polygot program puzzle
  4. Anaphoric if
  5. Macro pitfalls
  6. Four ways to use macros
  7. Dispatching
  8. The pros and cons of Agile
  9. But what if you really want to push a stack frame?
  10. Afraid of Tail Recursion
  11. Afraid of Recursion
  12. Unsyndicated blog
  13. Groups, semigroups, monoids, and computers
  14. Math is hard, let's go shopping
  15. Palindromes, redux, and the Sufficiently Smart Compiler
  16. Cons cells vs. Linked Lists
  17. Just for fun, transformations on lists
  18. Gendl / SBCL / Ubuntu / WSL / Windows and an experiment in live blogging
  19. Micro-services
  20. If 6 was 9
  21. Remotely like a procedure call
  22. Semi-abstract data types

2019 5

  1. Stringly typed
  2. 100% Coverage
  3. I think you left something out
  4. (map append elements)
  5. “No ‘x’ in ‘Nixon’”

2016 4

  1. Race results are in
  2. Alist vs. hash-table
  3. Latest amusement
  4. Locality and GC

2015 8

  1. Integers and rationals
  2. A textbook case
  3. Currying and confusion
  4. Something less abstract
  5. Flipping the number line
  6. Linear fractional transforms and permutations
  7. n-ary functions and argument lists
  8. Playing with linear fractional transforms

2014 11

  1. A couple more homographic function tricks
  2. A useful, if somewhat pointless, trick with homographic functions
  3. Another stupid homographic function trick
  4. Stupid homographic function trick
  5. A use of Newton's method
  6. Solutions in search of problems
  7. Small puzzle solution
  8. Just a small puzzle
  9. Mini regex golf 3: set cover
  10. Mini regex golf 2: adding regular expressions
  11. Mini regex golf

2013 24

  1. Unexciting code
  2. Next step
  3. Putting it all together
  4. Mix in a little CLOS
  5. Putting things together
  6. Plus ça change
  7. Lets start with list b c d e f g h i j
  8. A bit harder
  9. Fairly easy
  10. Fun with Audit Trails!
  11. Persistent vectors
  12. Faking mutability
  13. You could use a monad.
  14. What about...
  15. Persisting CLOS objects
  16. alist or plist?
  17. Clos
  18. A simple persistent store
  19. A little lisp
  20. Confusion about functional programming
  21. Nasty details
  22. Esoterica
  23. About nothing
  24. Memory management

2012 14

  1. A little puzzle
  2. The ability to write nested loops is not a sufficient condition of employment
  3. Curious
  4. Package system horrors
  5. Another little puzzle
  6. 20 minute puzzle
  7. Another quick(?) question
  8. Recursion with no base case?
  9. 1 minute puzzle
  10. jrm bloviates
  11. ILC 2012 Call for Papers
  12. A bit more challenging
  13. Slightly trickier
  14. A small puzzle

2011 51

  1. Imagine that we have boatload of memory
  2. Little's Law and the weak generational hypothesis
  3. Little's Law and Lisp
  4. Little's Law
  5. Another chart
  6. Garbage collection gives us illusion of
  7. John mccarthy 1927 2011
  8. Boring charts
  9. Scheming and plotting
  10. Adjusting for extra collections
  11. Demystified
  12. Confusing
  13. Some GC stats
  14. Knee surgery
  15. A bit of a problem
  16. More on GC
  17. Thoughts about GC
  18. Measuring GC times
  19. 50 years ago — April 28, 1961
  20. Fun with scammers
  21. Oops
  22. Too much exercise
  23. Exercises
  24. Tail recursion and debugging
  25. Erf
  26. Continued Fractions
  27. A couple of puzzles
  28. And from left field
  29. Pretty charts
  30. More about that puzzle
  31. A puzzle and challenge
  32. Fifty Years Ago
  33. No stack? No problem.
  34. Where did the stack go?
  35. A harder puzzle
  36. An easy puzzle
  37. An early LISP program (circa Feb. 1960)
  38. Observations on the Feeling of the Ugly and Insignificant
  39. Critique of Reason
  40. I whine too much.
  41. More about shuffle.
  42. What's wrong with this?
  43. Replies to comments
  44. HowWhy (not) to write Factorial in Java.
  45. A day in the life
  46. A bit of history
  47. Fifty Years Ago
  48. Answers for Faré
  49. Some Bells and Whistles
  50. Schema evolution finessed
  51. EQL Specializers

2010 57

  1. Side effects
  2. Transactions, part I
  3. More persistence
  4. Oh yeah, about that persistent store....
  5. No ILC for me
  6. For your amusement...
  7. INTERNATIONAL LISP CONFERENCE 2010 - HIGHLIGHTS and CALL for PAPERS
  8. P ≠ NP (part 2 correction)
  9. P ≠ NP (part 2)
  10. P ≠ NP (part 1)
  11. Rambling
  12. Happy 80th Birthday to Neil Armstrong
  13. My definition
  14. What is a ‘computer program’?
  15. Crazy person thinks ``Lisp sucks''
  16. Dr Scheme name change
  17. Buoyancy
  18. An Illustrative Problem (Part II) correction
  19. An illustrative problem (part II)
  20. An illustrative problem.
  21. International Lisp Conference 2010 - Call for Papers
  22. It was quiet..... too quiet.....
  23. Choose and perish
  24. I have two collections and i need to
  25. Pathetic
  26. Looking forward to ILC 2010
  27. Doing it wrong
  28. Not too many takers on that batch of
  29. Pondering
  30. C++ vs. Lisp
  31. Quasi-cranks
  32. Importance of terminology
  33. Persistent store: a new record type
  34. Open letter to the SEC
  35. More on persistence
  36. The Education of JRM
  37. Whenever I write code in Java....
  38. Student m overhears argument between
  39. Another wacky idea
  40. Let me propose these thoughts is way of
  41. Its clear that you dont need to fully
  42. Student Z has another complaint
  43. Improvements
  44. Some code
  45. At this point we can save and restore
  46. Serialization
  47. I spent lot of time over weekend
  48. In that last post student z made
  49. Back in classroom student z complains
  50. Student b goes to student center to get
  51. Pop quiz fallout
  52. A pop quiz
  53. Followup
  54. A long series of posts
  55. Unbelievable
  56. A Wacky Idea
  57. High and dry

2009 114

  1. Simple Sabotage
  2. It seems problem with apropos was
  3. Innumeracy
  4. More bugs
  5. Cranks and crackpots
  6. Hunting bugs
  7. Dry spell
  8. Update
  9. Now that flat environments are working
  10. Allocating valuecell objects at every
  11. Oh yeah, those flat environments
  12. Short solution
  13. Short exercise
  14. grr... bugs
  15. To make a short story a bit longer
  16. To make a long story short
  17. Establishing a baseline
  18. Obvious idea
  19. Incremental definitions
  20. Details
  21. If you haven't heard
  22. Needed for a debugger?
  23. First-class environments
  24. Closing in
  25. Move, Down the road I go
  26. And nows the time, the time is now
  27. Yet more rambling
  28. More rambling
  29. Semi-coherent rambling
  30. Which Schemes?
  31. Temerity
  32. Stupid software
  33. A list of Scheme implementations
  34. A harder puzzle
  35. A small puzzle
  36. Hyperspec search engine
  37. I'm on You Tube
  38. How Not to Write Code, II
  39. How Not to Write Code
  40. Confessions of a Math Idiot
  41. How do you approach a problem?
  42. Why I don't like math
  43. Did you mean....?
  44. What's wrong with this code? II
  45. What's wrong with this code?
  46. Variable lookup
  47. Keep it simple
  48. Two little things
  49. Trauma on the ice
  50. An amusing problem
  51. The long tail
  52. 10 billion evaluations
  53. A bit of a stretch
  54. Having fits
  55. A little Scheme code
  56. Too much information
  57. Sometimes you have one of those moments
  58. Going backwards
  59. Dtft
  60. Getting rid of stubble
  61. Serialization, etc.
  62. I understand that erik naggum recently
  63. Of course I spoke too soon
  64. “The night was quiet — too quiet.”
  65. Oldspace and the Transporter
  66. MIT Scheme on C#
  67. Before i got distracted by tail
  68. You knew I'd say something, Part V
  69. You knew I'd say something, Part IV
  70. You knew I'd say something, Part III
  71. Interlude
  72. You knew I'd say something (Part II)
  73. You knew I'd say something.
  74. Ti explorer was clone of lmi lambda
  75. Taking a header
  76. A short followup
  77. Let's do the twist
  78. Some Lisp Machine minutia
  79. An obvious solution
  80. LMI Flashback
  81. No More Boring Code!
  82. Lisp Conference - Jerry Boetje
  83. Lisp Conference - Mike Blair
  84. Following John Soule
  85. Lisp Conference
  86. Wise up. Flush Scheme.
  87. Lisp conference - Hal Abelson
  88. Thank you
  89. Name Dropping
  90. A little bit of time
  91. Over with
  92. Just about ready
  93. At the conference
  94. On airplane heading east for ilc 09
  95. Talk to Greenblatt
  96. I like debugging
  97. Fast-forward to 1985
  98. ILC 09 is a go
  99. Theres not much more to say about 001
  100. A few speed bumps
  101. Writing blog entries is hard
  102. Not Lisp again....
  103. Computers? Ugh.
  104. I hate Lisp
  105. ILC 09 Coming up
  106. Propagator networks are pain to program
  107. Suppose we are writing chess playing
  108. Day 4, Part 2
  109. Day 4, Part 1
  110. Again we covered some more material
  111. You say ‘ad hoc’ as if it were a bad thing.
  112. Im afraid i have much less to report
  113. Adventures inAdvanced Symbolic Programming (part 1)
  114. Updated my scheme interpreter

2008 62

  1. My employer decided to buy me google
  2. You want to know what i think ill tell
  3. I havent dropped off face of planet but
  4. Now that we have static environments we
  5. Look! Up in the environment!
  6. Weird bug
  7. A curious bug
  8. Correction
  9. Did you know?
  10. In from generalized stack inspection
  11. Now it starts getting interesting
  12. S code
  13. Threaded interpreter
  14. Teaser
  15. Differential Benchmarking
  16. I changed search engine at top of page
  17. Interpreter Overhead
  18. Real life nastiness
  19. Done testing?
  20. Another test.
  21. A test post.
  22. What happens if i try to do in c what i
  23. In progress
  24. Final trick to improving performance is
  25. And on a completely different subject
  26. Dynamic Programming
  27. Last time i converted original bayesian
  28. In last post i finally figured out what
  29. Blog post 29
  30. Can i rant why not its my blog
  31. Blog post
  32. I had intended to write about
  33. A Slightly Less Simple Answer
  34. A simple puzzle
  35. Bayes theorem is trivially derived from
  36. Standard probability theory is based on
  37. Crackpots
  38. Probability and floating point
  39. Ill-formed problem number 2
  40. Ill-formed problem
  41. When anton chigurh comes to town youd
  42. Guess Who
  43. There doesnt seem to be too much bitrot
  44. Dusting off old code
  45. ‘Getting’ CLOS
  46. What was the question?
  47. Faster
  48. Learning by programming
  49. Oooh, code...
  50. Visit land of lisp
  51. One day student came to moon and said
  52. Woof
  53. Total silence
  54. A problem with monads?
  55. Functions do not return values
  56. Actor Model
  57. More monads
  58. How about them Monads?
  59. Three things are needed to support
  60. Claim 2 general tail recursion is
  61. Claim 1 language that supports ability
  62. Linearity

2007 61

  1. How many strings can you intern?
  2. You're a regular when...
  3. I saw that google is putting up 20m
  4. Origin of CAR and CDR
  5. Greenspun's Tenth Rule of Programming
  6. In the Kingdom of Nouns
  7. Consider this problem
  8. Signs of life
  9. Function Cells in C#
  10. That is my final answer
  11. Trying again
  12. Standard Object
  13. Im trying to figure out how clr type
  14. Weekend update
  15. Past that hurdle
  16. Got it!
  17. A Clue
  18. More fooling around with scripting
  19. Playing around
  20. I wonder
  21. Robert w
  22. How I do love blogging
  23. Another Couple of Graphs
  24. What's missing from this picture?
  25. Naive Bayesian Classifier
  26. From Histograms to Scatter Plots
  27. Where's the Lisp?
  28. More Graphs
  29. Some Graphs, Maybe
  30. An Unorthodox Idea: Measure Computer Performance in dB
  31. Reporting Performance
  32. Well i wrote some clustering code but
  33. Playing with Bayesian filters
  34. How Floating Point Works
  35. Why floating-point numbers are not intervals
  36. If you have studied information theory
  37. A Short Digression into a Question of Bits
  38. Pondering about clusters
  39. Buckets 'o Spam!
  40. My Erdös Number
  41. Domain-specific Languages in Lisp
  42. Plotting discrete events
  43. Why I am a knee-jerk anti-loopist.
  44. Added computer history web site to my
  45. Why does comp
  46. Oldie, but goodie
  47. I got reddited
  48. Put evil up on code site
  49. I always keep my computer up to date
  50. Stupid software
  51. Schematics
  52. Wasteland
  53. Just spent day trying to recover from
  54. Im kinda tired of digging through old
  55. Kurt vonnegut jr
  56. Added even more old lisp machine stuff
  57. Added bunch of lmi lambda code
  58. Added sys directory to jrm code project
  59. Added some more code to bits and pieces
  60. Restored my warp speed introduction
  61. Redid my google pages

2006 1

  1. First Post