• The History, Controversy, and Evolution of the Goto statement

    This is the handout from a talk I presented at the local CS Colloquium.

    Abstract:

    This talk will touch on how standard usage patterns for the Goto statement became embodied in higher level control structures, ways in which higher level control structures can often express the intent of the programmer more clearly than lower level control structures, some of the controversy surrounding the Goto statement, common reasons for and ways of using Goto, and common ways of implementing arbitrary control structures in languages that do not contain the Goto statement.
  • Tips From a Lazy DSL Designer

    This is the handout from another talk. A video of the DSL talk was also made.

    Abstract:

    This talk will discuss various approaches to implementing Domain Specific Languages (DSLs), with an emphasis on ease of implementation. Some language specific techniques will be discussed, along with some more general approaches that can be applied in many programming languages. A couple of DSLs used within SSU/IT may be described if time permits.
  • Some Computer Prehistory and Early History

    This is the handout from another talk. A video of the computer prehistory and early history talk was also made.

    Abstract:

    This talk will superficially breeze through a few thousand years of computing and calculating history, discuss some ideas and technologies that played key roles in early computing, and describe some features of a few early computing devices. Special emphasis will be given to the ENIAC and some issues in decimal arithmetic.
  • The Stored Program Computer and Some Early Computational Abstractions

    This is the handout from another talk. A video of the stored program computer talk was also made.

    Abstract:

    The stored program computer held instructions and data in the same memory. This enabled programs to manipulate other programs (or even themselves!) and made it possible to decouple the external representation of a program from the actual instructions executed by the machine. This in turn allowed new forms of abstraction to be created and used by implementing them in software. This talk will discuss the creation of the stored program computer and some early software and hardware ideas related to computational abstraction.
  • Lisp Stuff

    • Simple Lisp Interpreter in C (no GC, no tail call optimization)

    • Simple Lisp Interpreter in C (no GC, has tail call optimization)

    • prog for Scheme

      Have you ever wished you could use "goto" in Scheme?

    • Purely functional letrec for Scheme

      Just for fun, a purely functional letrec based on the Y combinator. This one uses a dispatch function.

    • Another purely functional letrec for Scheme

      Another purely functional letrec based on the Y combinator. This one does the magic with a delayed tuple of sorts. It's longer, but I like it better because it feels more direct.

    • An implementation of Lisp 1.5 style Funargs for Scheme

      This uses fluid-let and call/cc to simulate the capture of a dynamic environment, as in Lisp 1.5 Funargs.

    • Funargs for PDP-1 Basic Lisp

      An implementation of Funargs for PDP-1 Basic Lisp (Described in This book, you can get a Software Kit for running it on SIMH)

    • Running Lisp 1.5 in the SIMH IBM 7094 emulator.

      Lisp 1.5, one of the earliest implementations of Lisp, has been resurrected after lying dormant for decades.

  • Logo Stuff

    • UCB Logo

      My favorite Logo implementation.

    • A dodecahedron picture, with Logo code for creating it

      This is useful when playing Hunt The Wumpus (a game written in BASIC that can run, for example, on Michael Haardt's Basic Interpreter)

    • List of Logo memos

      I dug through the MIT AI Lab publications trying to find anything I could that is relevant to the Logo project.

    • An implementation of FUNCTION aka funargs for UCB Logo

      This implements a limited form of Dynamic Closures for UCB Logo.

  • tomod.sh: A shell script for turning the first eight pages of a PDF into a PocketMod

  • My favorite Firefox extensions

  • My favorite pages on Ward's Wiki

  • Operating Systems

  • Languges