01 May 23

While not recognized in the United States (due to former President Eisenhower and the wave of anti-communist attitudes during the Cold War), International Workers Day commemorates a series of events in the U.S. that would forever change U.S. politics and labor, and led to the blossoming of the Jewish anarchist movement, a wing of which was deeply grounded in faith.

by eli 2 years ago


30 Apr 23

For more than two decades, this has been the National’s grist: not the major devastations but the strange little ache that feels like a precondition to being human.

by eli 2 years ago

The following table contains all thirty-five instructions in the CHIP-8 instruction set. NNN refers to a hexadecimal memory address. NN refers to a hexadecimal byte. N refers to a hexadecimal nibble. X and Y refer to registers.

by eli 2 years ago

CHIP-8 is an interpreted minimalist programming language that was designed by Joseph Weisbecker in the 1970s for use on the RCA COSMAC VIP computer. Due to its hexadecimal format, it was best suited to machines with a scarcity of memory, as minimal text processing had to be performed by the interpreter before a program could be executed. This property inevitably led to its implementation on a variety of hobbyist computers aside from the VIP, such as the COSMAC ELF, Telmac 1800, and ETI 660.

by eli 2 years ago

This article is meant to address some of the practical implications of the Chip8 instruction set and how it can be applied to writing games. Examples will be given using Octo assembler, but should be easy to translate into the assembler of your choice or raw Chip8 bytecode.

by eli 2 years ago

This document builds on concepts described in the Octo readme and beginner’s programming guide, and presents step by step instructions for creating a simple arcade-style game with Octo, along with the rationale behind design decisions.

by eli 2 years ago

This document is meant to allow someone with little to no experience programming to ease into working with Octo and Chip8. It introduces basic programming concepts as well as the features of the Octo programming language.

by eli 2 years ago

What I now advocate and try to practice is slightly tangential to both of these (but probably a spiritual cousin to YAGNI): “Do it the dumb way first”. I mean, just get in there and write some terrible code that does the task in the most obvious way possible. Copy and paste little chunks. Have crappy function and variable names. Try to stick with it as long as you can bear.

by eli 2 years ago

The major compilers have an enormous number of knobs. Most are highly specialized, but others are generally useful even if uncommon. For warnings, the venerable -Wall -Wextra is a good start, but circumstances improve by tweaking this warning set. This article covers high-hitting development-time options in GCC, Clang, and MSVC that ought to get more consideration.

by eli 2 years ago

29 Apr 23

And of course, the first thing to do is to create arrays. But… Forth has no arrays! Oh god! What to do!? CREATE .. DOES>. Amazing, truly.

by eli 2 years ago

A natural question that beginners often ask is: Why doesn’t Forth have features that are standard in other languages, for example, arrays? The answer is that Forth is so facile at creating new data types that it is usually easier to invent something that exactly suits your needs than it is to force your program to conform to an arbitrary standard.

by eli 2 years ago

This paper describes patternForth, an extension of the Forth language to handle problems of string manipulation and pattern matching, in real time, for industrial control applications.

by eli 2 years ago
Tags:

The DOES> concept seems to be one of the most misunderstood and mystifying aspects of Forth. Yet DOES> is also one of Forth’s most powerful features – in many ways, it anticipated object- oriented programming. The action and power of DOES> hinges upon a brilliant innovation of Forth: the Code Field.

by eli 2 years ago

A selection of papers I have published, seminars I have presented, and computer programs I have written, that are available on this site.

A selection of interesting historical documentation – especially on forth.

by eli 2 years ago


When you say “language,” most programmers think of the big ones, like FORTRAN or COBOL or Pascal. In fact, a language is any mechanism to express in- tent, and the input to many programs can be viewed profitably as statements in a language. This column is about those “little languages.”

by eli 2 years ago

As the climate crisis deepens, experts recognize that, globally, ponds store as much carbon as the world’s oceans, and sequester atmospheric carbon at a rate 20 to 50 times faster than trees. For millennia, ponds in the Bengal delta have been scrubbing carbon from the atmosphere and sinking it in the soil. As they continue to disappear, so do hopes of holding back a worsening climate crisis.

by eli 2 years ago

Gefs is a new file system built for Plan 9. It aims to be a crash-safe, corruption-detecting, simple, and fast snapshotting file system, in that order. Gefs achieves these goals by building a traditional 9p file system interface on top of a forest of copy-on-write Bε trees. It doesn’t try to be optimal on all axes, but good enough for daily use.

by eli 2 years ago saved 2 times

28 Apr 23

ompact models of fundamental ideas have aided thinking in many sciences. We think they haven’t been done often enough in computing, but when done, have had similar positive effects [Mo]. We want our model to be explanatory, but we also want it to run well enough to serve as a practical artifact with a wide range of application. A good model of personal computing should certainly cover today’s good ideas and scales, but because it is an extreme abstraction, it does not have to reverse engineer shortfalls in unity and design; instead, it can be unified as much as possible if it covers the worthwhile parts of the end-user experiences.

by eli 2 years ago saved 2 times