Dorion Mode

December 24, 2020

Eulora v0.1.2 client on JWRD Gentoo

Filed under: Eulora, JWRD — Robinson Dorion @ 23:45

Working down the path of playing the masterclass in economy, I managed to build the Eulora v1 client on Gentoo. Once I got the initial environment set up, I followed the Diana Coman's installation notes which provide the lists of dependencies, but in debianspeak. My first task was then to figure what those mean in terms of Gentoo, the results of which are presented in the table below. As you can see, the footnotes provide insight to the USE flags I used as well as any dependencies that were pulled in during the process.

Debian/Ubuntu 10 Gentoo
autoconf sys-devel/autoconf1
bison sys-devel/bison2
build-essential N/A3
curl net-misc/curl4
doxygen app-doc/doxygen5
flex sys-devel/flex6
ftjam dev-util/ftjam7
g++ Rolled in GCC build8
lib3ds-dev media-libs/lib3ds9
libasound-dev media-libs/alsa-lib10
libcairo-dev x11-libs/cairo11
libcairomm-1.0-dev dev-cpp/cairomm12
libcal3d-dev media-libs/cal3d13
libcppunit-dev dev-util/cppunit14
libfreetype6-dev media-libs/freetype15
libgl1-mesa-dev x11-libs/libGLw 16
libgtk2.0-dev x11-libs/gtk+-217
liblcms-dev media-libs/lcms18
libmng-dev media-libs/libmng19
libode-dev dev-games/ode20
libogg-dev media-libs/libogg21
libopenal-dev media-libs/openal22
libpng12-dev media-libs/libpng23
libspeex-dev media-libs/speex24
libtool sys-devel/libtool25
libvorbis-dev media-libs/libvorbis26
libwxbase2.8-dev x11-libs/wxGTK27
libwxgtk2.8-dev Included in x11-libs/wxGTK
libx11-dev x11-libs/libX128
libxaw7-dev x11-libs/libXaw29
libxext-dev x11-libs/libXext30
libxrender-dev x11-libs/libXrender31
libxxf86vm-dev x11-libs/libXxf86vm32
mesa-common-dev media-libs/mesa33
nvidia-cg-toolkit media-gfx/nvidia-cg-toolkit34
pkg-config dev-util/pkgconfig35
python-dev N/A, Ref
subversion dev-vcs/subversion36
swig dev-lang/swig37
zlib1g-dev sys-libs/zlib38

From there, I followed I followed her guide from step 3 nearly verbatim.

gpg --verify cal3d.tar.gz.diana_coman.sig cal3d.tar.gz
gpg --verify cal3d.tar.gz.diana_coman.sig cal3d.tar.gz
gpg --verify eulora-v0.1.2b.tar.gz.diana_coman.sig eulora-v0.1.2b.tar.gz
tar -zxvf cal3d.tar.gz
tar -zxvf cs_July24.tar.gz
tar -zxvf eulora-v0.1.2b.tar.gz
cd cal3d ; autoreconf --install --force
./configure --prefix=$HOME/dev/cal3d
make install
export LD_LIBRARY_PATH=$HOME/dev/cal3d/src/cal3d/.libs/:$LD_LIBRARY_PATH
cd ../cs-forupload/
./configure --without-java --without-perl --without-python --without-3ds --with-cal3d=$HOME/dev/cal3d39

(as root)
ln -s /usr/bin/jam /usr/bin/ftjam
(as non-root)
time ftjam -aq libs plugins cs-config walktest40
cd EuloraV0.1.2/
export CRYSTAL=$HOME/dev/cs-forupload
./configure --with-cal3d=$HOME/dev/cal3d
ftjam -aq client
export LD_LIBRARY_PATH="$HOME/dev/cal3d/src/cal3d/.libs/:$HOME/dev/cs-forupload/:"$LD_LIBRARY_PATH
vim eu.sh41
chmod +x
cd data/
vim servers.xml42
cd ..

Et voila.


  1. [ebuild R ] sys-devel/autoconf-2.69:2.5::gentoo USE="-emacs" 1187 KiB []
  2. [ebuild R ] sys-devel/bison-3.0.4-r1::gentoo USE="examples* -nls* -static {-test}" 0 KiB []
  3. Debianism afaiu []
  4. [ebuild R ] net-misc/curl-7.54.1::gentoo USE="ssl -adns -http2 -idn -ipv6 -kerberos -ldap -metalink -rtmp -samba -ssh -static-libs {-test} -threads" ABI_X86="(64) -32 (-x32)" CURL_SSL="openssl -axtls -gnutls (-libressl) -mbedtls -nss (-winssl) []
  5. [ebuild N ] media-libs/jbig2dec-0.13-r4::gentoo USE="-png -static-libs {-test}" 0 KiB
    [ebuild N ] app-text/poppler-data-0.4.7::gentoo 0 KiB
    [ebuild N ] app-arch/cpio-2.12-r1::gentoo USE="-nls" 0 KiB
    [ebuild N ] media-libs/lcms-2.8-r1:2::gentoo USE="threads zlib -doc -jpeg -static-libs {-test} -tiff" ABI_X86="(64) -32 (-x32)" 0 KiB
    [ebuild N ] app-text/libpaper-1.1.24-r2::gentoo ABI_X86="(64) -32 (-x32)" 0 KiB
    [ebuild N ] app-arch/rpm2targz- 0 KiB
    [ebuild N ] media-libs/openjpeg-2.1.1_p20160922:2/7::gentoo USE="-doc -static-libs {-test}" ABI_X86="(64) -32 (-x32)" 0 KiB
    [ebuild N ] media-fonts/urw-fonts-2.4.9::gentoo USE="X" 0 KiB
    [ebuild N ] app-text/ghostscript-gpl-9.21::gentoo USE="X -cups -dbus -gtk -static-libs -tiff -unicode" L10N="-de -ja -ko -zh-CN -zh-TW" 28488 KiB
    [ebuild N ] app-doc/doxygen-1.8.13-r1::gentoo USE="debug -clang -doc -dot -doxysearch -latex -qt5 (-sqlite)" 4784 KiB []
  6. [ebuild R ] sys-devel/flex-2.6.1::gentoo USE="-nls* -static {-test}" ABI_X86="(64) -32 (-x32)" 0 KiB []
  7. [ebuild N ] dev-util/ftjam-2.5.3_rc2-r1::gentoo installed at /usr/bin/jam, I made ln -s /usr/bin/jam /usr/bin/ftjam []
  8. Some insight on g++

    Keruskerfuerst is right, the "bootstrap" and "build" USE flags should only be used while creating the stage1 and stage2 tarballs, which do not include C++ support. Rebuild gcc without these flags and you should be all set (anyways, do a revdep-rebuild after that for any possible libraries missing).

    [ebuild R ] sys-devel/gcc-4.9.4:4.9.4::gentoo USE="cxx debug* (multilib) nptl openmp sanitize vtv (-altivec) (-awt) -cilk -doc (-fixed-point) -fortran* -gcj -go -graphite (-hardened) (-libssp) -nls* -nopie -nossp -objc -objc++ -objc-gc -regression-test -vanilla" []

  9. [ebuild N ] media-libs/freeglut-3.0.0::gentoo USE="debug -static-libs" ABI_X86="(64) -32 (-x32)" 410 KiB
    [ebuild N ] media-libs/lib3ds-2.0.0_rc1::gentoo 418 KiB []
  10. [ebuild R ] media-libs/alsa-lib-1.1.2::gentoo USE="debug -alisp -doc -python" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7" 0 KiB []
  11. [ebuild R ] x11-libs/cairo-1.14.8::gentoo USE="X debug* glib opengl* svg (-aqua) (-directfb) (-gles2) -static-libs -valgrind -xcb" ABI_X86="(64) -32 (-x32)" 0 KiB []
  12. [ebuild N ] dev-libs/libsigc++-2.10.0:2::gentoo USE="-doc -static-libs {-test}" ABI_X86="(64) -32 (-x32)" 3706 KiB
    [ebuild N ] dev-cpp/cairomm-1.12.0-r1::gentoo USE="X svg (-aqua) -doc" ABI_X86="(64) -32 (-x32)" 772 KiB []
  13. [ebuild N ] media-libs/cal3d-0.11.0-r1::gentoo USE="debug -16bit-indices -doc" 556 KiB []
  14. [ebuild N ] dev-util/cppunit-1.13.2-r2::gentoo USE="examples -doc -static-libs" ABI_X86="(64) -32 (-x32)" 932 KiB []
  15. [ebuild R ] media-libs/freetype-2.8:2::gentoo USE="X* adobe-cff bindist bzip2 cleartype_hinting debug* -doc -fontforge -harfbuzz -infinality -png -static-libs -utils" ABI_X86="(64) -32 (-x32)" 0 KiB []
  16. Hat tip on the ref

    By default, it pulled in the list below. Apparently motif is a gui thing that didn't look necessary.

    [ebuild N ] dev-util/byacc-20170201::gentoo 725 KiB
    [ebuild N ] x11-proto/printproto-1.0.5-r1::gentoo ABI_X86="(64) -32 (-x32)" 218 KiB
    [ebuild N ] x11-libs/libXp-1.0.3::gentoo USE="-static-libs" ABI_X86="(64) -32 (-x32)" 310 KiB
    [ebuild N ] x11-libs/motif-2.3.6-r1::gentoo USE="examples motif22-compatibility -jpeg -png -static-libs -unicode -xft" ABI_X86="(64) -32 (-x32)" 5593 KiB
    [ebuild N ] x11-libs/libGLw-8.0.0::gentoo USE="motif -static-libs" 216 KiB

    I tried: `echo "x11-libs/libGLw -motif" >> /etc/portage/package.use/xorg-server` and re-emerging, but even with -motif it still tries to pull it in, so I re-enabled the default above and emerged.

    Still pulling everything in, remove the -motif and build default above
    [ebuild N ] dev-util/byacc-20170201::gentoo 725 KiB*
    [ebuild N ] x11-proto/printproto-1.0.5-r1::gentoo ABI_X86="(64) -32 (-x32)" 218 KiB
    [ebuild N ] x11-libs/libXp-1.0.3::gentoo USE="-static-libs" ABI_X86="(64) -32 (-x32)" 310 KiB
    [ebuild N ] x11-libs/motif-2.3.6-r1::gentoo USE="examples motif22-compatibility -jpeg -png -static-libs -unicode -xft" ABI_X86="(64) -32 (-x32)" 5593 KiB**
    [ebuild N ] x11-libs/libGLw-8.0.0::gentoo USE="-motif -static-libs" 216 KiB

    * not on mirrors: wget
    ** not on mirrors : sourced from []

  17. [ebuild R ] x11-libs/gtk+-2.24.31-r1:2::gentoo USE="examples introspection xinerama (-aqua) -cups {-test} -vim-syntax" ABI_X86="(64) -32 (-x32)" 0 KiB

    * Messages for package x11-libs/gtk+-2.24.31-r1:

    * Please install app-text/evince for print preview functionality.
    * Alternatively, check "gtk-print-preview-command" documentation and
    * add it to your gtkrc.

    I looked into it to see what it's about, and this evince thing requires gtk3, which requires dbus, which is masked. libjpeg-dev media-libs/jpeg (([ebuild N ] media-libs/jpeg-8d-r1::gentoo USE="static-libs" ABI_X86="(64) -32 (-x32)" 982 KiB []

  18. [ebuild R ] media-libs/lcms-2.8-r1:2::gentoo USE="threads zlib -doc -jpeg -static-libs {-test} -tiff" ABI_X86="(64) -32 (-x32)" 0 KiB []
  19. [ebuild N ] media-libs/libmng-2.0.2-r1:0/2::gentoo USE="lcms -static-libs" ABI_X86="(64) -32 (-x32)" 930 KiB []
  20. [ebuild N ] dev-games/ode-0.12::gentoo USE="debug examples -doc -double-precision -gyroscopic -static-libs" 1774 KiB []
  21. [ebuild R ] media-libs/libogg-1.3.2::gentoo USE="-static-libs" ABI_X86="(64) -32 (-x32)" 0 KiB []
  22. [ebuild N ] media-libs/openal-1.15.1-r2::gentoo USE="alsa debug (-coreaudio) (-neon) -oss -portaudio -pulseaudio" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse" 248 KiB
    This one wasn't on the mirrors:



  23. [ebuild R ] media-libs/libpng-1.6.27:0/16::gentoo USE="apng (-neon) -static-libs" ABI_X86="(64) -32 (-x32)" 0 KiB []
  24. [ebuild N ] media-libs/speex-1.2_rc1-r2::gentoo USE="-ogg -static-libs" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse" 0 KiB []
  25. [ebuild R ] sys-devel/libtool-2.4.6-r3:2::gentoo USE="-vanilla" 951 KiB []
  26. [ebuild R ] media-libs/libvorbis-1.3.5::gentoo USE="-static-libs" ABI_X86="(64) -32 (-x32)" 0 KiB []
  27. Ref1, Ref2
    [ebuild N ] app-eselect/eselect-wxwidgets-20140423::gentoo 7 KiB
    [ebuild R ] x11-libs/pango-1.40.5::gentoo USE="X* introspection {-test}" ABI_X86="(64) -32 (-x32)" 0 KiB
    [ebuild N ] x11-libs/wxGTK- USE="X debug (-aqua) -doc -gstreamer -libnotify -opengl -sdl -tiff -webkit" ABI_X86="(64) -32 (-x32)" 56939 KiB []
  28. [ebuild R ] x11-libs/libX11-1.6.5::gentoo USE="-doc -ipv6 -static-libs {-test}" ABI_X86="(64) -32 (-x32)" 0 KiB []
  29. Ref
    [ebuild R ] x11-libs/libXaw-1.0.13::gentoo USE="-deprecated -doc -static-libs" ABI_X86="(64) -32 (-x32)" 0 KiB []
  30. Ref
    [ebuild R ] x11-libs/libXext-1.3.3::gentoo USE="-doc -static-libs" ABI_X86="(64) -32 (-x32)" 0 KiB []
  31. [ebuild R ] x11-libs/libXrender-0.9.10::gentoo USE="-static-libs" ABI_X86="(64) -32 (-x32)" 0 KiB []
  32. [ebuild R ] x11-libs/libXxf86vm-1.1.4::gentoo USE="-static-libs" ABI_X86="(64) -32 (-x32)" 0 KiB []
  33. Ref
    [ebuild R ] media-libs/mesa-17.0.6::gentoo USE="bindist classic debug* dri3 egl gallium gbm llvm nptl -d3d9 -gles1 -gles2 -opencl -openmax -osmesa -pax_kernel -pic (-selinux) -vaapi -valgrind -vdpau -vulkan -wayland -xa -xvmc" ABI_X86="(64) -32 (-x32)" VIDEO_CARDS="r600 radeon (-freedreno) -i915 -i965 -imx -intel -nouveau -r100 -r200 -r300 -radeonsi (-vc4) (-vivante) -vmware" 0 KiB []
  34. [ebuild N ] media-gfx/nvidia-cg-toolkit-3.1.0013-r3::gentoo USE="examples -doc" ABI_X86="(64) -32" 24248 KiB []
  35. [ebuild R ] dev-util/pkgconfig-0.28-r2::gentoo USE="-hardened -internal-glib" ABI_X86="(64) -32 (-x32)" 0 KiB []
  36. [ebuild N ] dev-libs/apr-1.5.2:1::gentoo USE="urandom -doc -older-kernels-compatibility (-selinux) -static-libs" 808 KiB
    [ebuild N ] dev-util/scons-2.4.1::gentoo USE="-doc" PYTHON_TARGETS="python2_7 (-pypy)" 625 KiB
    [ebuild N ] dev-libs/apr-util-1.5.4:1::gentoo USE="berkdb gdbm -doc -freetds -ldap -mysql -nss -odbc -openssl -postgres -sqlite -static-libs" 679 KiB
    [ebuild N ] net-libs/serf-1.3.8:1::gentoo USE="-kerberos" 140 KiB
    [ebuild N ] dev-vcs/subversion-1.9.5::gentoo USE="berkdb debug dso http -apache2 -ctypes-python -doc -extras -gnome-keyring -java -kwallet -nls -perl -python -ruby -sasl {-test} -vim-syntax" PYTHON_TARGETS="python2_7" 7720 KiB

    None of which were on the Gentoo mirrors. I ended up sourcing from the respective links below: []

  37. [ebuild N ] dev-lang/swig-3.0.12::gentoo USE="pcre -ccache -doc" 7959 KiB []
  38. Ref
    [ebuild R ] sys-libs/zlib-1.2.11::gentoo USE="-minizip -static-libs" ABI_X86="(64) -32 (-x32)" 594 KiB []
  39. Which yielded

    *** Crystal Space -- Configuration Summary ***
    Build mode: optimize
    Version: 2.1 (SVN: no)

    Optional Dependencies
    alsa (audio)
    cairo (image)
    cal3d (models)
    curl (other)
    freetype2 (other)
    gtk (other)
    jpeg (image)
    linux-joystick (other)
    mng (image)
    ode (physics)
    ogg (audio)
    openal (audio)
    opengl (rendering)
    oss (audio)
    png (image)
    speex (audio)
    vorbis (audio)
    x11 (rendering)
    zlib (other)

    3ds (models)
    assimp (models)
    bullet (physics)
    cairomm (image)
    cegui (gui)
    cg (rendering)
    jackasyn (audio)
    java (bindings)
    lcms (image)
    perl (bindings)
    python (bindings)
    theoradec (image)
    vgvm (image)
    wxwidgets (gui) []

  40. Her notes say ~30 mins, my results can vouch :

    real 32m31.527s
    user 32m8.751s
    sys 0m52.268s


  41. Into which I inserted :

    export LD_LIBRARY_PATH="$HOME/dev/cal3d/src/cal3d/.libs:$HOME/dev/cs-forupload/:"$LD_LIBRARY_PATH
    export CRYSTAL=$HOME/dev/cs-forupload


  42. To which I inserted :


A Gentoo install on JWRD desktop

Filed under: JWRD — Tags: — Robinson Dorion @ 18:14

I managed to install Gentoo on my JWRD desktop with the software in the table below. Below the table I've documented the steps I took and the commands I issued to beat this thing into shape. I've included various example configs, adjust to suit your needs.

Part Make & Model
Compiler GCC 4.9.4
C library and linking method glibc 2.23 dynamic1
Kernel Linux 4.92
Coreutils binutils 2.25.13
Boot loader Lilo 24
Graphical Environment X11 1.19
Masterclass in Economy Eulora v1

1. Flash USB stick with Gentoo install env and boot

Obtain an install ISO from Gentoo and run :

dd if=/path/to/image.iso of=/dev/sdc bs=8192k

2. Modify BIOS to boot into USB

My BIOS menu is accessed by hitting F2 on boot. I enabled legacy boot mode4, then hit F8 to select the inserted USB as boot media.

3. Format the disk partitions and make filesystems.

fdisk -t dos /dev/sda

In fdisk, punch the p key to print the partition table, the m key for help and the a key to toggle a bootable flag on partition 1. I made 3 partitions leaving 100 GB of my 2 TB disk unpartitioned.

1 125M /boot
2 25G /
3 1874.875G /home

When you've got everything set, the w key writes your work to disk and exits.

mkfs.ext4 /dev/sda{1,2,3}

4. Mount your disks and install some Gentoo files.

mount /dev/sda2 /mnt/gentoo
cd /mnt/gentoo
tar xjvf /path/to/stage3-amd64-20170316.tar.bz2
cd usr
tar xjvf /path/to/portage-amd64-multilib-20170627.tar.bz2
mount /dev/sd1 /mnt/gentoo/boot

I installed the following :


While -suid is set in make.conf, it's enabled for x11-base/xorg-server in use.flags to allow starting X from non-root users.

I used those CFLAGS in make.conf to match the AMD Piledriver architecture of my CPU, adjust to fit your gear.

CFLAGS="-march=bdver2 O2 -pipe"

For the initial install, you may want DNS because if the GENTOO_MIRRORS in your make.conf don't have the specific package you're looking for, portage will try some additional mirrors whose URLs it resolves with DNS. If you don't need DNS and can manage purely on a /etc/hosts basis, more power to you.

cp /etc/resolv.conf /mnt/gentoo/etc/

5. Enter the chroot

mount -t proc proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --rbind /dev/ /mnt/gentoo/dev

chroot /mnt/gentoo /bin/bash
source /etc/profile
export $PS1="(chroot) $PS1"

6. Set profile, time and locale, and proper Python

eselect profile list
[X] default/linux/amd64/13.0

echo "UTC" > /etc/timezone
emerge --config sys-libs/timezone-data

nano -w /etc/locale.gen

en_US ISO-8859-15
en_US.UTF-8 UTF-8

env-update && source /etc/profile && export PS1="(chroot) $PS1"

Gentoo is married to Python, which is a clear mark against. Nevertheless, if we're stuck with Python, Python2 it'll be.

eselect python list
eslect python set 2

Created /etc/portage/package.use/python

PYTHON_TARGETS python2_7 -python3_4
PYTHON_SINGLE_TARGET python2_7 -python3_4

7. Configure and Install Kernel and Related Utilities

PCI utils is handy even if you already think you know what all your hardware is.

emerge --ask sys-apps/pciutils

The Lilo bootloader will be run at the `make install` step of the kernel install.

emerge -av sys-boot/lilo

Install /etc/lilo.conf within the chroot.

I'm in the habit of adding a user named build with a home directory at /var/build which I use for compiling packages by hand.

useradd -d /var/build -m -s /bin/bash build
su - build

tar xJf /usr/src/linux-4.9.tar.xz
cd linux-4.9
xz -dc /usr/src/patch-4.9.95.xz |patch -p1

I've archived the kernel configuration file I installed at /var/build/linux-4.9/.config. I used the thinkpad-static.config from Gales Linux as a basis and adjusted to the needs of this deployment. To make any changes issue :

make menuconfig

When you're all set with your kernel config,


(as root)
make install
cd /boot
cp vmlinuz-4.9.95 bzImage-4.9.956

8. Install some basic config files


Set a static IP and set the network interface to the default run level.

nano /etc/conf.d/net
cd /etc/conf.d/
ln -s net.lo net.enp3s0
rc-update add net.enp3s0 default

9. Exit the Chroot and Re-enter to remove udev and install static device nodes

I learned how to do this in the Old Fashioned Install Gentoo wiki article.

Mount /proc but not /dev inside the chroot. We will be using a static /dev, so we have to emerge dev-static. With /dev bind mounted in the normal way, our static dev would go into the parents devtmpfs which is in RAM. If you are very very lucky, the static /dev provided by the stage3 may be enough to get you started.

The stage3 tarball is provided with a static /dev that includes sda ... sdd inclusive. If you need more that that, use mknod to make the extra /dev entries.

Mount the special filesystems:

mount -t proc proc /mnt/gentoo/proc

Enter the chroot:

chroot /mnt/gentoo /bin/bash

Set the chroot environment:

source /etc/profile
export PS1="(chroot) $PS1"

The Old Fashioned article says to first issue:

emerge --ask --unmerge sys-fs/udev

However, mine reported that wasn't installed, not sure. So I issued:

emerge --ask --unmerge virtual/udev

Now for static-dev, which installed makedev-3.23.1 :

emerge --ask sys-fs/static-dev

Add some groups to please MAKEDEV :

groupadd -r serial
groupadd -r kvm

Make some devices:

MAKEDEV -x tty_basic
MAKEDEV sd{a,b,c}
MAKEDEV random

And so on as needed.

Disable now spurious services :

rc-update show -V |less
rc-update delete swap boot
rc-update delete modules boot
rc-update delete udev sysinit
rc-update delete udev-trigger sysinit
rc-update delete devfs sysinit

Uninstall now spurious dependencies :

emerge --ask --depclean

The last command should offer to remove the following packages :


10. Reboot

Before getting into any more changes, I like to reboot here to make sure everything I've done this far is working.

umount /mnt/gentoo/{proc,boot,}

Assuming you booted clean, continuamos..

11. Install X11 Window System

I went straight to emerging fluxbox, which is my preferred window manager and pulls in xorg-server and its dependencies. Consult the article on X on the Gentoo wiki as needed.

(as root)
emerge -av x11-wm/fluxbox

Which pulls in x11-base/xorg-server-1.19.38. Consult and adjust the /etc/portage/ files linked in section 4 above with the USE flags of your preference. The default media-libs/mesa had gallium enabled, which then pulls in llvm as a hard requirement. I think this is Gentoo braindamage because I consulted Jacob's recipe for building X by hand and he had gallium enabled for mesa without llvm. Anyways, I built with the gallium flag disabled, but dmesg reported the file was not found. I then added modified make.conf to add r600 to the VIDEO_CARDS variable and rebuilt. According to Gentoo, mesa with gallium and thus llvm is required to support the r600 driver.

12. Configure and run X11.

I'm running X in the most straightforward way, i.e. login to a tty and issue startx to launch fluxbox. To achieve that, the following config files were installed.

echo "XSESSION=fluxbox" > /etc/env.d/90xsession

Ensure the user you plan to run startx with is in the video group in /etc/group, e.g.


In the $HOME directory of the non-root user, I added a file named .xsession with contents :

. /etc/profile
exec startfluxbox

I'm running startx under tmux because that allows me to detach the X session and and log out of the user when I'm not around. This isn't going to stop someone who has physical access and knows what they're doing, but achieves some level of login-logout functionality. If you don't have tmux, install it now.

emerge -av app-misc/tmux

X via Gentoo is supposed to run out of the box.


Startx invokes /etc/X11/xinit/xinitrc which invokes /etc/X11/xinit/xserverrc which execs /usr/bin/X. I modified xserverrc to pass the -nolisten tcp option to X.

Some potentially helpful Gentoo links :

13. Conclusion

A planned use for this machine is to play Eulora. I managed to install the v1 client and its dependencies, which will be documented in a separate article to follow.

  1. I'd prefer to use neither glibc nor dynamic linking because poettering is negrated, but I suspect musl in Gentoo is going to give me more headaches than it's worth and Gales is purely text for the time being. []
  2. I'd prefer to use Linux 2, but haven't managed that config. []
  3. Eulora requires binutils 2.26 and earlier. In my portage tree, 2.25.1 was the default, but I also have an ebuild for 2.26.1. Gales uses 2.24. []
  4. This board also comes with UEFI []
  5. Tailor to suit you. []
  6. To match my lilo.conf []
  7. Also ensure the users you want to have access to audio are in the audio group in /etc/group []
  8. This eschews x11-base/xorg-x11 which has quite a few more packages and so far I've managed without it. []

December 19, 2020

Romanian 1, Practice 6

Filed under: Philologia — Robinson Dorion @ 14:14

I practiced exercise 6 this morning. It's a ~30 minute session of listening and speaking building on the previous practices.

As dori sa mananc ceva. Si as dori si1 sa beau ceva. Ati dori sa mancati si sa beti ceva ?2

Da, si eu. Unde ati dori sa mancati ?3

La dumnavoastra.4

La mine ? Cand ?5

Da, la dumnavoastra. Acum.6

Cred ca nu, nu acum. Mai tarziu.7

Stiti unde este strada Eroilor ? Este aici, nu-i asa ?8

Nu stiu.9

Vorbeti Romaneste foarte bine.10

Nu, nu vorbesc foarte bine, dar multsumesc.11

Ba da, ba da.12

Inteleg putin si vorbesc putin.13

  1. And and too/also are the same. []
  2. Me gustaria comer algo. Y me gustaria tomar algo tambien. Le gustaria comer y tomar algo ?
    Je voudrais manger quelque chose. Et je voudrais boire quelque chose aussi. Voudriez-vous manger et boire quelque chose ?
    I would like to eat something. And I would like to drink something too. Would you like to eat and drink something ? []
  3. Si, yo tambien. Donde le gustaria comer ?
    Oui, moi aussi. Ou voudriez-vous manger ?
    Yes, me too. Where would you like to eat ? []
  4. En su casa.
    Chez vous.
    At your place. []
  5. En mi casa ? Cuando ?
    Chez moi ? Quand ?
    At my place ? When ? []
  6. Si, en su casa. Ahora.
    Oui, chez vous. Maintenant.
    Yes, your place. Now. []
  7. Creo que no, ahora no, Mas tarde.
    Je ne crois pas, pas maintenant, plus tard.
    I don't think so, not now, later. []
  8. Sabe donde esta la calle Eriolor ? Esta aqui, no es asi* ?
    Savez vous ou est-ce la rue Eroilor ? C'est ici, n'est-ce pas ?
    Do you know where Eroilor street is ?

    *I find myself more likely to ask, "verdad ?", i.e. true ? []

  9. Yo no se.
    Je ne sais pas.
    I don't know. []
  10. Usted habla rumana muy bien.
    Vous parlez roumaine tres bien.
    You speak Romanian very well. []
  11. No, no hablo muy bien, pero gracias.
    No, je ne parle pas tres bien, mais merci.
    No, I don't speak very well, but thank you. []
  12. Pero si, pero si.
    Mais si, mais si.
    But yes, but yes. []
  13. Entiendo poco y hablo poco.
    Je comprends un peu et pale un peu.
    I understand a little and speak a little. []

November 7, 2020

Romanian 1, Practice 5

Filed under: Philologia — Robinson Dorion @ 14:47

I practiced exercise 5 this morning. It's a ~30 minute session of listening and speaking building on the previous practices.

I learned that in Ro the conditional and optative moods are the same. The optative doesn't exist is French and Spanish, so the present conditional was used.

A helpful reader pointed out I was mixing up my French tenses in previous exercises, so I worked to clean that up here. I kept in mind to use the 2nd person plural in Romanian and French for formal address and 3rd person singular in Spanish.

Buna ziua Donule.1

Buna ziua Domnisoara, ce mai faceti ?2

Eu ? Foarte bine. Si dumeavostra ? Sunteti bine ?3

Da, sunt bine, multumesc. As dori sa beau ceva. Ati dori sa beti ceva ?4

Cred ca nu, dar as dori sa mananc ceva. Ati dori sa mancati ceva ?5

~~Present indicative.~~
Doriti sa mancati cheva ?6

Nu doresc sa mananc, multumesc.7

Nu stiu.8

  1. Buenos dias Senor.
    Bonjour Monsoir.
    Good day Sir. []
  2. Buenos dias Senorita. Como esta usted ?
    Bonjour Mademoiselle, comment allez-vous ?
    Good day Miss, how are you ? []
  3. Yo ? Muy bien. Y usted ? Esta bien ?
    Moi ? Tres bien. Et vous ? Allez-vous bien ?
    Me ? Very well. And you ? Are you well ? []
  4. Si, estoy bien, gracias. Me gustaria* beber algo. Le gustaria beber algo ?
    Oui, je vais bien, merci. Je voudrais boire quelquechose. Voulez-vous boire quelque chose ?
    Yes, I'm well, thanks. I'd like to drink something. Would you like to drink something ?

    *"Yo querria" can also be used, but I've found myself using gustar more in the conditional. []

  5. Creo que no, pero me gustaria comer algo. Le gustaria comer algo ?
    Je crois que non, mais je voudrais manger quelque chose. Voudreiz-vous manger quelque chose ?
    I think not, but I'd like to eat something. Would you like to eat something ? []
  6. Quiere comer algo ?
    Voulez-vous manger quelque chose ?
    Do you want to eat something ? []
  7. No quiero comer, gracias.
    Je ne veux pas manger, merci.
    No, I don't want to eat, thanks. []
  8. Yo no se.
    Je ne sais pas.
    I don't know. []

November 6, 2020

Romanian 1, Practice 4

Filed under: Philologia — Robinson Dorion @ 17:39

I practiced exercise 4 this morning. It's a ~30 minute session of listening and speaking building on the previous practices.

Buna ziua Doamnisoara.1

Buna ziua Donule.2

Va rog, stiti unde este strada Eminescu ?3

Da, cred ca este aici.4

Multumesc, si stiti unde este bulevard Popular ? Este acolo ?5

Da, este acolo. Cred ca vorbiti Romaneste foarte bine. 6

Multumesc, dar vorbesc putin Romaneste.7

Dar da8, cred que vorbiti Romaneste foarte bine si sunt Romanca.9

  1. Buenos dias Senorita.
    Bonjour Mademoiselle.
    Good day Miss. []
  2. Buenos dias Senor.
    Bonjour Monsoir.
    Good day Sir. []
  3. Por favor, sabe donde esta la calle Eminescu ?
    S'il vous plait, savez vous ou est-ce la rue Eminescu ?
    Please, do you know where Eminescu street is ? []
  4. Si, creo que esta aqui.
    Oui, je crois que c'est ici.
    Yes, I think it's here ? []
  5. Gracias, y sabe usted donde esta el bulevar Popular ? Esta alla ?
    Merci, y savez vous ou est-ce l'boulevard Popular ? Est-ce la-bas ?
    Thank you, and do you know where Popular boulevard is ? Is it over there ? []
  6. Si, esta alla. Creo que habla Ruman muy bien.
    Oui, c'est la-bas. Je crois que vous parlez Roumain tres bien.
    Yes, it's over there. I think you speak Romanian well. []
  7. Gracias, pero hablo poquito Ruman.
    Merci, mais je parle un peu Roumain.
    Thank you, but I speak a little Romanian. []
  8. Sounded like "Ba da", used to contradict a negative. []
  9. Pero si, creo que habla ruman muy bien y soy Romana.
    Mais si*, je crois que vous parlez Romaine tres bien et je suis Romaine.
    But yes, I think you speak Romanian very well and I'm Romanian.

    *Used to contradict. []

November 5, 2020

Romanian 1, Practice 3

Filed under: Philologia — Robinson Dorion @ 14:48

I practiced exercise 3 this morning. It's a ~30 minute session of listening and speaking. There is much overlap from yesterday's practice.

I took the opportunity to also practice my spanish and french because they're cousins of romanian and I want to continue sharpening those. Romanian has the ~same rolling r as spanish.

Buna ziua, Doamna !1

Sunteti American ?2

Da, si dumneavoastra ? Sunteti Romanca ?3

Da, si ce mai faceti ? Sunteti bine ?4

Da, sunt bine, multumesc.5

Stiti Romaneste ?6

Putin, dar nu stiu Romaneste foarte bine.7

Scuzati-ma, va rog.8

La revedere.9

  1. Buenos dias, Senora !
    Bonjour, Madam !
    Good day, Ma'am ! []
  2. Usted es Americano ?
    Vous etes Americain ?
    Are you American ? []
  3. Si, y usted ? Usted es rumana ?
    Oui, et vous ? Vous etes roumain ?
    Yes, and you ? Are you Romanian ? []
  4. Si, y como esta usted ? Esta bien ?
    Oui, et vous ? Comment allez-vous ? Ca va bien ?
    Yes, and how are you ? Are you well ? []
  5. Si, estoy bien, gracias.
    Oui, je vais bien, merci.
    Yes, I am well, thank you. []
  6. Sabe usted rumana ?
    Savais vous roumaine ?
    Do you know Romanian ? []
  7. Un poco, pero no se rumana muy bien.
    Un petite, mais je ne sais pas roumaine tres bien.
    A bit, but I don't know Romanian well. []
  8. Perdoname, por favor.
    Pardonne moi, s'il vous plait.
    Pardon me, please. []
  9. Adios.
    Goodbye. []

November 4, 2020

Romanian 1 Practice 2

Filed under: Philologia — Robinson Dorion @ 16:07

I practiced Pimsleur's Romanian 1, Practice 2 this morning. It's a ~30 minute session of listening and speaking with a lot of repetition. I looked up the spelling following the audio. Below are the phrases I practiced written in all ascii because I'm not yet in practice of using the entire Romanian alphabet nor have I yet looked into transliteration.

Buna ziua !1

Ce mai faceti domnisoara ?2

Intelegi engleza ?3

Ce mai faceti Domnule ?4

Sunt foarte bine, multumesc doamna.5

Nu, nu inteleg.6

Sunteti Roman ?7

Sunteti American.8

Scuzati-ma doamna.9

Intelegi doamna ?10

Inteleg putin Romaneste.11

La revedere !12

  1. Good day ! []
  2. How are you miss ?*

    * Literarlly, what more do you do miss ? []

  3. Do you understand Engligh ? []
  4. How are you Sir ? []
  5. I am very well, thanks ma'am. []
  6. No, I don't understand. []
  7. Are you Romanian ? []
  8. You are American. []
  9. Excuse me ma'am. []
  10. Do you understand ma'am ? []
  11. I understand a little Romanian. []
  12. Good bye ! []

November 1, 2020

A JWRD desktop aiming for open graphics

Filed under: JWRD — Robinson Dorion @ 19:34

I am in the process of building a desktop computer. I approached the task on the following fronts :

  1. a motherboard supported by an open source BIOS, e.g. Coreboot;
  2. an AMD CPU which is not locked down by AMD's Platform Security Processor (PSP);
  3. a graphics card with minimal to no proprietary microcode.

This was motivated by a couple goals :

  1. expand JWRD's hardware offering;
  2. have a desktop with which to play the masterclass in economy mascarading as a video game: Eulora published by The Ministry of Games.

The components I chose are :

Component Make & Model Note
Motherboard ASUS F2A85M
APU AMD A8-5600k with AMD Radeon HD 7560D 4 cores, 3.6GHz base clock
RAM Corsair CMZ8GX3M1A1600C10 DDR3, 2 x 8 GB
SSD Samsung 860 EVO 1 TB
HDD Seagate Barracuda 3.5" SATA, 2 TB
Power Supply CORSAIR TX650M 650W, 80 + Gold, semi-modular
Case Corsair Carbide 200R Mid-tower ATX
Case Fans Corsair AF120 3 x 120mm
UPS CyberPower CP1500AVRLCD 900W


I started my search by reading up on motherboard candidates via the Coreboot supported mainboards and board status wiki pages and git respository. The Coreboot wiki has a dedicated page for the ASUS F2A85M (archived).

This board is equipped with an FM2 socket which supports AMD APUs of the A85 Piledriver line on the CPU side and Terra Scale 3 based GPUs of the Trinty line.

The Read Only Memory (ROM) chip is a Winbound 25Q64F that will be flashed externally with an 8 pin chip clip to replace the vendor UEFI/BIOS with a BIOS I compile.


To pick the APU, my starting point was the ASUS website which lists the 391 supported chips. Despite the long list, from what I managed to find, the supply for these is tight. This makes sense given they went out of print in October of 2012 and are supported by Coreboot.

For graphics support, I started at the wiki of the X Window System and in particular the page on the Radeon line of graphics cards due to the Radeon integration in many of the APUs supported by the motherboard.

I'm a bit less of a graphics noob than when I started this process, but still very much a graphics noob. As far as I understand at present, there are no graphics cards which do not require proprietary firmware. There are some rumors that the abandoned radeonhd driver did not require firmware compiled by the vendor, but the Pleased to meet you, hope you guess my name (archived) and Pleased to flash you, hope you change my name (archived) articles by Luc Verhaegen record that if you were familiar with the details, that was never the case. RadeonHD relied on the AtomBIOS, the source code of which was never published, to whit,

At no point do AtomBIOS functions come close to fitting the definition of script, at least not as we get them. It might start life as "scripts", but what we get is the bytecode, stuck into the ROM of our graphics cards or our mainboard.

After reading this, I didn't bother adding a discrete graphics card supported by radeonhd for this iteration. Despite being over a decade old, I did find some radeonhd supported cards still available.

For the APU, I picked the AMD A8-5600K which has the Radeon HD 7560D integrated GPU. The Radeon HD 7560D requires the 3 ARUBA_me.bin, ARUBA_pfp.bin and ARUBA_rlc.bin binary files from the Radeon Linux firmware list which weigh a combined 23.552 kb. Permitting 23kb of mystery meat to run graphics is not the worst of fates. While not ideal, the fact is the complexity the of hardware itself is much greater and likewise not available for the supposed owner to inspect.

RAM and Disks

To chose memory, I started from the qualified vendors list (pdf) of the F2A85M motherboard. I added the Samsung SSD because I also plan to test syncing a Bitcoin node and GBW-node with this set up.

Power Supply, Case, Case Fans

Gold 80 Plus power supply efficiency was good enough for me. Cases with tempered glass windows and shiny lights seem to be marketed heavily. I went all metal for sturdiness. The case has a built-in rear fan. My plan for the other three are to put two stacked from the bottom of the front and one on top for bottom-to-top, front-to-back cooling airflow.

Next Steps

The parts have started arriving. I'll start the build this week and report back. I focused this article on what I ended up choosing. I looked at several more set ups in this process, the notes for which need cleaning up prior to publishing.

While it looks like a fully open desktop with graphics support is out of reach at present, I gained from the process and am looking forward to setting this machine up.

  1. The complete list:
    AMD A10-5700 (AD5700OKA44HJ, rev.A1, 3.4GHz, L2:4M, 65W) ALL 5008GO
    AMD A10-5800B (AD580BWOA44HJ, rev.A1, 3.8GHz, L2:4M, 100W) ALL 5008GO
    AMD A10-5800K (AD580KWOA44HJ, rev.A1, 3.8GHz, L2:4M, 100W) ALL 5008GO
    AMD A10-6700 (FM2, AD6700OKA44HL, rev.A1, 3.7GHz, 4C, L2:4M, HD 8670D, 65W) ALL 6002GO
    AMD A10-6700T (FM2, AD670TYHA44HL, rev.A1, 2.5GHz, 4C, L2:4M, HD 8650D, 45W) ALL 6402GO
    AMD A10-6790B (FM2, AD679BWOA44HL, rev.A1, 4.0GHz, 4C, L2:4M, HD 8670D, 100W) ALL 6501GO
    AMD A10-6790K (FM2, AD679KWOA44HL, rev.A1, 4.0GHz, 4C, L2:4M, HD 8670D, 100W) ALL 6501GO
    AMD A10-6800B (FM2, AD680BWOA44HL, rev.A1, 4.1GHz, 4C, L2:4M, HD 8670D, 100W) ALL 6002GO
    AMD A10-6800K (FM2, AD680KWOA44HL, rev.A1, 4.1GHz, 4C, L2:4M, HD 8670D, 100W) ALL 6002GO
    AMD A4-4000 (FM2, AD40000KA23HL,3.0Ghz, L2: 1M , HD7480, rev.A1, 65W) ALL 6102GO
    AMD A4-4020(FM2, AD4020OKA23HL,3.2Ghz, L2: 1M , HD7480D, rev.A1, 65W) ALL 6502GO
    AMD A4-5300 (AD5300OKA23HJ, rev.A1, 3.4GHz, L2:1M, 65W) ALL 5008GO
    AMD A4-5300B (FM2, AD530BOKA23HJ, rev.A1, 3.4GHz, L2:1M, 65W) ALL 5008GO
    AMD A4-6300 (FM2, AD6300OKA23HL, rev.A1, 3.7GHz, 2C, L2:1M, HD 8370D, 65W) ALL 6002GO
    AMD A4-6300B (FM2, AD630BOKA23HL, rev.A1, 3.7GHz, 2C, L2:1M, HD 8370D, 65W) ALL 6002GO
    AMD A4-6320(FM2, AD6320OKA23HL, rev.A1, 3.8GHz, 2C, L2:1M, HD 8370D, 65W) ALL 6502GO
    AMD A4-7300 (FM2, AD7300OKA23HLA, rev.A1, 3.8GHz, 2C, L2:1M, GCN Radeon R5, 65W) ALL 6506GO
    AMD A4-7300B (FM2, AD730BOKA23HLA, rev.A1, 3.8GHz, 2C, L2:1M, 65W) ALL 6506GO
    AMD A6-5400B (AD540BOKA23HJ, rev.A1, 3.6GHz, L2:1M, 65W) ALL 5008GO
    AMD A6-5400K (AD540KOKA23HJ, rev.A1, 3.6GHz, L2:1M, 65W) ALL 5008GO
    AMD A6-6400B (FM2, AD640BOKA23HL, rev.A1, 2C, 3.9GHz, L2:1M, HD 8470D, 65W) ALL 6002GO
    AMD A6-6400K (FM2, AD640KOKA23HL, rev.A1, 2C, 3.9GHz, L2:1M, HD 8470D, 65W) ALL 6002GO
    AMD A6-6420K (FM2, AD642KOKA23HL, rev.A1, 2C, 4.0GHz, L2:1M, HD 8470D, 65W) ALL 6502GO
    AMD A8-5500 (AD5500OKA44HJ, rev.A1, 3.2GHz, L2:4M, 65W) ALL 5008GO
    AMD A8-5500B (AD550BOKA44HJ, rev.A1, 3.2GHz, L2:4M, 65W) ALL 5008GO
    AMD A8-5600K (AD560KWOA44HJ, rev.A1, 3.6GHz, L2:4M, 100W) ALL 5008GO
    AMD A8-6500 (FM2, AD6500OKA44HL, rev.A1, 4C, 3.5GHz, L2:4M, HD 8570D, 65W) ALL 6002GO
    AMD A8-6500B (FM2, AD650BOKA44HL, rev.A1, 4C, 3.5GHz, L2:4M, HD 8570D, 65W) ALL 6002GO
    AMD A8-6500T (FM2, AD650TYHA44HL, rev.A1, 4C, 2.1GHz, L2:4M, HD 8550D, 45W) ALL 6402GO
    AMD A8-6600K (FM2, AD660KWOA44HL, rev.A1, 4C, 3.9GHz, L2:4M, HD 8570D, 100W) ALL 6002GO
    AMD Athlon X2 340 (FM2, 3.2Ghz, 2C, L2:1M, 65W) ALL 6102GO
    AMD AthlonX2 350 (FM2, AD350XOKA23HL, 2C, rev.A1, 3.5GHz, L2:1M, 65W) ALL 6102GO
    AMD AthlonX2 370K (FM2, AD370KOKA23HL, 2C, rev.A1, 4.0GHz, L2:4M, 65W) ALL 6404GO
    AMD AthlonX4 730 (FM2, AD730XOKA44HJ, rev.A1, 2.8GHz, L2:4M, 65W) ALL 5008GO
    AMD AthlonX4 740 (FM2, AD740XOKA44HJ, rev.A1, 3.2GHz, L2:4M, 65W) ALL 5008GO
    AMD AthlonX4 750 (FM2, AD750XOKA44HL, 4C, rev.A1, 3.4GHz, L2:4M, 65W) ALL 6102GO
    AMD AthlonX4 750K (FM2, AD750KWOA44HJ, rev.A1, 3.4GHz, L2:4M, 100W) ALL 5008GO
    AMD AthlonX4 760K (FM2, AD760KWOA44HL, 4C, rev.A1, 3.8GHz, L2:4M, 100W) ALL 6102GO
    AMD Sempron 250 (FM2, SD250XOKA23HL, 2C, rev.A1, 3.2GHz, L2:1M, 65W) ALL 6102GO []

September 28, 2020

The shadows of an Indian summer.

Filed under: Amor fati — Robinson Dorion @ 18:49

It struck me recently that a major cause of my outrageous behavior these past few months is that I've continued to neglect writing the articles for the fabled outlines I published through the process of applying be a Pageboy of Diana Coman and the Young Hands Club. As she observed, I spent most of my twenties finding my feet, which lead me to live in a foreign land I came to consider my home.

Then, 11 days after TMSR's closure I decided to leave the city with everything apart from my friends that couldn't be replaced to stay with my parents in the hills I grew up in. Not having written the articles in the outlines is evidence I've not thought through and processed fully those trials and tribulations. Instead of writing, publishing and moving on1, I went on a summer vacation as if it was my childhood. I did what was easy, rather than what was correct. I literally walked in scores of loops around golf courses.


Above, from hole 7 tee box of Rutland Country Club Saturday. Below, from behind 7th green.


It has been a sunny, Indian summer stretching into September and I reverted to the shadows, even if I spent more time outside and under the sun this summer than I have in a decade plus. I'm at ground zero of where my weaknesses are rooted, but I have rested rather than working to strengthen them. I have allowed myself to atrophy and incur opportunity costs. I could think of more things to say and as I start to a lot of negatives come up, but ultimately lead me to asking, what now ?

I'm reminded of a point that was quite a surprising relief to read in the moment and to be reminded of now. What now then is to confront myself and my past, remind myself stupidity is penalized exponentially by the wise and the world with good reason, and start chipping away at writing those articles and doing what I know I have to do. By greasing my writing gears, more will be sure to follow, one simple step at a time. Tu nu poti daca nu te chinui suficient.

  1. While at the same time having it available to reference relatively cheaply at any future point. []

July 13, 2020

In defense of honoring Rutland Raider Power.

Filed under: Amor fati — Robinson Dorion @ 23:43

The local newspaper, The Rutland Herald, recently published an op-ed written by a former classmate of mine titled, "RHS Mascot must go", which you can read here. I submitted a sightly shorter version of this, e.g. doesn't have any pictures or footnotes, to said herald this evening, which I've linked. The last piece I submitted to them was about 10 years ago, which they didn't publish for unspecified reasons. To give you an idea, this is a paper that still publishes the long-ago discredited Paul Krugman. I'm not holding my breath for them to publish this, but we'll see.

For new readers of the blog, mind there's a comment box at the end. Leave your thoughts, if you please; both supportive and critical comments will be published. At the end of each footnote there's a link that will return you to your place. Here goes.

Dear Fellow Rutlanders and Ms. Gokee,

To be clear, while I disagree with her methodology and conclusion, I write this in the spirit of debate and with all respect due to Ms. Gokee, of whom I always had a positive experience of in the flesh. I learned of several things from her piece and I hope this article returns the favor.

Nicknames and titles are characteristic of honor-based societies, which have endured millennia because they reflect the self-evident hierarchy that exists in nature and predates land-based organisms. True story: even sea creatures secrete endorphins when they win a turf war and raise their standing in the world. This neurological structure is older than trees.

The Latins used ''cognomen'', which English speakers call nicknames, to distinguish, among other things, heroic battle achievements. Fortunately, the bounty of excess resources the capitalists of generations past graciously bequeathed us has provided sufficient cushion to afford our youths (previously known as ''useless eaters'') the luxury of organized athletics. The rub is, when you name a team in town, you don't have those individual stories that support the individual nicknames. As a consequence, the tenacity competition requires traditionally leads the namers to use names representing something fierce, e.g. lions and tigers and bears, oh my!! American football is the sport most reminiscent of battle and probably that which the Rutland Raiders are most renowned for in this state, so let us dwell for a moment. George Carlin nails it, y'know? ''In football the object is for the quarterback, also known as the field general, to be on target with his aerial assault, riddling the defense by hitting his receivers with deadly accuracy in spite of the blitz, even if he has to use the shotgun. With short bullet passes and long bombs, he marches his troops into enemy territory, balancing this aerial assault with a sustained ground attack that punches holes in the forward wall of the enemy's defensive line. In baseball the object is to go home! And to be safe! I hope I'll be safe at home!''.

''Raid'' is a Scottish word with etymology tracing to describe a ''mounted military expedition''. Football requires bravery, tenacity, physical fitness, power and grace, team coordination and willingness to get dirty and bleed for the team and town to experience the high of achievement and victory. Naming the mascot a Raider honors the spirit and characteristics through a symbol the student-athlete can draw on for inspiration. The arrowhead itself symbolizes and honors a culture that leveraged the tool to feed, clothe and shelter families and evict derelict neighbors and perhaps even against neighbors who were simply boring and dull. It's true that there are undertones of violence, but the wisdom of using them in this context is they are actually beneficial in dangerous, physical competition, where strictly enforced rules allow violence to be pushed to the edge of civility and an advantage is gained for knowing well where the line is.

Sure, racists and bigots employ propaganda to manipulate those less bookish, but do you really want to be a person who imputes the views and behavior of a small minority of individuals on an entire community? Pretty sure there's a word for that. It's certainly not consonant with my experience of being around Rutland athletics for over two decades as a water boy1 , athlete2 and fan, during which I can't recall I witnessed any instances of racism3. There is brotherhood amongst opponents.

I accept as true that racist and bigoted people exist across cultures and geography. I've lived over a quarter of my life as a social and racial minority in foreign lands, this isn't my imagination, but first hand experience. Humans are social creatures with in-group preference. We tend to prefer friends and family to strangers for most activities and tend to feel uncomfortable when surrounded by conversation in a foreign language. Learning hurts.

With that being said, to say honoring a culture's symbols by taking them for inspiration into a gamified battle is appropriation and racist is to look at the situation from not only a very limited, but fragile perspective. Where does this argument go if applied ''equally''? Do you really want to start a culture war where symbolizing and utilizing cultural contributions are restricted to progeny of the originators? Should descendants of Europeans now take offense whenever someone else wears a necktie when they are dressing for success? The ''cravat'' is distinctly European military attire, after all. Are you making fun of my ancestors?!? What about electricity and the Internet Protocol and aeroplanes and automobiles and the number zero? Surely it will tilt the balance of power towards the ''just'' if you lot pass a law that grants license to state clerks to use violence to restrict (suspending all sense, for a moment, to assume it could be done) technologies to those who can prove a bloodline (sarcasm). Taking a step back, it seems such a path leads to more division rather than cooperation. And if all of a sudden you don't want to apply your new rule equally, well... I'll let you fill in this blank and I don't think you'll like the word that fits.

It's true, history involves men fighting and killing and taking from and enslaving each other. Such behavior is cross-cultural and recurs throughout history because nature imposes scarcity and language and cooperation take more effort in the short term. C'est la vie. The fact that Europeans developed and utilized technology such as horses and the wheel and gun powder and the printing press which enabled them to more effectively control the resources of this landmass is not to their shame; anymore than it's the Turks' shame for developing superior cannon technology4 that enabled them to take the city5 that was the center of the world for over a millennia; nor is it Michael Jordan's shame for dominating the NBA during his prime, even if he was mean at times. The lists go on and on to demonstrate hierarchies are self-evident. The other side of 'the Indian problem'' was what the Europeans referred to as their burden to spread the high standard of living they achieved and which we enjoy through the harsh winters. Chimneys for the win, amirite ?!?! Monty Python's ''Life of Brian'' hits the nail on the head, ''All right, but apart from the sanitation, the medicine, education, wine, public order, irrigation, roads, a fresh water system, and public health, what have the Romans ever done for us?" That is, check the toolbox you depend on for survival prior to impugning the deceased and scorning their progeny for whatever you convict their ancestors of posthumously, lest you find yourself lost in the cold. Side note: Lost in the Cold is a great Twiddle song, look it up.

To say in one sentence ''we're Vermonters'' and in another that this here is ''Abenaki land'' is a contradiction I hope others caught. Perhaps some progeny of the Byzantines refer to that grand city on the Golden Horn as Constantinople to this day, but any ticket they buy to go there surely reads Istanbul. Perhaps some Bitcoin Barron will take ownership of this land in the future and rename it. Until that day, it's called Vermont to signify this is an outpost of European civilization. There was war, subjugation and brutality on this continent far before their ships beached and for whatever reasons, after losing many battles fighting with and against the Natives, the Europeans came out on top. If you must hate, please don't hate the player, hate the game. Then try to not hate because bitter roots bear bitter fruit. Try instead to learn why the winners won.

It's probably the case some old white man dressed in a three piece suit sat in his leather chair at his Mahogany desk smoking his pipe some century and a half ago to make the name and came up with the alliteration we've inherited. Maybe he even wore a monocle and kept coins in woven bags with dollar signs painted on strewn about the marble floor of his office which his servants polished daily on their hands and knees with toothbrushes. Given we've uncovered the etymology, do you think it could be possible the man was a silly Scotsman who knew what the word meant and used it to counterbalance the rivalrous ''Mounties'' of Convent Avenue in this here city? Wouldn't that be something?

I don't know what the real source of the name is, but I must ask what the long-term consequences are of trying to whitewash the name and symbols thousands of young Rutlanders have been proud to represent in constructive, competitive activities they cared deeply about? If you thrash the arrowhead, will you then chastise me and my friends for wearing our state championship gear? Should we have a big bonfire and burn all the threads6? Or what if I have a son who grows up and wants to wear his old man's throwbacks, should he expect grief? Should I prepare him to defend himself because he may be attacked if wearing it in public? I'm not trying to put words in anyone's mouth, I'm genuinely curious how far you think the 'removal' will go. Seems like a major distraction from the actual travesty taking place presently through socialist central banks appropriating purchasing power via the inflation tax, y'dig? But hey, driving division using the racist wedge and meanwhile debauching the currency is straight out the Communist playbook. Maybe I'm biased, "the Commish" of the Mounties, a.k.a Mr. William O'Rourke III, J.D., did nickname me ''Raider Rob'' for my fidelity to the tradition, after all. My point is there are more sides to the story than the scapegoat of evil white men making fun of people they conquered.

If you manage to succeed, perhaps you pick a name more benign, but likewise virtuous, activity that Rutland is actually famous for. Probably should be something about marble since that's what the world actually knows this area for. The mythology would be similar to a Slater who quarries for sacred material deep in mother earth and erects enduring structures for art and his family's refuge. For all I know though, you'll claim Mr. Proctor was a ''thief''/''Robber Barron''/omgwhatever for ''stripping the land''. Regardless, I reckon the Raider spirit will remain adamant in Rutland independent of whether the current tensions are opportunistically exploited to further the agenda of cultural Marxists7.

My neighbor gave me the nickname out of admiration despite wanting to see me lose and even cry my eyes out whenever his team was on the other side of the ball and I love him for that because competition brings out the best within us. Personally, I'd rather see arrowheads on the backs of teenagers' cars who loved playing as Raiders so much they parade the symbol around town in perpetuity. The reason is, the meaning to me isn't some racist symbol; the arrowhead represents hard work, dedication, deferral of gratification, courage, physical and mental mastery, making enduring memories with lifelong friends, teamwork, excitement, community support, giving your jersey to a cute chica on gameday, sportsmanship, sight and sound, intensity with integrity, living such that you have no regrets and on that score I know I'm not alone. Whether you like it or not, that's what you're attacking and that's probably the primary reason there's resistance. Surely there would be more resistance if the risk and consequences of being slandered a racists weren't so high. I'll take that risk, and say what I believe to be correct, and leave to faith that the logos still remains in the thousands of people who've known and supported me in this community throughout my life.

Ms. Gokee writes, ''The problem is that putting Native Americans in the past erases our existence in the world today.'' Likewise, saying present day Rutlanders use the arrowhead as a racist symbol such that their history should be torn down rather than a symbol of admiration is unmitigated prejudice. I, for one, will keep my nickname with honor as long as I live because the roots of the words are simply too profound not too --you're not digging them up.

For the record, the time is always now, that's why it's called the present. Look it up if you don't believe me. The phrase for the time when you tear down the proud symbols of a society is post mortem.

In Liberty and Sincerely Yours,
Robinson, a.k.a ''Raider Rob'', a.k.a ''Digger'', Dorion.

  1. Here's a pic from 1998 following a Raider victory over Hartford in the semi-finals :


    From left to right: yours truly, Jake Eaton, T.J. Bowse.

    The Saturday prior, the Raiders beat the Mounties on Alumni in the Rutland-MSJ game. The following Saturday, MSJ beat Rutland in the State Championship game on Alumni and Rutland was the away team. They were also both contenders for the basketball title that year, which MSJ won. During the 1996-2006 period, Rutland won 7 of 11 titles while MSJ won 3. Ten out of eleven's not too bad for one town.

    For foreigners, the MSJ herein referred stands for Mount St. Joseph Academy, the Catholic School cross-town rival. []

  2. For the pics or it didn't happen crew, here you go.


    I had one of my better games that day and Coach Norman awarded me the game ball. Mr. Hadley, the father of Josh Hadley, one of our Senior Captains, and his Sophomore brother Ethan had passed away the week of the game. The ball is buried with Mr. Hadley. []

  3. That's not to say it never happened, maybe it did. It's simply that if it did it was so rare that I don't recall. That is, there are always bad apples, but it was never part of the athletics culture. []
  4. Who else misses the cannon at Raider football games ? 'Bring Back the Cannon 2020 !' ? For those unaware, from about 2000-2002, after every touchdown and other special occasions, a powder filled cannon was touched off at every home game. If I recall correctly, some residents of Gleason Road whined loud enough to get it mothballed. []
  5. Constantinople. []
  6. Here's a small sample:


    If memory serves, the story behind that 2000 lid is Josh Finley made a leaping, back shoulder catch on a deep post (the play-call was probably 26 iso pass) thrown by Sean Hurley late in the 4th quarter of a low scoring game to really take the stinger out of the Hornets of Essex and ultimately lead to the Raiders squashing them.


    Above: Sam Reynolds, Zak Acquistapace, Ryan Corey, Matt Littler, Josh Hadley.

    Below: Andrew Baker, Justin Stewart, Jon Bassett, Chris Kiernan.



  7. Whether you're aware of it or not, that's what's going on. When Communism failed economically, as it always must, they pivoted. []
Older Posts »

Powered by WordPress