All posts by scruss

The Cuisenaire-Gattegno Log Cabin

Rods! Or more specifically, Cuisenaire® Rods! Staples of my childhood arithmetic education: coloured wooden rods (now plastic, which will save them from the mouldy fate that befell some sets at Mearns Primary School), 1 × 1 × 1–10 centimetres long. Use them for counting, number lines, don’t-do-that renditions of Sun Arise, but absolutely never for flinging at tiny classmates.

Since it may actually have been Mrs. Cuisenaire who came up with the concept of rods, I drew a log cabin quilt section in virtual rods. The Gattegno in the title refers to Caleb Gattegno, the mid-century educator who popularized Cuisenaire’s work.

Should you too feel the need to have a virtual set of rods, here are some files you can play with in Inkscape (or any other SVG-aware editor):

rods.svg — A palette of horizontal and vertical rods
rods.svg — A palette of horizontal and vertical rods
rods-quilt.svg - source for the header image
rods-quilt.svg – source for the header image

The colours might be a bit off reality, but they’re near enough. I found it helpful to set a grid snap in Inkscape to 1 cm so that you could get the rods to align easily. If you want to get really nerdy, here’s the PostScript source I used to create the rods: rods.ps. I think I finally got the hang of basic arrays in PostScript …

Creating this was in no way a means of me displacing getting round to doing my taxes this year, nosirree.


Instagram filter used: Normal

View in Instagram ⇒

Running FreeBASIC on Raspberry Pi

FreeBASIC is a pretty nifty cross-platform BASIC compiler. It uses a Microsoft-like syntax, has an active user and developer base, and is quite fast. Building the latest version on a Raspberry Pi is a bit of a challenge, though.

FreeBASIC 1.01 demo running on a Raspberry Pi
FreeBASIC 1.01 demo running on a Raspberry Pi from Geany

Part of the problem is that FreeBASIC is mostly written in FreeBASIC, so you need a working compiler to bootstrap the latest version. The following steps worked for me:

  1. Install some necessary packages:
    sudo apt-get install build-essential libncurses5-dev libffi-dev libgl1-mesa-dev libx11-dev libxext-dev libxrender-dev libxrandr-dev libxpm-dev ncurses-doc libxcb-doc libxext-doc libgpm-dev git libcunit1 libcunit1-dev libcunit1-doc

    (You don’t really have to include the cunit packages; they’re only needed if you run tests before installation.)

  2. Download a nightly binary from Sebastian’s server: http://users.freebasic-portal.de/stw/builds/linux-armv6-rpi/  and install it:
    unzip fbc_linux_armv6_rpi_version.zip
    cd fbc_linux_armv6_rpi/
    chmod +x install.sh
    sudo ./install.sh -i

    Don’t delete the installation folder just yet.

  3. Grab the latest version of the source from github:
    cd
    git clone https://github.com/freebasic/fbc.git

    Change directory to the new FreeBASIC source folder (cd fbc), and type make. (or, on a Raspberry Pi 2, make -j4 to use all the cores …). After a while (in my tests, about 52 minutes on a 512 MB Raspberry Pi, or around 6½ minutes [!] on a Raspberry Pi 2), it should finish. If there’s a bin/fbc file, the compilation worked!

  4. Before you install the new compiler, uninstall the old one: change directory to the fbc_linux_armv6_rpi folder, and type:
    sudo ./install.sh -u
  5. Once that’s done, go back to the new fbc folder, and type:
    sudo make install

And you’re done! You can delete the fbc_linux_armv6_rpi folder now. If you don’t mind it taking up space, keep the fbc folder to allow you a quick rebuild of the latest version of the compiler with:

cd fbc
git pull
make
sudo make install

Note that this will build a native armv7l compiler on a Raspberry Pi 2, and an armv6l one on a Raspberry Pi. This means you can’t run binaries you built on a Raspberry Pi 2 on a Raspberry Pi (you’ll get an Illegal Instruction error), but you should be able to run ones built on a Raspberry Pi on a Raspberry Pi 2. Binary compatibility is overrated, anyway …

The Gadsden Flag Nouveau

Instagram filter used: Normal

View in Instagram ⇒

I made this after being inspired by this MetaFilter comment. There’s a PDF linked from the image below:

gadsden_nouveau