Wordlexpr: Compile-Time Wordle in C++20
Not participating in the hype around Wordle seemed wrong, and what better way to do it than to create it cleanly at compile time in C++20? Introducing Wordlexpr!
Go 1.21 may have a clear(x) builtin
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
Guile Steel: a proposal for a systems Lisp
Before we get into this kind of stream-of-consciousness outline, I'd like to note that very topically to this, over at the Spritely Institute (where I'm CTO, did I mention on here yet that I'm the CTO of a nonprofit to improve networked communication on the internet on this blog? because I don't think I did) we…
Lil: A Scripting Language
Lil is part of the technology that powers Decker , a multimedia creative tool inspired by HyperCard . Decker uses Lil for adding custom behavior to decks and the widgets within. Lil is designed to be learned in layers, but it is a richly multi-paradigm language which incorporates ideas from imperative, functional…
Trivia About Rust Types
Preface (by Jimmy Hartzell) I am a huge fan of Jon Gjengset’s Rust for Rustaceans, an excellent book to bridge the gap between beginner Rust programming skills and becoming a fully-functional member of the Rust community. He’s famous for his YouTube channel as well; I’ve heard good things about it (watching video…
A Rust match made in hell
I often write pieces that showcase how well Rust can work for you, and how it can let you build powerful abstractions, and prevents you from making a bunch of mistakes. If you read something like S...
Optimizing GoAWK with a bytecode compiler and virtual machine
How I sped up GoAWK by switching from a tree-walking interpreter to a bytecode compiler and virtual machine interpreter.
New integer types I’d like to see
(Most) C++ implementations provide at least 8, 16, 32, and 64-bit signed and unsigned integer types. There are annoying implicit conversions, discussions about undefined behavior on overflow (some think it’s too much UB, others think it’s not enough), but for the most part they do the job well. Newer languages like…
The case for dynamic, functional programming
If you're a fan of dynamic languages then you should also be a fan of functional programming.
Exercises for understanding Haskell Lenses (2019)
No matter how many blog posts and tutorials I read about lenses, it seems like there's no replacement for just using them to get an intuition. So here are some exercises I came up with. While they shouldn't be all that difficult, they build up from some basic knowledge about lenses up to the more advanced usages of…
Making Rust a Better Fit for Cheri and Other Platforms
Recently, Aria Beingessner published an interesting essay “ Rust’s Unsafe Pointer Types Need An Overhaul ”. There are several parts to this essay, all of which address issues which cause me pain in Rust, and which I would love to see fixed. I want to focus on one issue: Rust’s usize conflates address, data, and object…
#lang Lua
I'm currently working on a macOS app that's built with Racket and allows the user to write small scripts to process and filter some data. While Racket is definitely my preferred language and I could easily use it for these scripts, my target audience for this app would probably appreciate a more familiar language. I…
Fortran is easy to learn
Some may think Fortran is an archaic language, and certainly not one that should be taught, but in any respects modern Fortran is an exceptionally good language to teach programming in. Certainly b…
Beating the Averages (2001)
April 2001, rev. April 2003 (This article is derived from a talk given at the 2001 Franz Developer Symposium.) In the summer of 1995, my friend Robert Morris and I started a startup called Viaweb . Our plan was to write software that would let end users build online stores. What was novel about this software, at the…