How Lisp helped my RetroChallenge 2024 project

RetroChallenge announced the results of RC2024/10 and I'm honored to be among the winners.

Written in Interlisp, the WebCard project I entered the competition with extends the NoteCards hypermedia system to visit web sites. It defines a new type of hypertext node, the Web card, which holds a URL of a web site. Clicking a NoteCards link to a Web card directs the web browser of the host operating system to visits the URL.

In the final comments on my project the judges wrote:

Paolo implemented custom icons, improved URL handling, and provided documentation and demos on his WebCards digital Rolodex. The project is finished, works as intended, and was delivered on schedule... What a feat!

I owe meeting the deadline to two circumstances. The first is I was already familiar with the Lisp API of NoteCards from another project, which gave me a good understanding of how to control and extend NoteCards.

The other circumstance is a fundamental property of Lisp and interactive Lisp systems: the very fine granularity of execution.

At the Lisp REPL I can evaluate expressions spanning a wide spectrum of complexity. From short, elementary expressions such as variable lookups and individual function calls, to arbitrary combinations of function calls and accesses to data structures. To experiment with and learn about a specific feature I don't need to write a full program or build scaffolding. I can just construct suitable expressions that exercise the feature, run them, and immediately see the results.

When researching WebCard I evaluated expressions to validate the key pieces of the intended solution, such as controlling a web browser from Lisp and storing data in NoteCards cards. It's a more fundamental approach than building a prototype, it's like making sure the building blocks of a prototype work as intended.

This, and the rich toolbox of the Medley environment, gave the confidence I could fill in the details and deliver the project on time. It also accommodated for some margin I ended up needing because of unexpected issues and the inevitable yak shaving.

#WebCard #Interlisp #Lisp

Discuss... Email | Reply @amoroso@oldbytes.space