Charles Childers


blog | parable | retro | ios apps | fountain pens


September 23, 2016

Programming

I've been slowly working on Nga, Retro, and to a lesser degree Parable.

Nga

Nga is basically done. There are 27 instructions, support for packing up to four instructions per cell, and it allows for easy addition of custom instructions. The primary toolchain includes an assembler (Naje) and a compiler for a Forth-style syntax (Nuance). There's also a dissassembler and PL/0 compiler. All of the code is in C, except for the last two tools.

Rx

Rx is an experiment in building a new Forth, based on my work with Retro. Consider it to be "Retro eXperimental". Being written from the ground up for Nga, it follows a similar approach in providing the basics (compiler, interpreter, word classes, prefixes, some essential stack and logic functions), but allowing for addition of I/O on a per-application basis.

It's fundamentally simpler than Retro 11. There's no fancy metacompiler (the kernel is written in the Nuance preprocessor and converts to plain Naje assembly). No relocations or massive revectoring potential. No parser. (This is an I/O matter, so is left up to the user to implement as needed). But it's suprisingly complete. The core wordset is less than 60 functions and data structures.

With the Ngita distribution of Nga I've wrapped the I/O instructions and put together a simple interactive Forth using it.

I also started work on a C API to control Rx. This is necessary for my plans for an embeddable Parable and some other things I want to explore. In the next couple of months I hope to have some interesting things to share.

Retro and Ngaro

There's still some life in Retro 11. When I began on the 11.x releases I informally committed to keeping source compatibility for a 5-7 year period. This time is now over. I'm not making any big changes at this point, but a maintentance release is coming in a few weeks.

A few new implementations of Ngaro have surfaced. I hope to include them in the next release.

Parable

I haven't done a lot with Parable since summer. I've been focusing on Nga and Rx, with a goal of getting to a point where I can build a Parable subset for embedded work. It's getting closer.

Thanks to the earlier effort to write a Parable interpreter in C I already have a functional parser and parts of the compiler. When the Rx C API is completed I'll work to move the incomplete bits over to use it and add some additional instructions for dealing with slices and type information.

I'm also going to be updating Apologue to use the PaaS backend so that the current full Parable can be used more easily. I had done some work over the summer to try and embed the Python implementation into an iOS app but haven't had much success yet.

Cycling

After being without my bike for a week while having the wheel rebuilt I purchased a second bike in late August. So I now have two:

I have a few quick observations:

I now prefer riding on the 520. It just feels nicer than the 7.2 FX, and it's made the hills much easier to deal with.

Pens

I currently have in my daily use:

And in occasional use:

I've passed my Lamy Joy to my wife and the other Kaweco Sports to my oldest kids. The Cross pen is currently uninked. It's too thin for significant use and I still find the cap annoying.

My ink color selections have improved as I now have a different ink in each pen.

Other than the Liliput which is too small for a converter, all of the pens are using bottled ink.

Health

My health has been slowly improving. I still have a lot of trouble sleeping, but I've lost some weight (48 pounds since May) and no longer use insulin (controlling blood sugar through strict diet). I'll hopefully continue with the weight loss as the months progress.