Category: Programming

The Turing Tar Pit

Or, why is the most frequently-asked question on every web programming framework mailing list, “How do I serve a static page?” Alan J. Perlis’ epigram on programming #54: Beware of the Turing tar-pit in which everything is possible but nothing of interest is easy. Beware indeed. Abstraction isn’t free and the #1 sin of programming…

Read the full article

Literally Literal

This is just an random idea that popped into my head. Tell me if I’m crazy. Is there enough distinction between literals in code and values generated at runtime? In other words, what should be the difference between this: x = “Hello, World!” and this (syntax made up): x = new String(“Hello, World!”) In general,…

Read the full article

The Shape of Math

Consider the following simple bit of mathematical notation: the TeX code that draws it: \sqrt[4]{\frac{x^2+1}{x-1}} and the same thing in an S-expresion syntax like Common Lisp: (exp (/ (+ (exp x 2) 1)) (- x 1)) (/ 1 4)) and in a typical function-call notation like Python: pow((x**2+1)/(x-1), 1/4) I know which one I’d prefer…

Read the full article

Zeroth Post!

A Usenet posting sent me to a short article by Edsger W. Dijkstra titled Why numbering should start at zero. Now, I have never used a programming language that wasn’t zero-indexed (like Fortran), but neither have I adopted the habit of numbering lists starting with zero. I think the difficulty I have with zero-indexing is…

Read the full article

When Everything Is Software

I’m currently enjoying Ray Kurzweil’s The Singularity Is Near. I’m only about half-way through it, and despite some inital scepticism I find his data more than a little convincing. In the future Kurzweil sets out, everything will be a form of information. The bodies we inhabit and the world we interact with will be dynamically…

Read the full article

Perl in Lisp 0.1

Hello, Lisp world! This is my first released Common Lisp code. Perl in Lisp is a Common Lisp interface to the Perl 5 API. It allows you to run a Perl interpreter embedded inside Lisp and evaluate Perl code. It does not require any C wrapper code — the API definitions are done with CFFI…

Read the full article

The Naming of Namespaces

Or, How the Lisp-n Shall Inherit the Earth Humans like to name things. Like ourselves, Homo sapiens, Latin for “Primate that has taken leave of its senses.” Then there are engineers. Engineers like to name things too. Like SCSI, pronounced “scuzzy.” Or WYSIWYG, pronounced “wizzy-wig.” Or TTY, pronounced (I couldn’t believe this at first) “titty.”…

Read the full article

The Three Types of Computer User

I think nearly all computer users can be divided into three broad categories based on the way they think about computers. The vast majority of computer users are application-oriented. They have training and experience exclusively with commercial software. They understand concepts peculiar to computers such as files, folders, saving, and deleting. They live in a…

Read the full article