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. []

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 []

July 1, 2020

GBW-NODE : Gales Bitcoin Wallet Node verified acquisition, build, install and run in 21ish short, simple steps.

Filed under: JWRD — Robinson Dorion @ 17:32

This article documents the steps I took to verify I obtained the correct code to install and start using gbw-node, the online component of Gales Bitcoin Wallet, authored by Jacob F. Welsh (WoT : jfw) which he documented on Fixpoint through his work with JWRD Computing in a 1 2 3 4 5 6, count'em, 6 article series.

For maximal key security, the software is structured in two components : the node gbw-node and the signer gbw-signer. gbw-node is written in Python 2 and gbw-signer is written in Jacob's anti-Thompsonistic, almost-R5RS-plus-extensions Scheme implementation, Gales Scheme. This design facilitates use over an airgapped system. Such a system would be composed of at least one online computer where gbw-node collects information from the Bitcoin network and broadcasts transactions and an offline computers where gbw-signer is used to generate Bitcoin keys and sign transactions. Usage instructions for gbw-signer will come in an article to follow.

Before we dive in head first here, if you find yourself glossing over the instructions below as if written in hieroglyphics, take heart that it's only ASCII and the command line is not too hard to learn with some dedication to consistent practice and a good guide to walk you through the process. The other side of acquiring the skill is you're equipped with a new set of eyes that allows you to, among other things, enforce ownership over your money. Jacob and I have created training curriculum and hardware packages along with software like Gales Bitcoin Wallet to help our clients do just that and which you may read more about here. Alright, dive at will.

The pre-requisites to verify sources, compile, install and run are :

  1. The machine I used has 2 cores, 4 GB RAM and 500 GB SSD.
  2. V. I used Jacob's V in Perl with keksum starter kit.
  3. a Unix-like OS. I used a fresh, minimalist install of Gales Linux, which comes with the Gnu C Compiler (GCC) 4.7.4 ; musl C Library ; Busybox userland ; and Linux Kernel. Gales also comes with "gport" build scripts for Perl, Python 2 and SQLite. Perl is required for my V selection and and Python 2 and SQLite are required for gbw-node.
  4. GnuPG (GPG). I used the gport build in Gales Linux.
  5. The Real Bitcoin (TRB). I pressed my install here to Jacob's bitcoin_system_compiler.vpatch.

2020/07/01 Update : As Diana Coman kindly pointed out in the comments, if you already have a TRB node in operation, you may skip directly to step 18 for all gbw-node functionality apart from the push command. For push to work, you need Jabob's bitcoin_rawtx_get_send.vpatch.

Commands issued1 to download and install complete orchestra from Gales Linux base install :

Add the following IPs to /etc/hosts :

1. Build and install GnuPG.
cd /var/build/gales/gports/gnupg ; gbuild ; gpkg-install -f ; mv /gales/dist/pkg/

2. Build and install Perl.
cd ../perl ; gbuild ; gpkg-install -f ; mv /gales/dist/pkg/

3. Build and install Python.
cd ../python ; gbuild ; gpkg-install -f ; mv /gales/dist/pkg/

4. Build and install SQLite and its docs.
cd ../sqlite ; gbuild ; gpkg-install -f ; mv /gales/dist/pkg ; cd ../sqlite-doc ; gbuild ; gpkg-install -f ; mv /gales/dist/pkg

5. Acquire the keys for the seals you intend to verify. In this case, jfw, diana_coman, spyked and mod6.
mkdir /root/keys ; cd /root/keys ; wget{0CBC05941D03FD95C3A47654AE0DF306025594B3,E72DCCB73A5E06694C5CD781D5196EE6390F999E,0x541A976BB5FC4B455D7FBC61BDAE9D051A3D3B95,027A8D7C0FB8A16643720F40721705A8B71EADAF}.asc

6. Prepare the V build tree.
mkdir -p /var/build/v/{v,trb,gbw-node}/{.seals,.wot,patches} ; cd /var/build/v/v/.wot ; ln -s ~/keys/0CBC05941D03FD95C3A47654AE0DF306025594B3.asc jfw.asc ; ln -s ~/keys/E72DCCB73A5E06694C5CD781D5196EE6390F999E.asc diana_coman.asc ; ln -s ~/keys/0x541A976BB5FC4B455D7FBC61BDAE9D051A3D3B95.asc spyked.asc

7. Acquire jfw's Keksum starter kit.
cd .. ; wget ; wget

8. Import his key on your gnupg key ring and verify the tarball with his signature.
gpg --import .wot/jfw.asc ; gpg --verify v-pl-keksum-starter-v2.tar.gz.asc

9. Extract the tarball, poke around to your content2 and run the install script.
tar xzf v-pl-keksum-starter-v2.tar.gz ; cd v-pl-keksum-starter-v2 ; sh

10. Acquire the vpatches and seals to press your V tree with the installed starter.
cd .. ; wget -P patches{v_strict_headers,v_keksum_busybox_r2,v_fixes_vpatch_sync,v_keccak_vtools,v_mod6_99993,v_mod6_genesis,v_fix_exptimes_paths_etc}.vpatch ; wget -P .seals{v_strict_headers.vpatch.{diana_coman,jfw},v_keksum_busybox_r2.vpatch.jfw,v_fixes_vpatch_sync.vpatch.{diana_coman,jfw,spyked},v_keccak_vtools.vpatch.{diana_coman,jfw,spyked},v_mod6_99993.vpatch.{diana_coman,jfw,spyked},v_mod6_genesis.vpatch.{diana_coman,spyked},v_fix_exptimes_paths_etc.vpatch.jfw}.sig

11a. Issue a flow. f
v_mod6_genesis.vpatch (diana_coman, spyked)
v_mod6_99993.vpatch (diana_coman, jfw, spyked)
v_keccak_vtools.vpatch (diana_coman, jfw, spyked)
v_fixes_vpatch_sync.vpatch (diana_coman, jfw, spyked)
v_strict_headers.vpatch (diana_coman, jfw)
v_fix_exptimes_paths_etc.vpatch (jfw)
v_keksum_busybox_r2.vpatch (jfw)

11b. Press your V tree, install the binary on your path and give it execute permission. p v_keksum_busybox_r2 v_keksum_busybox_r2.vpatch ; cd /local/bin/ ; ln -s /var/build/v/v/v_keksum_busybox/v/ ; chmod +x /local/bin/

12a. Acquire the vpatches for your press of The Real Bitcoin Vtree.
cd /var/build/v/trb/ ; wget -P patches{asciilifeform-kills-integer-retardation,asciilifeform_add_verifyall_option,asciilifeform_aggressive_pushgetblocks,asciilifeform_tx-orphanage_amputation,asciilifeform_and_now_we_have_eatblock,asciilifeform_dnsseed_snipsnip,asciilifeform_lets_lose_testnet,asciilifeform_maxint_locks_corrected,asciilifeform_orphanage_thermonuke,asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip,asciilifeform_zap_hardcoded_seeds,bitcoin-asciilifeform.1,mod6_phexdigit_fix,mod6_der_high_low_s,asciilifeform_and_now_we_have_block_dumper_corrected,asciilifeform_dns_thermonyukyoolar_kleansing,asciilifeform_zap_showmyip_crud,bitcoin-asciilifeform.2-https_snipsnip,bitcoin-asciilifeform.3-turdmeister-alert-snip,bitcoin-asciilifeform.4-goodbye-win32,bitcoin-v0_5_3-db_config.6,bitcoin-v0_5_3_1-rev_bump.7,bitcoin-v0_5_3_1-static_makefile_v002.8,bitcoin_rawtx_get_send,bitcoin_system_compiler,genesis,makefiles,mod6_excise_hash_truncation,mod6_fix_dumpblock_params,mod6_manifest,mod6_privkey_tools,mod6_whogaveblox,programmable-versionstring,rm_rf_upnp,malleus_mikehearnificarum,bitcoin-asciilifeform.3-turdmeister-alert-snip}.vpatch

12b. Acquire the seals of your choice.
wget -P .seals{mod6_manifest.vpatch.{mod6,jfw},asciilifeform-kills-integer-retardation.vpatch.mod6,asciilifeform_add_verifyall_option.vpatch.{jfw,mod6},asciilifeform_aggressive_pushgetblocks.vpatch.mod6,asciilifeform_and_now_we_have_block_dumper_corrected.vpatch.mod6,asciilifeform_and_now_we_have_eatblock.vpatch.mod6,asciilifeform_dns_thermonyukyoolar_kleansing.vpatch.jfw,asciilifeform_dns_thermonyukyoolar_kleansing.vpatch.mod6,asciilifeform_dnsseed_snipsnip.vpatch.jfw,asciilifeform_dnsseed_snipsnip.vpatch.mod6,asciilifeform_lets_lose_testnet.vpatch.jfw_unchecked,asciilifeform_lets_lose_testnet.vpatch.mod6,asciilifeform_maxint_locks_corrected.vpatch.mod6,asciilifeform_orphanage_thermonuke.vpatch.mod6,asciilifeform_tx-orphanage_amputation.vpatch.mod6,asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch.mod6,asciilifeform_zap_hardcoded_seeds.vpatch.{jfw,mod6},asciilifeform_zap_showmyip_crud.vpatch.mod6,bitcoin-asciilifeform.1.vpatch.{jfw,mod6},bitcoin-asciilifeform.2-https_snipsnip.vpatch.{jfw,mod6},bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch.mod6,bitcoin-asciilifeform.4-goodbye-win32.vpatch.{jfw,mod6},bitcoin-v0_5_3-db_config.6.vpatch.mod6,bitcoin-v0_5_3_1-rev_bump.7.vpatch.{jfw,mod6},bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch.{jfw,mod6},bitcoin_rawtx_get_send.vpatch.jfw,bitcoin_system_compiler.vpatch.jfw,genesis.vpatch.mod6,makefiles.vpatch.{jfw,mod6},malleus_mikehearnificarum.vpatch.{jfw,mod6},mod6_der_high_low_s.vpatch.mod6,mod6_excise_hash_truncation.vpatch.{jfw,mod6},mod6_fix_dumpblock_params.vpatch.mod6,mod6_phexdigit_fix.vpatch.{jfw,mod6},mod6_privkey_tools.vpatch.mod6,mod6_whogaveblox.vpatch.mod6,programmable-versionstring.vpatch.mod6,rm_rf_upnp.vpatch.mod6}.sig

12c. Populate your .wot directory.
cd .wot ; ln -s ~/keys/027A8D7C0FB8A16643720F40721705A8B71EADAF.asc mod6.asc ; ln -s ~/keys/0CBC05941D03FD95C3A47654AE0DF306025594B3.asc jfw.asc ; cd ..

13a. View your flow. flow
genesis.vpatch (mod6)
bitcoin-asciilifeform.1.vpatch (jfw, mod6)
rm_rf_upnp.vpatch (mod6)
bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch (mod6)
bitcoin-asciilifeform.2-https_snipsnip.vpatch (jfw, mod6)
bitcoin-asciilifeform.4-goodbye-win32.vpatch (jfw, mod6)
asciilifeform_dnsseed_snipsnip.vpatch (jfw, mod6)
asciilifeform_zap_hardcoded_seeds.vpatch (jfw, mod6)
asciilifeform-kills-integer-retardation.vpatch (mod6)
asciilifeform_zap_showmyip_crud.vpatch (mod6)
asciilifeform_dns_thermonyukyoolar_kleansing.vpatch (jfw, mod6)
asciilifeform_and_now_we_have_block_dumper_corrected.vpatch (mod6)
mod6_fix_dumpblock_params.vpatch (mod6)
bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch (jfw, mod6)
bitcoin-v0_5_3_1-rev_bump.7.vpatch (jfw, mod6)
asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch (mod6)
asciilifeform_orphanage_thermonuke.vpatch (mod6)
asciilifeform_and_now_we_have_eatblock.vpatch (mod6)
bitcoin-v0_5_3-db_config.6.vpatch (mod6)
asciilifeform_tx-orphanage_amputation.vpatch (mod6)
asciilifeform_maxint_locks_corrected.vpatch (mod6)
asciilifeform_lets_lose_testnet.vpatch (mod6)
asciilifeform_add_verifyall_option.vpatch (jfw, mod6)
programmable-versionstring.vpatch (mod6)
mod6_der_high_low_s.vpatch (mod6)
malleus_mikehearnificarum.vpatch (jfw, mod6)
makefiles.vpatch (jfw, mod6)
asciilifeform_aggressive_pushgetblocks.vpatch (mod6)
mod6_privkey_tools.vpatch (mod6)
mod6_manifest.vpatch (jfw, mod6)
mod6_phexdigit_fix.vpatch (jfw, mod6)
mod6_excise_hash_truncation.vpatch (jfw, mod6)
mod6_whogaveblox.vpatch (mod6)
bitcoin_rawtx_get_send.vpatch (jfw)
bitcoin_system_compiler.vpatch (jfw)

13b. Press when ready. p bitcoin_system_compiler bitcoin_system_compiler.vpatch

14. Acquire Bitcoin's dependencies. The deps/Makefile invokes curl, which isn't present out of the box on Gales Linux. Instead I ran wget by hand.
cd bitcoin_system_compiler/bitcoin/deps/ ; wget -O boost_1_52_0.tar.bz2.asc ; wget -O db-4.8.30.tar.gz.asc ; wget -O openssl-1.0.1g.tar.gz.asc ; cd ..

15. Ensure mod6's key is in your gpg key ring3 and compile the code with the make script :
gpg --import ../../.wot/mod6.asc ; make

16. Install the bitcoind binary to the preferred location on your preferred user's path, e.g. :
cp -a build/bitcoind /path/to/user/path/

17a. Configure bitcoind. Some select flags from ~/.bitcoin/bitcoin.conf. You'll also want to set the addnode flag a few times to the IP of trusted nodes.

17b. Run bitcoind and sync your local copy of the Bitcoin block chain.
bitcoind & tail -f ~/.bitcoin/debug.log | grep SetBestChain

18. Acquire the vpatch and seal for gbw-node.
cd /var/build/v/gbw-node/.wot ; ln -s ~/keys/0CBC05941D03FD95C3A47654AE0DF306025594B3.asc jfw.asc ; cd .. ; wget -p patches ; wget -p .seals

19. Press and install Gales Bitcoin Wallet Node. p gbw-node gbw-node.vpatch ; cd /package ; ln -s /var/build/v/gbw/gbw-node/gbw-node-1/ gbw-node-1 ; cd gbw-node-1 ; sh package/install

20. Configure gbw-node by making the hidden directory and redirecting the gbw-node's SQL schema into the database file.
mkdir ~/.gbw ; sqlite3 ~/.gbw/db </package/gbw-node/library/schema-node.sql

21a. Game time. Ask for help.
gbw-node help
Usage: gbw-node COMMAND [ARGS]

Available commands (can be abbreviated when unambiguous):


21b. Watch a list of addresses, identified by a tag. In this case, one of the more historic financial transactions to be recorded which marked the end of an era and the start of a new era. Enter your list of addresses separated by enter, press control d to send python the end of file signal and exit gracefully.
gbw-node watch mps-bitcoin-berkshire-bet

21c. Print your tags and addresses.
gbw-node tags

gbw-node addresses

21d. Scan the Bitcoin block chain for transactions sent and received by your watched addresses. (This took approximately 24 hrs to scan from the genesis block to approximately block height 634,000.
gbw-node scan
block 290841 new-outs 0 spent-outs 0
block 290842 new-outs 1 spent-outs 0
block 290843 new-outs 0 spent-outs 0

21e. Print the history of your transactions and the change in your balance. Can add an optional tag parameter to filter if you have multiple tags.
gbw-node register
290842 2 1000.00000000 0.00000000 1000.00000000

21f. Print your balance. Can add an optional tag parameter to filter if your have multiple tags.
gbw-node balance

21g. Print the list of spendable transactions, a.k.a. unspent transactions outputs (utxo), available to your watched addresses. The output of this command is formatted how gbw-signer expects its wallet/transactions file to be formatted. It's best practice to run multiple independent trb + gbw-node instances to ensure the transactions you're being fed from the online machine are the ones you actually you want to sign.
gbw-node unspent-outs
16u2LKbGwAARwsWEXKTjBu8XMghnVMcFEi 1000.00000000 227d88033f4a26f60285462254f23c521bff96975f58ff60eadbeb62dca68578 1 #blk 290842 tx 2

And there you have it. Enjoy ! And the next time a central bank doubles their digital money supply or restricts transactions cause one of their friends has their panties in a bunch, recall that while time waits for no man, Bitcoin will be there, hardening.

  1. I've presented the command flow as root user throughout for simplicity. In practice, only the install commands require root privilege. []
  2. I modified the BINDIR variable to /local/bin/ since that's an element in the default execution $PATH on Gales Linux. []
  3. His signature is on the deeded dependencies. []

May 2, 2020

Protect What Matters with JWRD

Filed under: JWRD — Robinson Dorion @ 02:16

How much do secure, efficient computing and monetary stability matter to you ?

Virtually all 21st century business operators and investors face two core challenges : 1) leveraging a secure and efficient computing infrastructure and 2) maintaining business continuity through underlying monetary instability. This article lays out how JWRD1) Computing works with clients to convert these challenges into a competitive advantage.

The challenge of deploying and maintaining secure and efficient computing infrastructure comes into play on all levels of the supply chain ; from communications to analytics to contracts to payments to financial instruments and markets to even as deep as money itself, computers and the Internet have become integral tools in commerce and finance. Security and efficiency are powers derived from underlying understanding and control over one's environment.

The modern market has become flooded with computing solutions pushed by big corporations which are proprietary, costly and take away control of crucial infrastructure and even data, leaving businesses more exposed to counterparty risk from their vendors. Businesses that want to retain or regain such control have been left with dwindling options and the stakes continue to rise.

Fronts where control has been ceded and resulting counterparty risk has risen include :

  • Access to and compilation of source code2 on every level from firmware to operating system to applications.
    • In 2015, spyware was planted (archived) in the Apple developer toolchain, which was then propagated to over 4,000 iOS applications available in their App Store.
    • Since ~2008, all Intel chips have been infected with their Management Engine at the Basic Input Output System (BIOS) level. The Management Engine system allows Intel to remotely exfiltrate information from the machine even when powered off. Intel prevents the owner of the machine from replacing Intel's code with independently compiled code. This is essentially a backdoor enabling Intel, or anyone who gains access to Intel's system, to access your information at will and likely without your notice.
    • Operating Systems such as Microsoft Windows compound the risk factors of proprietary code with being over-engineered and unnecessarily complex. This makes them more prone to error and seemingly necessitates regular changes to the system pushed by Microsoft. The supposed owner of the system is not able to effectively verify the code being installed in the updates pushed and it's often the case that supposed fixes to old bugs introduce new bugs.
  • The downsides of third-party compiled code are amplified by increased reliance on cloud based solutions. "The cloud" is really marketing speak for some machine owned by someone else which provides that someone else3 full access to what was your sensitive information.
  • Closer to the cause of the preceding points is the pervading industry fashion we refer to as "fast food computing". Fast food computing is the expectation an outside corporation will provide marginally convenient solutions that are cheap in the short-term and that the user need not know the ingredients nor inner workings.

Ceding control to a third party makes one more dependent and fragile. JWRD Computing exists to save our clients time and money in the process of putting them firmly back in full control of their own digital infrastructure -- i.e. helping them regain personal sovereignty. We work from the principles of comprehensibility toward the goal of intellectual ownership for our clients of all the products and services we provide. Our service allows clients to mitigate the risk of unexpected catastrophic expenses and focus on improving efficiency and capitalizing on opportunities to grow their business.

Maintaining business continuity through monetary instability. The multi-decade, unprecedented experiment of high inflation5 global central banks have been engaged in has incentivized unsustainable debt levels that have made corporations and governments alike fragile and desperate. Evidence continues to mount that central bankers and politicians are more likely to continue to devalue the purchasing power through adding zeros to the end of accounts on the central server6 and attack the fungibility of the currencies they monopolize than to admit they've been wrong. The risks to business operators and investors include :

  1. the fiduciary being forced by government to freeze funds or deny transactions ;
  2. insolvency of the fiduciary ;
  3. arbitrary wealth tax ;
  4. insolvency of government deposit insurance ;
  5. negative interest rates ;
  6. central bank inflation that dilutes purchasing power and is steadily ratcheting the risk of Weimar/Zimbabwe/Venezuela style hyperinflation.

Bitcoin7 was designed to thrive in an such an environment. While Bitcoin provides owners several cutting edge advantages, it comes with its own additional set of security challenges. JWRD provides clients with hardware, software and operator training to mitigate risks and fully capture the upside of Bitcoin payments and custody.

What we've done to confront these challenges.

We've developed solutions on three major fronts.

  1. Hardware :
    1. Secure Key Management Hardware Package ;
    2. Build recipes and configurations for Corebootable Hardware ;
    3. Build and configuration recipes for Router ;
    4. Standard Operating Procedures for airgap operation via Optical Data Diode ;
    5. Procurement of Hardware Random Number Generators ;
    6. Faraday cage design and implementation.
  2. Custom Software :
    1. Gales Linux8, among other security advantages, it's one of the only Linux distributions which provides the operator the independence to compile all source code ;
    2. Gales Bitcoin Wallet (GBW) : designed to be used over an airgapped system. The offline signing component is written in Gales Scheme9.
    3. Code contributions10 to the Bitcoin reference implementation, i.e. The Real Bitcoin (TRB)
    4. yrc, the Unix Internet Relay Chat (IRC) client. Common modern chat services require the use of the providers' proprietary software clients and servers. IRC is an Internet Standard chat protocol which can be deployed to implement your own privately operated chat network.
  3. Operator training curriculum covering :
    1. Unix command line operation ;
    2. System and Network Administration ;
    3. Secure Key Management ;
    4. Encryption/Cryptographic Signing Software, Gnu Privacy Guard (GPG) ;
    5. V, TRB and GBW installation, configuration and usage.

What we offer.

We provide design consulting, support, custom software development, and hardware packages that match your needs. Below are some examples of what we provide :

Option 1 : Consulting, System Administration and Development :

For businesses with deployed systems we provide auditing, consultation system administration and development services to improve the efficiency and security of extant tools and operations. Auditing and consulting clients receive a report that reviews the strengths of current infrastructure and procedures and provides recommended plans and quotes for strengthening weaknesses.

Our System Administration and Development experience includes :

  • Windows, Mac, Linux, Unix and BSD operating systems ;
  • VMware and KVM virtualization ;
  • ERP and CRM software configurations ;
  • a variety of apps & protocols, databases, hardware, networking and monitoring ;
  • custom browser configurations and secure password management procedures ;
  • software development in 10+ programming languages.

Our personnel has experience deploying everything from ancient POWER servers needing custom-wired serial cables to SPARC to modern HP blade systems and more in between. Given the flexibility of this service, the pricing varies per project ; email us at sales (at) today to get started on tailoring a solution to you.

Option 2 : Key Management Hardware Package :

This package includes two Corebootable11 laptops (one for offline and one for online use), an optical data diode for securely transferring data between online and offline systems, a Hardware True Random Number Generator (TRNG)12 and a router.

Item Units Price
Laptops 2 $1,600
Optical Data Diode 1 $220
Hardware TRNG 1 $500
EdgeRouter Lite 1 $180
Total $2,500

Option 3 : Operator Training :

We distinguish ourselves methodologically by working from the root axiom of V, to quote:

Software is the property of people running it, and part of the systems running it.

We execute on this by providing clients a system reduced to essential complexity and training on operating the system from a well-established and high leverage tool, i.e. the Unix command line. With the skills to operate in a text-only environment, they're afforded the double advantage of 1) improving their security by saving millions of lines of complex and often unsafe code --measuring often in Gigabytes, used to commonly implement the mouse-driven13 graphical user interfaces (GUI) and 2) improving their skills, mindset and efficiency through learning the command line14.

Training sessions and homework assignments to develop following knowledge and skills:

  1. Beginner : 9 sessions, $3,600. All delivered remotely, no hardware purchase required.
    1. Unix command line operation ;
    2. The advantages of plain text as the universal interface ;
    3. Intermediate file system theory and practice ;
    4. Handy tools in a pure text environment : vim, less, tmux ;
    5. Intermediate shell usage ;
    6. Time, File & Stream Management ;
    7. System and Network administration.
  2. Intermediate : 10 sessions, $4,000. Requires purchase of one router and one laptop. Price does not include hardware costs.
    1. Fundamentals of cryptographic key generation and management ;
    2. GnuPG usage ;
    3. V - usage of the cryptographic version control system ;
    4. yrc, the Unix IRC client usage ;
    5. Router and firewall installation and configuration ;
    6. Bitcoin node compilation, installation and configuration ;
    7. Bitcoin node usage ;
    8. Gales Bitcoin Wallet installation, configuration and usage.
  3. Advanced : 8 sessions, $3,200. Full Key Management Hardware Package required. Price does not include hardware costs.
    1. Compilation, installation and configuration of Gales Linux ;
    2. Compilation and installation of BIOS ;
    3. Hardware TRNG firmware verification and usage ;
    4. Optical Data Diode usage.
How does the training work ?
  1. Placement Testing: All clients take a placement test to determine which level they'll start in.
  2. Training Options : Study Heavy and Class Heavy.
    • Study Heavy : 3 hours independent reading and practice exercises for each hour of training session.
    • Class Heavy : 1 hour of independent reading and practice exercises for each hour of training session.
  3. All sessions are 90 minutes either once or twice a week.
  4. Exercises and reading are assigned between sessions.
Model Training Pace of Study and Payment Options

The table below breaks down the pricing and time commitment for common examples of study pace and payment options. Receive 5% off when two modules are purchased at a time and 10% off when all modules are purchased upfront. Group sessions of 2 simultaneous clients receive a 10% discount per client and groups of 3 receive a 20% discount, with 3 being the maximum group size.

Study Heavy Study Heavy Class Heavy Class Heavy
Number of Sessions: 27 sessions 27 sessions 54 Sessions 54 sessions
Study/Session Ratio: 3:1 3:1 1:1 1:1
Session Time: 27 x 90 min = 40.5 hrs 40.5 hrs 54 x 90 min = 81 hrs 81 hrs
Study Time: 121.5 hrs 121.5 hrs 81 hrs 81 hrs
Time Commitment: 162 hrs 162 hrs 162 hrs 162 hrs
Payment Options : 3 payments totaling $10,800 1 payment of $9,720 3 payments totaling $21,000 1 payment of $18,900
Cost: $10,800 $9,720 $21,000 $18,900

The Bottom Line result is....

... as our client you break out of the common learned helplessness that herds the mainstream to fit into whatever the mass production line is pumping out and on its schedule too15 ; own your complete infrastructure and make it work for you ; lower the cost to understand the software you use by enumerating goodness, minimizing complexity, verifying sources and compiling everything ; becoming a stronger operator through education and practice of sensible skills such that you build the capacity to establish private communications and ownership of money and transactions.

What clients say.

Johan Castellanos, CEO of SayShannon :

"I had no concept what so ever of Linux/Unix but after the course I feel that I can venture into the world of operating systems with confidence and with the assurance that I will find answers."

How does JWRD compare ?

  • The Unix command line is the most established and one of the oldest modes of computer operation because of the efficiency and security advantages it provides. It's available natively on Linux, BSD and Mac OS X systems (Mac OS X is derived from BSD). As such, there is an abundance of educational and practical resources available on the web to learn the Unix command line and a reason clients can test out of the Beginner level. Our Unix training balances underlying theory and one-on-one guidance of an expert in practicing the commands to accelerate the learning process. Training is done on Gales Linux and thus clients get direct experience utilizing the design advantages it offers.
  • No one we're aware of offers a key management hardware package as thorough we do, which includes Hardware Random Number Generator, Optic Data Diode for Air Gap data transfer, Corebootable machines for both Offline and Online systems and Router installation and configuration.
  • No one we're aware of offers training on airgapped Bitcoin wallet or GPG usage.
  • The skills and system to safely transact and save in Bitcoin provides a clients power not really comparable to anything else. Where else can you own an arbitrary amount of wealth in a small series of numbers16 ? And furthermore, the power to verify both the money supply and conduct arbitrarily large transactions globally for the cost of a few modestly provisioned computers, internet connection, software that's publicly available and a few weeks worth of dedicated training on the skills to operate the tools ? Even a banking license and underlying capital and competence to make the license economical don't provide you that power.

The Cost of Waiting

  • Cryptographically safe hardware is in increasingly limited supply. It is unknown how much remains, we can get you set up quickly while supplies last.
  • The cost of our service priced in fiat currencies will rise indefinitely.
  • Your personal opportunity cost can only be yours to evaluate, we invite you to consider the value of the results you'll earn for yourself by enhancing your security over your information, computers and money.

How to get started today.

To start the process of regaining your personal sovereignty through strengthening your digital security with JWRD, email us at sales (at) today with your name and a brief description of your interest. If you're interested in a call, include your phone number and a convenient time to reach you.

  1. Jacob Welsh (WoT : jfw) & Robinson Dorion (WoT : dorion []
  2. People read and write source code. A program called the compiler converts the human readable source code into the machine executable binary code, the latter being exceptionally costly for humans to understand. That is to say, if you're installing third-party compiled binary files (binaries), there is little to no chance you understand what you're actually installing and are thus more at risk to third party malice and incompetence. []
  3. and note, any other third party it's associated with or becomes a target of. []
  4. VPS is a technical lingo for the cloud. []
  5. Meaning the proper definition of inflation, i.e. money supply growth, not that "consumer"/"producer" price propaganda the socialist state has been pushing. For example, the yearly change in Federal Reserve reported M1 since 1971 has a geometric average north of 6%. []
  6. What percentage of USD/EUR/GBP/JPY/CNY is digital after all ? []
  7. The undebaseably scarce, peer-to-peer digital cash, the most robust extant protector of property rights and largest computing network on earth for some years now. Bitcoin supply is undebaseably scarce by definition at the protocol level and through its mathematical properties. Pretty much any natural commodity that has or could in theory serve as money is debaseable either through relatively cheap dilution of impurities, e.g. in 1964 when US silver coins were replaced with nickel plated copper coins, or arbitrary expansion of the supply, e.g. if salt is the money and the king wants more salt he could tax the pepper farmers and invest the proceeds expanding the salt works and supply. Those closest to the new supply (salt, fiat or otherwise) spend it into the economy, bidding up goods and diluting the purchasing power of savers and creditors. []
  8. Reviewed to date by bvt (WoT : bvt) and Lucian Mogosanu (WoT : spyked) and on which Mircea Popescu (WoT : mircea_popescu) noted :

    mircea_popescu: "A feature that I liked a lot is that shell is the only scripting language in the default install of the distribution. Typically perl and python get pulled in unconditionally as a build dependency of a runtime dependency of some rarely-used default-installed utility, or are directly used to implement package manager, etc. With Gales, a decision about what scripting language to use can be made without constraints created
    mircea_popescu: by ready availability of python or others." << indeed this is mindblowingly beautiful, and as far as i current;y know the foremost fearher in jfw 's cap.
    mircea_popescu: feather* []

  9. Gales Scheme is a dynamic, type-safe, functional programming language. The code is published here on Fixpoint with articles to describe the code pending. Scheme is a well-established, powerful language that is specified in a shade over 50 pages of text. The advantage Gales Scheme provides JWRD clients is superior comprehensibility of mission critical components such as handling the money. []
  10. The code is described and made available on Fixpoint : here and here []
  11. Coreboot is an open source BIOS project that can be used on some machines which do not enforce the Intel Management Engine discussed above. []
  12. To quote from the vendor's website :

    Why is entropy important ?
    As the old adage goes, "Any one who considers arithmetical methods of producing random digits is living, of course, in a state of sin."

    Any Turing machine (such as any desktop or laptop computer, tablet, smartphone or other digital device of any type, kind, make or vintage, including without limitation any machinery used by any government for any purpose, be it nuclear tests, space flight, military applications not to mention Tamagotchis and old Nintendo boxes) is, by definition (and without exception possible in theory or ever encountered in practice), a square keyhole. It can be opened equally well by all those who possess the mighty secret of the shape of its key : a square.

    Entropy provides the only solution available, and the only solution possible to this problem. The only way known, and the only way that can ever be or will ever be devised to transform a computer into my computer, as a matter of fact rather than an exercise in delusion -- relies on the use of entropy. There is not, nor could there ever be, any alternative.

    Consequently, the only fair statement of the situation is to point out that entropy is not merely fundamental, but specifically required for personal as opposed to collectivist computing ; and as technological development pushes society further into the digital age, entropy becomes ever more central as the only available building block of individual existence. In short : without entropy, you don't exist, because without entropy -- there is no you, there's only a morass of "us".


  13. A.k.a. point and click, click and cluck, etc. []
  14. To help those readers who've never considered the advantages of the command line interface (cli) begin to conceptualize what they've been missing, I invite you to reflect on the fact a supreme authority compared it to discovering sight after living in a state of blindness, to quote:

    mircea_popescu: the fundamental problems are that cli-iliteracy is a serious, life-changing disability. in terms of severity, blindness compares, deafness does not. obviously the afflicted are scarcely aware, but this doesn't mean they're not afflicted.
    mircea_popescu: whole "work-years", entire "departments" could readily be replaced by you know, half hour's worth of sed ; they aren't because us corporatelandia mostly exists as makework, to create the illusion for millions of ambitious derps that they're "doing something" lest they take to the streets and start throwing rocks. nevertheless, even if the cutting legs is systematically needed in socialism, to crate the sort of helpless vat
    mircea_popescu: -people it can thrive amongst, it's still personally disabling.
    mircea_popescu: so you know, as far as the life prospects, the future evolution, however you will name the sum-total potential of a person's existence, understanding how to command line is more important than meeting their father. it'll certaily do a lot for them, and it certainly CAN do way the fuck more for them.
    mircea_popescu: gales or no gales, the man who can't cat | grep is closer to a boy than any other man.
    mircea_popescu: << quite so. using tools, ~thinking in ways which make their activity amenable to useful tools~ and so on.
    ossabot: Logged on 2020-01-24 19:54:12 jfw: - regarding the "because" there: there was perhaps a degree of teaching it because we'd built it, but I see it more the other way - a text-only Linux being a good choice for the job specifically because it doesn't have the GUI crutch and CLI illiteracy is one of the bigger barriers that otherwise intelligent people face to using serious


  15. Apple's planned obsolescence scam may come to mind about now. []
  16. i.e. the private key which in Bitcoin is 256 bits. The advantage of it being physically small is it lowers your cost to hide, protect and transport. []

November 16, 2019

JWRD Computing: The why, how, what and way forward.

Filed under: JWRD — Robinson Dorion @ 03:52

The JWRD1 Computing why, how, what and way forward, i.e. business plan.

This venture exists to support clients in pursuit of enforcing personal sovereignty through strengthening their digital security. We provide qualified individuals a relatively sane, customizable computing environment and set of key management tools. With a clean learning environment and one-on-one consultation we guide the individual in strengthening himself. On the one hand, as Ayn Rand 2 put it, "Civilization is the progress toward a society of privacy. The savage's whole existence is public, ruled by the laws of his tribe. Civilization is the process of setting man free from men." On the other hand, as computers become more central to human life, and Bitcoin continues to disrupt socialism on all levels, sane computer operation becomes an ever increasing responsibility of the thinking man.

While in the short-term, the r-selected, fast food 3 computing paradigm has spread like the virus it is, the K-selected, home cooking computing paradigm has been the only tenable method of sane computer operation since 2015 and will remain the case moving forward. The tools and training we provide clients accelerate their transition from their current, unsustainable, fast food diet to the healthier, more sustainable, home cooking technology lifestyle.

The layers of transition are:

  • On the Hardware level, we transition clients from chip sets that are backdoored by design -- e.g. Intel ME, AMD PSP -- to Corebootable machines.
  • Operating System usage moves from proprietary systems -- e.g. MSFT Windows, AAPL MacOSX/iOS, GOOG Android, Canonical Ubuntu, IBM RedHat -- to compilable from source systems -- e.g. Gales Linux 4, OpenBSD.
  • Software Platform usage transitions from third party provisioned accounts -- e.g. Google Mail, WhatsApp, iMessage, Twitter, AWS -- to protocols where the operator may deploy the software on systems he owns -- e.g. qmail for email, IRC for chat, MP-WP for publishing.
  • Code Access shifts from closed source or third party compiled binaries to open source deployments managed with V.
  • System Changes move from being forced upon the user by unaccountable corporations to the operator's choice and responsibility to implement.
  • We shift clients' Modality of Operation from the visual, mousey, point and click control, emotionally stimulating usage to the verbal, command line environment where logic comes to the forefront.
  • The Locus of Complexity is transitioned from a complex system for simple users to simple systems for complex operators.
  • On the Key Management front, the fast food model of weak passwords over insecure protocols falls away as operators come to understand secure key management.
  • From there, Asset Custody moving from insecure online account via leveraged and leaky socialist licensed financial institutions to operator owned digital cash becomes that much more of a no-brainer.
  • When considered in the context of Sound Money, moving from digital, centrally issued, non-fungible scrip of unverifiable supply to a digital, transparent, perfectly fungible cash that's undebaseably scarce becomes that much easier when the skills and awareness home cooked 5 computing engenders are sharpened.

The Bottom Line result is clients owning their hardware infrastructure ; lowering the cost to understand the software they use by enumerating goodness, minimizing complexity, verifying sources and compiling everything ; becoming stronger operators through education and practice of sensible skills such that they build the capacity to establish private communications and ownership of money and transactions.

Training through the Active Learning Methodology

We work one-on-one or in small groups with clients and assign reading and exercises between sessions. Clients build their skills and confidence by practicing commands and operations with instructor guidance. Sessions are broken into a warm up 6, presentation to introduce the new topic, controlled practice and critical thinking. Complex abstractions are broken into simple parts using whiteboard, pen and paper and knowledge is converted into action. Proficiency reports are delivered following each section with plans of action for specific areas of improvement.

The Learning Curve

  1. Laptops delivered with Gales Linux and Coreboot preinstalled.
  2. Unix 001 to build awareness of environment and confidence in command line operation.
  3. Apply and strengthen Unix 001 skills with System Administration tasks.
  4. Follow recipes and understand how the system is built, from Operating System (Gales Linux) to BIOS (Coreboot) to Router.
  5. Introduction to V usage, which allows the agent to consider a given text's meaning, source, and context.
  6. Apply V in deployments of Bitcoin software.
  7. Send and Receive Bitcoin payments while verifying the Bitcoin blockchain.
  8. GnuPG usage to encrypt, decrypt, sign and verify messages.
  9. Data Diode operation for administering an offline system.

Ideal Client Profile

  • $10M or greater in net worth.
  • Uses or has used legal asset protection instruments.
  • Values privacy, individualism, capitalism.
  • Not stupid, but not afraid. Mind for risk reduction. Strategic. Quantitative skills.
  • Values substance over form. Form follows function. Economy is Art.
  • Life long learner. Patience and humility to learn.
  • Trust oriented, values long term relationship development.

Training Packages

All packages and pricing include the following hardware and software:
Computer Hardware: 2 Corebootable laptops, Router, Data Diode, TRNG ; package valued at $2,500.
Software7: Bitcoin, GnuPG, Gales Linux, Gales Scheme, Gales Bitcoin Wallet, yrc IRC client.

Study Heavy Study Heavy Class Heavy Class Heavy
Number of Sessions: 25 sessions 8 25 sessions 50 Sessions 50 sessions
Study/Session Ratio: 3:1 3:1 1:1 1:1
Session Time: 25 x 90 min = 37.5 hrs 37.5 hrs 50 x 90 min = 75 hrs 75 hrs
Study Time: 112.5 hrs 112.5 hrs 75 hrs 75 hrs
Time Commitment: 150 hrs 150 hrs 150 hrs 150 hrs
Payment Options 9: 2 x $6,250 1 x $10,000 2 x $10,000 1 x $18,000
Cost: $12,500 $10,000 $20,000 $18,000

Success to Date

We started with 3 pilot clients September this year. Each took the study heavy option. Two are in a group pacing at two sessions a week and the other is once a week. None had substantial command line experience and after 20 sessions with the twice weekly group they've : grasped command line usage and system administration in a text only environment, compiled the entire system from source following the Gales build recipe, installed and configured the system, installed and configured the router we provisioned, generated test GPG keys, transferred data between online and offline machines via Data Diode, V pressed TRB and have their node syncing.

With FUCKGOATS usage and Coreboot build and BIOS flashing remaining, this proof of concept gives us confidence our program can turn potential into relatively robust resourcefulness in 25 sessions. With the knowledge, skills and reference notes they acquired, they have a high probability of reproducing the hardware and software environment provisioned independently. If not completely, we've saved them substantial time and they're much more informed as to what are the important questions to ask.

2020 Projections

I have a soft commitment from a financial adviser from my meat-WoT that he'll be starting in February 2020 and expects to refer 9-10 of his clients over the year. He may start in a group of 3 in February ; we're meeting face to face Nov 25th to game plan further.

We also have soft commitments locally, one of which preferred simply to not be our initial client 10. Despite lingering in the online shadows hindering our local relationship development to a degree, we have developed enough relationships locally such that 5-10 clients over next year is not a stretch. With that being said, January and February will likely tell us a lot about what the year holds in store. The more clients we close and on board earlier, the more likely we have referrals in the 2nd and 3rd quarters.

Taking the more conservative 5 referrals from the north and 5 local clients all at the $10k upfront payment option, that's $100k revenue. With Jacob primarily instructing and me selling, we've agreed to 30% going to the instructor, 30% going to sales and 40% to the company to replenish hardware stocks and retain capital for future expansion. When we're referred business 11 the referral fee is paid from the 30% sales commission. At present, we've decided it's not advantageous to operate from an office and have been delivering sessions at either the office or home of the client. The $2,500 value we place on the hardware builds in a mark up on the cost of the parts and refurbishing when required.

Up until now, our marketing has mainly consisted of meeting and talking to people in person. We plan to work referrals as much as we can, but a broader strategy for lead acquisition needs to be planned and implemented.

Operating Considerations

With the curriculum now developed, we estimate 30 minutes of preparation per 90 minute session for the instructor to deliver quality to study heavy clients. Thus, 37.5 hrs + 12.5 hrs = 50 hrs of instructor time. At 20 clients all doing individual sessions, that's 1000 hours or 20 hours a week on a 50 week year. Practice rarely works out as clean as the numbers and this doesn't consider commute time, which will be dependent on the location of the sessions, but this shows at optimistic demand levels our capacity to deliver under this two man operation is far from being maxed out.

To support remote clients, we're most likely to carry out the initial 2-4 sessions 12 in person to kick things off and will need to build out infrastructure and processes to deliver sessions when being face to face isn't feasible. Using a tmux shared session on a server combined with a phone or video call is looking like the best way to implement remote delivery at present, but we still need to test it to work out whatever kinks there are.


While we think the service we're delivering is important, we don't want to necessarily be personally drilling ls and cd into the heads of beginners long term. We expect to reach a threshold of developing sufficiently resourceful clients such that new, more interesting and profitable opportunities emerge. That is, this initial phase will create a new market and bootstrap other ventures 13. What that threshold is 14 and what those opportunities may be will in large part depend on who the clients are. At the same time, we don't necessarily want to completely abandon a quality service we've poured substantial time and effort into. Thus, managing to build processes and people such that we can delegate the delivery of the basic training and administration and steer this business at a higher level will be an ongoing focus.

  1. Jacob Welsh & Robinson Dorion. []
  2. from The Soul of an Individualist essay from For the New Intellectual []

  3. dorion: I think the problem is they're aiming for the masses rather than elite. think bitcoin can/will/is for liberating poor. so they push fast-food technology.
    spyked: lulz @ "fast-food technology". I'm wondering how this translates to software in technical terms. is it just the inflation of code, or what?
    diana_coman: spyked: fast-food tech seems to me very aptly put, really; think of it: shiny and BIG, cheap and available in 1001 varieties of the same thing, "attractive" if you don't look much/haven't seen much else, shitty content and abismal quality that will screw you up in the end; what's there not to fit, really.
    diana_coman: spyked: + there is that important part "you don't have to do it yourself!!"
    diana_coman: make it out of whatever shit you find, pre-packaged solutions tech or food-wise.
    spyked: diana_coman, I can quite see the "one size fits all"/"pre-packaged silver bullet" angle. I'm only mildly curious what this says about the code itself, e.g. I looked at the google-android code at one point and it was grossly overengineered. and I suppose that's also the case with code that's otherwise proven to be working under extreme conditions, such as the linux kernel.
    spyked: imho useful to make the distinction between "complexity for fast consumption" and "complexity that gives a huge productivity boost"
    ossabot: (trilema) 2018-06-05 mircea_popescu: "thetarpit blog scaffolding is a few kLoC of CL, but lacks *any* editor-side interface" << understand something : i publish more than anyone, and by anyone we don't mean solo operators, we mean whole fucking outfits. there's a reason for this. the fact that trilema is comfortable to me provides those last edges of extra productivity and intellectual leverage that convert exceptional performance into mindblowing performance. t
    diana_coman: possibly; at the other extreme, the copy/paste/autogen horrors are anything *other* than overengineering, lol.
    diana_coman: spyked: heh, yes, the two types of complexity mirroring the two types of simplicity
    ossabot: (trilema) 2019-10-31 diana_coman: there's all sorts of simple and not all of it boring; that there though would be the boring-simple, more like the simple remains of a cut-out than the simple path to the core of an intricacy.
    diana_coman: but fast-food is not really about no-complexity at all, quite on the contrary it would seem to me that it's precisely a lot of complexity just of the wrong kind (it's industrial for a reason, after all)
    dorion: << and building off diana_coman's comment, I see at least a couple angles. the first is who the technology is designed for. it seems since the '80s there has been a major push, primarily by aapl and msft, for computers for the masses, i.e. lowest common denominator, 'over 1 billion served'.
    ossabot: Logged on 2019-11-01 06:32:40 spyked: <-- lulz @ "fast-food technology". I'm wondering how this translates to software in technical terms. is it just the inflation of code, or what?
    dorion: this aim lead to 'point and click' (visual/spacial) rather than command prompt (verbal) usage modality. 'it should be so easy grandma can use it,' etc. further, the incorrect labeling of learned behaviour as 'intuitive', which really means luser ought never have to think, read manual or even error messages.
    ossabot: (trilema) 2016-09-14 asciilifeform: 'the only intuitive notation is the tit' or how did it go.
    dorion: To compensate for low quality user, all sorts of complexity needs to be built in, which is one part of the code inflation. another secondary part, described by naggum iirc (but don't have link handy) is demand for ever more 'programmers'. excess demand lowers quality on the creation side combined with sillycon valley, 'move fast and break things' so we can 'scale' (nevermind profitably) and sell
    dorion: to the suckers on the public markets.
    diana_coman: 'point and click' aka click-and-cluck
    ossabot: Logged on 2019-08-29 19:13:57 diana_coman: shrysr: different yes but not better; it's usually touch-screens that they throw at kids from nursery, yes; + "learning to program by click-and-cluck"
    diana_coman: and all of it coming from the core cause of too much money distributed to idiots; it makes for perverse incentives and the inevitable result of products made for them.
    dorion: lol at click-and-cluck
    dorion: more technically, "I'll import entire library rather than re-implement the one function I 'need'". and then the 'library' imports libraries.
    ossabot: (trilema) 2018-08-21 mircea_popescu: Mocky he has a point, "library" is oreilly-ism. before the free/open source struggle for power, it was rather a teaching tool.
    dorion: which leaves us in dark modern ages where can't buy professional computer -- everything is 'sysco' -- as well documented in , the logs, etc. []
  4. For the time being, we're going to market with the system we have and know. As Cuntoo/TMSR OS become further developed and better known to us, we'll decide at that juncture how we ought to change. []
  5. We give them a tour of the kitchen, show what it looks like to follow recipes, cut vegetables, marinate the meat, which knobs of the stove to turn and give them enough warning in a controlled environment so they don't set a grease fire and burn down the house. []
  6. Evaluate and reinforce retention of knowledge from prior sessions []
  7. The latter four are originally developed by Jacob Welsh. []
  8. Training Sessions are either once or twice per week. []
  9. Bitcoin, cash, check and ACH accepted in that order of preference. []
  10. "I like what you're doing, I see value in it for me and friends to refer come to mind. However, I don't want to pay you to develop your service, I want something developed and tested." []
  11. Our preference is for referral agents to first be clients so they know what they're referring. []
  12. For example, I'll likely spend a week in Vermont first week of February, then client(s) will travel with me to Panama the second week. []
  13. E.g. With 25 clients who run their own nodes, manage GPG and IRC and whose trust we've earned, one thought has been to use our centrality in the network to broker trades between them. []
  14. Could be 10, 25, 100 depending on the whos and what we do with them. []

Powered by WordPress