Elektrine
EN
Log in Register
Paige Chat Timeline Communities Gallery Videos Email DNS VPN Uptime Kairo
Back to Timeline
Remote

raganwald.com

@raganwald@functional.cafe
  • Open on functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming.

Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing.

Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

0 Followers
0 Following
20 Posts
Joined May 06, 2025
Creative Works:
https://raganwald.com/creative-works.html
Non-programming toots:
https://social.bau-ha.us/@raganwald
JavaScript Allongé (pdf):
https://raganwald.com/assets/books/javascriptallongesix.pdf
JavaScript Allongé ($):
https://leanpub.com/javascriptallongesix

Posts

Open post
raganwald
raganwald.com @raganwald@functional.cafe · Mar 20, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe

RE: @raganwald@social.bau-ha.us

My author is at it again.

1
0
0
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Mar 17, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe

"Code should be written to be verified, and only incidentally to be executed"

Proposition: Code written in functional languages is both intrinsically and extrinsically more verifiable. Intrinsically because of idempotency. Extrinsically because social forces happen to have resulted in code written in languages like Elixir to contain patterns that are easier to model.

The attached opinion piece suggests this makes them better languages for LLMs. But that also makes them better languages, period.

https://www.thefuriousopposites.com/p/grace-hoppers-revenge

👋🏽 @cdegroot@mstdn.ca

4
1
1
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Mar 11, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe

A fresh result in the pursuit of finding something interesting about "balanced parentheses."

Having already sorted out how to generate every finite balanced parentheses string, we now can parse a string and determine if it is balanced with recursion.

https://github.com/raganwald/balanced-parentheses/blob/main/src/typed-dyck.test.ts#L57

1
0
1
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Mar 04, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe

One step closer to writing the words of my next blog post. The theme is "balanced parentheses, but generating them, not recognizing them."

I now have an implementation of generators for simple BP (aka "Dyck-1 languages") and Typed BP (aka "Dyck 2+ languages"):

https://gist.github.com/raganwald/31f12e78d47a69d44f3ebe172b64e803

The first 19 words output by the typed generator with pairs "()", "[]", and "{}":

""
"()", "[]", "{}",
"(())", "[()]", "{()}",
"(())()", "[()]()", "{()}()",
"()()", "[]()", "{}()",
"()[]", "[][]", "{}[]",
"(())[]", "[()][]", "{()}[]"

Work in Progress on Generating Balanced Parentheses
Gist

Work in Progress on Generating Balanced Parentheses

Work in Progress on Generating Balanced Parentheses - base.ts

3
0
1
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Mar 02, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe

Work in progress on an essay about flipping the old "balanced parentheses" problem around: Instead of recognizing balanced parentheses, how would we go about generating them?

Here's the first milestone: We first construct a mapping from the positive integers to pairs of non-negative integers to establish a bijection and an ordering, then we map non-negative integers to dyck words recursively.

https://gist.github.com/raganwald/31f12e78d47a69d44f3ebe172b64e803

Work in Progress on Generating Balanced Parentheses
Gist

Work in Progress on Generating Balanced Parentheses

Work in Progress on Generating Balanced Parentheses - base.ts

0
0
0
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Feb 28, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe
Replying to @raganwald@functional.cafe
"Pattern Matching and Recursion" approaches balanced parentheses from the perspective recursively defining words in the language: https://raganwald.com/2018/10/17/recursive-pattern-matching.html
0
0
0
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Feb 28, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe
Replying to @raganwald@functional.cafe
The relationship between the types of machines that recognize valid expressions in a language, classes of computation, and classes of language grammars is extremely interesting, even if the some of the essays written about it are brutal: https://raganwald.com/2019/02/14/i-love-programming-and-programmers.html
1
1
0
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Feb 28, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe
Replying to @raganwald@functional.cafe
In days of yore, it was common to ask junior programmers a "fizzbuzz" question to test extremely basic ability to write code. One such question was, “Write a function that takes as its argument a string, and returns whether the string contains balanced parentheses.” https://raganwald.com/2018/11/14/dyck-joke.html
1
2
0
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Feb 28, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe

“In the theory of formal languages of computer science, mathematics, and linguistics, a Dyck word is a balanced string of brackets. The set of Dyck words forms a Dyck language. The simplest, Dyck-1, uses just two matching brackets, e.g. ( and ).”

—https://en.wikipedia.org/wiki/Dyck_language

5
4
2
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Feb 24, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe
Replying to @m3tti@functional.cafe
@m3tti Perhaps they weren't smarter, but they were further ahead on their own life's arc when they said that, than you are today. 💪🏽 @sitcom_nemesis
1
0
0
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Feb 24, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe

@sitcom_nemesis@tech.lgbt “A language that doesn't affect the way you think about programming, is not worth knowing.”

—Dr. Alan J. Perlis

https://www.cs.yale.edu/homes/perlis-alan/quotes.html

3
2
1
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Feb 23, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe
Replying to @phred@weirder.earth
@phred I remember so many people cackling "CoffeeScript is dead" when ES2015 dropped. But it was only dead in the least interesting way, the way that matters for CTOs planning tooling migrations and looking at pools of talent. I prefer to think of ES2015 as "Merging CoffeeScript into main." It is still there, because JS today wouldn't be what it is if CoffeeScript hadn't lit a fire under JS' butt.
2
0
0
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Feb 23, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe

Espresso Ristretto.

I miss CoffeeScript, I was very fond of that language and the lovely experience of working with CoffeeScript, Backbone, and even jQuery during a time when interfaces were considerably more CRUD-forward.

https://raganwald.com/assets/books/coffeescript-ristretto.pdf

4
2
0
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Feb 23, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe

Postmodernist Programming: “Emulating GOTO in Scheme with continuations”

https://terezi.pyrope.net/ccgoto/

2
0
1
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Feb 14, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe

“Learn Lisp the Hard Way,” 2nd draft, last updated in 2022.

https://llthw.common-lisp.dev

#lisp #commonLisp

8
0
3
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Feb 13, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe

It was once fashionable to ask "pet" interview questions of software engineers. These questions usually demanded that the applicant know—or figure out on the fly—some algorithm with an intermediate- or advanced technique, like recursion.

One variation on the "pet question" interview would seem to ask for an algorithm, but in actuality there would be a quick-and-dirty "hack" such as using a regex to perform replacements in a text file.

"Alice and Bobbie and Sharleen and Dyck" is a fable that reverses the second interview type: The interviewer is looking for a pushdown automaton, and the interviewee presents the quick-and-dirty hack.

https://raganwald.com/2018/11/14/dyck-joke.html

p.s. Yes I have written balanced parentheses code live in an interview. I got the job anyways.

5
2
3
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Feb 12, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe

“A Conversation with Alan Kay” (2004)

Contains his famous ’programming is a pop culture’ quote and his perspective on the tenuous relationship between success and perceived merit in the software industry.

https://queue.acm.org/detail.cfm?id=1039523

6
0
1
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Feb 12, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe

A very famous cover illustrated by Robert Frank Tinney (1947 - 2026). The mass adoption of OOP was the result of many interlocking changes, but this cover of this issue of Byte did a great deal to popularize Smalltalk and contemporaneous OO languages.

This issue led me to installing Digitalk's Smalltalk/V, and also to learning all about commands, undo, redo, and Object Pascal.

Thank you, Robert. Others may have done the engineering that captured my interest, but your illustration captured our attention and primed us to have fun while learning.

https://en.wikipedia.org/wiki/Robert_Tinney

42
2
12
2
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Feb 10, 2026
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe

Try APL in your browser!

But first, a little motivation to get you started: Game of Life in APL. Pay attention to how interactive APL programming is completely different from other ✌🏽dynamic✌🏽 languages like Ruby or JavaScript. It's much more like Smalltalk or LISP.

https://m.youtube.com/watch?v=a9xAKttWgP4

Now try it for yourself:

https://tryapl.org/

22
2
16
0
Open post
raganwald
raganwald.com @raganwald@functional.cafe · Oct 24, 2025
raganwald.com
@raganwald@functional.cafe

Reg "raganwald" Braithwaite's account for discussing functional programming and shamelessly plugging essays about programming. Follows are NOT endorsements. This account often follows back, and unappealing content happens to be noticed, this account may mute locally instead of unfollowing. Flying, careers, society and other stuff is over on @raganwald@social.bau-ha-us.

functional.cafe

One of the finest things ever written abut the state of computing... And an excellent shaggy dog story: “The Emperor's Old Clothes,” Dr. Tony Hoare's 1980 Turing Award lecture.

http://pascal.hansotten.com/uploads/hoare/The%20Emperor's%20Old%20Clothes.pdf

9
0
1
1

Remote instance

functional.cafe
Open on original server

Media

313k7r1n3
Elektrine

Tor hidden service

elekhj7afj4qnrr4yd3bkzslsyo5jgfxw3orgjkhlcxifueodybyiiad.onion

Platform

  • Email
  • Chat
  • Timeline
  • Communities
  • VPN
  • DNS

Company

  • About
  • Contact
  • FAQ

Legal

  • Terms of Service
  • Privacy Policy
  • Warrant Canary
  • Lite (no JS)
  • VPN Policy
  • Source code

Support

  • support@elektrine.com
  • Report Security Issue
Mail client setup IMAP mail.elektrine.com:993 POP3 mail.elektrine.com:995 SMTP mail.elektrine.com:465
© 2026 Elektrine. All rights reserved. Server: 22:35:21 UTC