Hic inserere motto

Botworks - ircbot and logbot genesis

June 21, 2020 — shinohai

Alf has reminded me several times that it might be helpful to publish the sauce for my ircbot setup so this post is an attempt to do just that, and generally make it easier to install the bot components using V. My botworks tree uses trinque's lisp ircbot and logbot combo as the starting point.

A lot of good patches are scattered about on former republican blogs, though it seems I could get none of them to play nice with esthlos-v so a regrind was in order. For ircbot these are:

trinque's ircbot-genesis-kv.vpatch.

ben_vulpes' ircbot-multiple-channels-kv.vpatch.

whaack's ircbot-no-suicide-on-reconnect-kv.vpatch.

Assuming you already have SBCL and quicklisp, you can then use `V` to press ircbot and move the output to your local-projects directory:

v press ircbot-no-suicide-on-reconnect-kv out

mv out/ircbot ~/quicklisp/local-projects

The process is repeated to add the logbot system. While testing the regrinds I came upon a curious problem where adding ben_vulpes "logbot-multiple-channels" patch caused an error when trying to start logbot. Simply pressing the logbot genesis and running the bot is working, so I will continue to debug the issue and post results in a future botworks piece. The logbot requires that postgres be installed on your system, whaack has a good piece on how to do this on his blog, if you aren't familiar with setting that part up.

v press logbot-genesis-kv.vpatch

mv out/logbot ~/quicklisp/local-projects

With both of these components installed where ASDF can find them running the bot is as simple as firing up a REPL, adding your parameters and connecting to it according to the instructions in the "logbot/USAGE" file.


Put together a better prefixed command system, the system I am currently using works but needs quite a bit of polish before being worthy of turning into a vpatch.

Cobble together a www log reader for use with the logbot system.

Links to useful lisp botworks resources:

trinque's sources:

ben_vulpes' post on multiple channels:

spyked's botworks vpatches:

whaack's post on setting up trinque's logbot:

Tags: News, Lisp, UNIX

Yet another musl trb build instructional

April 30, 2020 — shinohai

A recent post by DC University alumni1jfw proposed significant changes to the trb build system amongst them one that does away with the `makefile.unix` file in trb source directory. This build takes a different tack and changes next to nothing of the original structure, while still getting a statically linked bitcoind.

I started by adding a profile for my toolchain at `/etc/env.d/gcc/` and named it "x86_64-pc-linux-gnu-musl-4.9.4". Now one can switch to it any time you please using gcc-config.

# gcc-config -l
 [1] x86_64-pc-linux-gnu-7.3.0
 [2] x86_64-pc-linux-gnu-9.2.0
 [3] x86_64-pc-linux-gnu-musl-4.9.4 *

I choose profile 3, ensuring we use the correct toolchain.

# gcc -v
gcc version 4.9.4 20160426 (for GNAT GPL 2016 20160515) (GCC)

Press trb in the same way as described on existing foundation "how-to" page, then proceed to the build directory:

v press mod6_whogaveblox trb054`
`cd trb054/bitcoin/build`

Build the 3 main trb dependencies (listed as #Turds! in rotor ), much as Jacob described in his article, and installed them to the `./ourlibs` directory. I also host my own mirror the dependency artifacts on deebot here so I grabbed the necessary items:




In this directory I also put a modified version of the "rotor_bitcoin_only" script called `` that absolutely, positively *does not remove* makefile.unix. It contains:


DIST=$(readlink -f ./distfiles)
OURLIBS=$(readlink -f ./ourlibs)

export CC=$(readlink -f $TOOLCHAIN/bin/x86_64-linux-musl-gcc)
export CXX=$(readlink -f $TOOLCHAIN/bin/x86_64-linux-musl-g++)
export LD=$(readlink -f $TOOLCHAIN/bin/x86_64-linux-musl-ld)

export CFLAGS=-I$(readlink -f $TOOLCHAIN/usr/include)
export LDFLAGS=-L$(readlink -f .$TOOLCHAIN/usr/lib)
export PATH=$PATH:$(readlink -f $TOOLCHAIN/usr/bin)




cd ../src;
make STATIC=all -f makefile.unix bitcoind
strip bitcoind
mv bitcoind ../bin

Now run `./ The output for me is a 5M statically linked trb. It took about ten minutes for me to build.

bitcoin/bin # file bitcoind
bitcoind: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped

bitcoin/bin # echo "Size: $(du -h bitcoind)-$(ldd bitcoind)"
Size: 5.0M	bitcoind-	not a dynamic executable

I am pleased with the results as they are on this one. Aside from the benefit of losing the tedious buildroot process, I'm choosing not to change much right now here and leave trb the fuck alone.2


WIP: A static GNAT with musl, NoSuchLabs Edition.

April 26, 2020 — shinohai

A discussion in the #asciilifeform irc chan earlier this month revealed that many of the original Adacore mirrors for building GNAT no longer resolve. A fellow named jfw undertook the task of mirroring the necessary items, and wrote about the process on his blog, which is well worth a read. To further help preserve these items, asciilifeform was kind enough to upload them to his website (along with a handy archive of Gentoo distfiles - but that is fodder for another post).

The above bitrot problem means that building ave1's musl GNAT suite as it exists no longer works, so I decided to attempt replacing the broken links in the build scripts with the working set from NoSuchLabs. For interested parties I have mirrored ave1's tarball HERE and a patch with the current bare-minimum link changes to get it working HERE. This item is a WIP, so I haven't yet replaced 100% of the original links, but readers are invited to join #asciilifeform on freenode irc to complain and/or suggest ways to improve it.

After applying the patch, following the build instructions in ave1's README file should produce a static GNAT and GCC-4.9.4 toolchain, perfect for use with FFA and other goodies. I will update this post as changes are made to the build scripts.

Tags: News, Ada, UNIX

Experimental vpatches for trb

April 19, 2020 — shinohai

I have decided that my trb mirror could use an experimental patch section as a place to aggregate vpatches I have found useful over time, but aren't part of the "official" trb tree. I have serious reservations as to how much longer btcbase will exist - If the end of TMSR and the Qntra exit scam is any indication, it might be best to grab these items while the getting is good.

The first item in this section doesn't herald from btcbase however, but from Jacob Welsh's Fixpoint blog. This experimental patch adds a "getrawtransaction" rpc call. The only issue I had in applying this patch was due to differences in naming styles of the manifest file, so the item I include here is reground with a note in the manifest that jfw is the original author along with an update of the block time. It should be noted that the patch does not have a corresponding seal at this time, making it a "use at own discretion" item. The bitcoin_getrawtransaction.vpatch can be found HERE.

That'd be it for now. Future updates to the experimental section will likely include a regrind of asciilifeform's "Shiva" and polarbeard's "sendrawtransaction" vpatches, as those are the items I am most familiar with.

Tags: News, Bitcoin, UNIX

tgbot - a Telegram bot in Bash

March 14, 2020 — shinohai

tgbot is, as the title says, a extensible Telegram bot written in Bash. It is what telegram-bot-bash was originally supposed to be before it became a bloated clusterfuck.

But why Bash? Because it's everywhere. This bot is mainly useful for folks that want to quickly set up a bot to automate tasks or announce rss feeds in a Telegram group. This functionality isn't included in this vpatch, but instead the user is invited to write their own commands and functions. Examples are included in the "commands" script.

To use:

Grab the vpatch and seal from here and press using a keccak-based vtron.

Make the following files executable:

  • commands
  • global
  • sendNotify
  • tgbot

Create a new bot by sending a message to @BotFather. After completing the creation steps, copy your token to the "token" file, and save with user-readable permissions.

Then start the bot in a tmux or screen session by simply running `./tgbot`. The bot writes it's logfile to "logfile.txt" in the directory it is running in.


Run this bot with root permissions, even if "just testing"! Telegram is a cesspool and you will quickly come to grief.

Otherwise, enjoy.

Tags: News, UNIX genesis

March 10, 2020 — shinohai

This is a genesis vpatch for a bash script that takes all the functions of asciilifeform's lamport parachute and combines them into a single script for personal use.


Press using a keccak vtron of choice. Here I am using esthlos-v:

`v press lam-par.genesis.kv.vpatch lam-par/`

Change to the output directory, make the script executable, and run it:

lam-par # ./ --help

    --mkpriv     Generate a private key
    --priv2pub   Generate a public key from a private key
-s, --sign       Sign a message using your public key
-v, --verify     Verify a signed message using a public key

See for more details

Tags: News, Cryptography, UNIX

trb mirror updates and build notes

February 26, 2020 — shinohai

The Bitcoin Foundation chairman mod6 recently published some new vpatches and added them to the foundation's website for testing. I haven't updated my personal mirror here on btcinfo in some time, at least since the Keccak regrind so this post will serve to do precisely that, and provide updated build instructions and notes.

Though mod6's post only mentions 3 vpatches, there are a total of 5 new vpatches that we will be adding to the trb mirror, as the last updated patch here was "asciilifeform_aggressive_pushgetblocks.vpatch". These vpatches are (listed in press order):

  • mod6_privkey_tools.vpatch
  • mod6_manifest.vpatch
  • mod6_phexdigit_fix.vpatch
  • mod6_excise_hash_truncation.vpatch
  • mod6_whogaveblox.vpatch

In order to press and build trb you will need a Keccak vtron, for these tests I used esthlos-v. The Bitcoin Foundation also has an alternative "how to" using another vtron version here. I am using the "OFFLINE" build instructions because I host my own dependency mirror and am using that.

My normal development and testing laptop is down at the time of writing, so I used my "daily driver" Gentoo computer when testing, which is unfortunately cursed with glibc-2.28. Though the initial press went fine, I quickly hit a wall during the buildroot step and got the following error:

freadahead.c: In function 'freadahead':
freadahead.c:91:3: error: #error "Please port gnulib freadahead.c to your platform! Look at the definition of 
fflush, fread, ungetc on your system, then report this to bug-gnulib."
  #error "Please port gnulib freadahead.c to your platform! Look at the definition of 
fflush, fread, ungetc on your system, then report this to bug-gnulib."
make[6]: *** [Makefile:1842: freadahead.o] Error 1
make[6]: *** Waiting for unfinished jobs....
In file included from fseeko.c:17:0:
./config.h:78:0: warning: "_FORTIFY_SOURCE" redefined
    # define _FORTIFY_SOURCE 2
: note: this is the location of the previous definition
fseeko.c: In function 'rpl_fseeko':
fseeko.c:109:4: error: #error "Please port gnulib fseeko.c to your platform! Look at the code in fseeko.c, 
then report this to bug-gnulib."
   #error "Please port gnulib fseeko.c to your platform! Look at the code in fseeko.c, 
then report this to bug-gnulib."

My solution was to simply add a patch to `buildroot-2015.05/package/m4` and restart the build. While I can't recommend doing this under normal circumstances (rather, one should instead use a Linux that isn't cursed) I have uploaded the patch I used here for the sake of documentation and thoroughness.

After applying the above duct-tape, the build proceeded smoothly and spat out the usual static bitcoind. To recap, here are the steps:

  • Download the patches, seals, wot, and dependencies from my mirror.
  • Press using esthlos-v: `v press mod6_whogaveblox trb054`
  • Move the dependencies to the proper location: `mv deps/*.asc trb054/bitcoin/deps`
  • Change directories and build: `cd trb054/bitcoin && make`

With all the uncertainty surrounding the fate of the foundation in certain circles, it feels good to have a page where my particular build is made public and commented. For the most part trb is in a "leave it the fuck alone" state, though at some point I'd like to see some Common Lisp or scheme wallet functions added to the mix.

As always, the journey continues!

Tags: News, Bitcoin, UNIX

Notes on esthlos-v and some restructuring thereof

January 30, 2020 — shinohai

This particular post will serve as a place to put my notes on esthlos-v, which I have been reading over in an attempt to polish it up for personal use. Now there are many fine implementations of "V" out there already, and I admit mod6's "" has served me well over time, but this particular "V" is delightfully readable and the code is well commented.

Way back in ancient Greece, the word "esthlos" meant that "something exists" or at least is true. Even though the author of esthlos-v vanished into internet space some time ago, and apparently abandoned work on the project, we'll retain the original name since it seems rather fitting for a tool used to magic software into existence.

I will expound upon the contents of esthlos-v in a later piece, though for now I am adding a single new vpatch: "esthlos-v_makefile-and-vdiff.vpatch" - this patch contains simple modifications to the original Makefile so it will build both "v.lisp" and "cl-keccak" as standalone binaries at the same time, and install them if the operator so desires. A modified version of phf's original that uses cl-keccak instead of sha512sum is included. This vpatch and it's corresponding seal can be found in the esthlos-v mirror here.

Tags: News, Lisp, UNIX

A patch for db4.8 on gcc8+

August 10, 2019 — shinohai

The march of "progress" sometimes brings about a lot of headaches, especially when I am forced to work on heathen systems such as Debian and Ubuntu. This became readily apparent while installing bitcoind (core) to a server equipped with gcc-9.1.0 this past week. While building the dependencies, db-4.8.30.NC promptly shat out this error:

definition of 'int __atomic_compare_exchange(db_atomic_t*, atomic_value_t, atomic_value_t)' ambiguates built-in declaration 'bool __atomic_compare_exchange(long unsigned int, volatile void*, void*, void*, int, int)' static inline int __atomic_compare_exchange

A relatively simple patch allowed me continue building error-free. I have included in the /library/ here for future reference. Place it in the root of the db-4.8.30.NC folder and apply manually as you would any other patch.

While impossible to completely rid the world of such fuckery, I consider this just another tool in the box to make things slightly less painful

Tags: Bitcoin, UNIX, Webshit

Docker gentoo env recipe

May 10, 2019 — shinohai

This page is just a note on reliable ways to get a working gentoo environment using Dockerfiles. Useful mainly for making decent working shell that you don't care about for testing things. :)

The recipe can also easily be modified to use own stage3 and not be reliant on dockerhub, though abuse of the autobuild scripts sometimes spawns a shellbot over irc.

docker pull btcinfo/stage3-gentoo-amd64 docker run -it btcinfo/stage3-gentoo-amd64

This gives you a root shell

37b0f185b13d ~ #

Populate the portage tree with the latest official portage snapshot, or use your own archived snapshot.

cd usr/ wget -c tar xvf portage-latest.tar.xz

You can now emerge the packages you need and build from sources. Do what thou will.

Tags: News, UNIX

Official Alpine Linux Docker image found to allow NULL password for root users

May 08, 2019 — shinohai

Docker woes continue as security researchers discover that all "Official images" of Alpine linux (since v3.3) allow NULL passwords for the root user. This event, along with Docker Hub being hacked serve as a wonderful reminder of only running code from trusted sources and personal libraries.

Tags: News, Insecurity, Lulz, UNIX

Converting magnet links to .torrent files in bash

May 02, 2019 — shinohai

I like simple things that do their job well, and I adore bash. A tool was sorely needed in my arsenal that could convert magnet links from torrent sites to a useable .torrent file. The site is often down, and few options exist on the web to do convert files locally that aren't pythonshit. My search led me to a Shithub repository owned by Isis Buttcruft, and while the tool appears to work as advertised it has been neglected and is heavily commented and contains a few unnecessary parts. Let's trim it up a bit and make it a function.

magnet() { [[ "$1" =~ xt=urn:btih:([^&/]+) ]] || exit hashh=${BASH_REMATCH[1]} if [[ "$1" =~ dn=([^&/]+) ]];then filename=${BASH_REMATCH[1]} else filename=$hashh fi fn="meta-"$filename".torrent" touch $fn echo "d10:magnet-uri${#1}:${1}e" | cat > $fn }

Adding this to my .bash_aliases file now allows me to simply do `magnet "<URL>"` and get a torrent file instantly that can be loaded up into rtorrent or streamed using peerflix.

Tags: Entertainment, UNIX, Bash

Building Unobtanium on Docker

April 17, 2019 — shinohai

This docker recipe has so far proved a stable way to get repeatable results when building Unobtanium binaries for 64-bit Linux and Windows. I am mainly making this post to reference the steps I took, as the method is applicable to most coins.

Download my unobtanium-devenv and untar it.

curl | tar zxvf -

Enter devenv and build the docker image

cd unobtanium-devenv/

docker-compose -f docker-compose.yml -f unobtanium/ build

Go have a coffee and smoke while the container builds.

When that build finishes, start the container.

docker-compose -f docker-compose.yml -f unobtanium/ up -d

Find your container id and connect (as root)

docker container ls --all

docker exec -u root -t -i <container-id> /bin/bash

From the docker shell, go clone my Unobtanium repo.

git clone && cd Unobtanium/depends/

Let's do a Windows build, just for fun.

make HOST=x86_64-w64-mingw32

The process of compiling the dependncies takes about 2 hours. I usually also invoke `import colombian websluts` at this point. When I return to the terminal we are ready to build the UNO qt and cli .exe's

cd ..


./configure --prefix="$PWD/depends/x86_64-w64-mingw32/"


Kill another hour drinking coffee, smoking, and looking at cats on internet.

mkdir -p bin

cp src/*.exe bin/

cp src/qt/unobtanium-qt.exe bin/

Enjoy your shiny new Windows wallet. Repeat the depends step and rebuild to produce binary for any arch you have a config for.

The x86_64 Linux version lets you do nice things, like run custom .qss so I darkened the wallet. I will post this config to the blog shortly.

Have fun, and feel free to complain about this build method on irc or telegram.

Tags: News, Bitcoin, Cryptocurrency, UNIX

Weechat logs to html

March 06, 2019 — shinohai

weechat-log-to-html is a Haskell script that converts weechat logs to no-nonsense html. This addition to the /library/ is part of this years goal to excise as much pythonshit as possible from everything I use on a regular basis. Individuals that have Bitlbee hooked up to their weechat will be pleased to know that this script also beautifully parses things such as telegram or discord logs, for which no suitable logger (at least not one written in the aforementioned pythonshit or nodejs) can be found.

To use:

Compile the script using `ghc` - I used version 8.0.2 with good results. Then simply run something like the following:

./weechat-log-to-html < (weechatlog) > output.html

Example output:

Once verified that it works for you, you can simply add the script to a cronjob to monitor the irc channels and other chats you wish to log.

Tags: News, IRC, UNIX

TRB Keccak regrind - test results and notes

January 20, 2019 — shinohai

I had originally intended this to be a better version of the build instructions I mirrored from the foundation website, but decided to wait for the regrind before making a post, since the foundation planned on updating everything anyway. A few days later mod6 published a blog post detailing the steps he took to update the trb vtree from SHA512 to Keccak vpatches, so that is what will be covered in this post. What I did was, I went through all the similar steps just as in mod6's post, and I created my own keccak trb vtree, just as mod6 did. I then was able to confirm that my keccak trb vtree and his keccak trb tree are a mechanical match. I also did a diff of my keccak trb vtree against the original SHA512 vpatches, and we can see that only difference is the removal of the UTF8 character from genesis.vpatch.

You will need all of the dependencies listed on the bitcoin foundation website in the "how-to" section. A modified version of mod6's `` (that produces Keccak hashes) and a few other tools are also needed: these can be obtained from diana_coman's website. I no longer use nor support any other flavor of Linux besides Gentoo for any projects discussed on this site , so users of other distros will be required to do their own research to make all this work. I am using a Cuntoo chroot here, and for the sake of thoroughness, here is a list of the exact versions of the dependencies I used:

* sys-devel/bc 1.06.95-r2 * sys-devel/gcc 4.9.4 * app-crypt/gnupg 1.4.10 * net-misc/wget 1.19.5 * net-misc/curl 7.61.1 * dev-lang/perl 5.24.3-r1 * sys-devel/patch 2.7.6-r2 * net-misc/rsync 3.1.3 * sys-apps/coreutils 8.29-r1 * app-arch/unzip 6.0_p21-r2 * app-arch/bzip2 1.0.6-r10 * app-arch/cpio 2.12-r1

A working Ada setup is required to build and the tools from diana-coman's starter pack. mod6 also wrote a handy and very detailed guide to doing this here. Since I am using a clean chroot to perform all these steps, I needed to install a new copy of Adacore, so I proceeded to grab a copy of the gnat-gpl-2016-x86_64 version from the AdaCore website here, though for some reason the page 404'd at the time I was doing these tests. Fortunately diana_coman also has this preserved on her website here for those that might need it in the future.

Once that was installed, I checked to ensure it was, in fact, the proper version:

Perfect! Building the starter pack is very painless and took less than a minute for me.

Now I moved on to the actual regrind by setting up the suggested sandbox and moving down the list of steps in mod6's blog post. This also went quite painlessly, my only snafu being I forgot to add back a hyphen "-" for the utf-8 char removed from line 118 of util.h, which caused a byte mismatch later in the process. Once that was done, I had no other problems with the process and was ready to test using mod6's experimental patchset and seals which he handily provides here, along with the signature for same. This part requires one follow the `OFFLINE` build steps from the foundation website, so it will be necessary to download the dependencies from deedbot if you don't have a copy stored somewhere already. I put all the links inside a bash script, intentionally leaving off the -sSL flags so I could observe their download progress.

cd deps/ cat ><<EOF curl > rotor.tar.gz.asc curl > rotor-db-configure-fix.patch.asc curl > boost_1_52_0.tar.bz2.asc curl > buildroot-2015.05.tar.gz.asc curl > db-4.8.30.tar.gz.asc curl > openssl-1.0.1g.tar.gz.asc curl > binutils-2.24.tar.bz2.asc curl > busybox-1.23.2.tar.bz2.asc curl > expat-2.1.0.tar.gz.asc curl > fakeroot_1.18.4.orig.tar.bz2.asc curl > gcc-4.9.2.tar.bz2.asc curl > gdb-7.8.2.tar.xz.asc curl > gmp-6.0.0a.tar.xz.asc curl > linux-3.18.14.tar.xz.asc curl > m4-1.4.17.tar.xz.asc curl> mpc-1.0.3.tar.gz.asc curl> mpfr-3.1.2.tar.xz.asc curl> musl-1.1.8.tar.gz.asc curl> ncurses-5.9.tar.gz.asc curl> pkgconf-0.8.9.tar.bz2.asc EOF chmod +x ./

After enjoying un cafecito, the dependencies were finished downloading, so I deleted the script and changed back to the bitcoin directory. A simple `make` completes the process. I encountered no hiccups, and roughly a half hour or so later had a nice shiny bitcoind produced using and the keccak patchset only.

In the interests of science, and to ensure repeatable results I went a step further and redid all the regrind steps in a fresh sandbox, and signed a copy of all the patches with my gpg key. Before performing a press I put mod6's copy of the patches in a directory `a` and mine in a directory `b` and ran `diff -uNr a b` against them to ensure they matched, which they did. This build also went fine with no errors, and output a 4.7M to bin/. Now let's test it:

Success! Node is happily pulling blocks.

In conclusion, this work represents an outstanding effort on the part of mod6 to ensure trb remains unmolested in the future. I have uploaded my copies of the resulting patches and the corresponding seals here for those that wish to compare them with their own during testing.

Tags: News, Bitcoin, UNIX

Building the Eulora client with Gentoo

January 11, 2019 — shinohai

Having gotten trinque's excellent Cuntoo bootstrap working on a few different machines, I decided I'd try building a Eulora client with it. This post is to document the steps I followed to get to a working state, as the instructions on the minigame website are outdated and contain dead links.

In this guide, I am using gcc 4.9.4 - I'm pretty sure this is a hard requirement. Crystalspace for whatever reason requires you have the nvidia-cg-toolkit installed even if you use an ATI card, so go ahead and get that via portage:

emerge -av nvidia-cg-toolkit

I have a ~/devel directory already from building trb, so I'll start there and make a eulora directory beside it:

mkdir -p eulora/ && cd $_

Grab cal3d, crystalspace, and the Eulora client files from the minigame site:

curl > eulora-v0.1.2b.tar.gz

Untar that shit.

tar -zxvf cal3d.tar.gz
tar -zxvf cs_July24.tar.gz
tar -zxvf eulora-v0.1.2b.tar.gz

Navigate to cal3d/ and run the following commands to build:

autoreconf --install --force
./configure --prefix=$HOME/devel/eulora/cal3d
make install

Tell other programs where to find the cal3d things we just built:

export LD_LIBRARY_PATH=$HOME/devel/eulora/cal3d/src/cal3d/.libs/:$LD_LIBRARY_PATH

Go back to ~/devel/eulora/ and enter the cs-forupload folder:

cd ../cs-forupload/

To build crystalspace I had to adjust the configure step to avoid anything bullet related, or the jam build step will barf. Use the following commands:

./configure \
--without-java \
--without-perl \
--without-python \
--without-3ds \
--without-bullet \

jam -aq libs plugins cs-config walktest

Export the crystalspace environment variable:

export CRYSTAL=$HOME/devel/eulora/cs-forupload

Finally, go back to ~/devel/eulora/ and enter the EuloraV0.1.2 folder ...

cd ../EuloraV0.1.2/

...and build the client:

./configure \
--with-cal3d=$HOME/devel/eulora/cal3d \
--with-cs-prefix=$CRYSTAL \
--without-mysqlclient \
--without-sqlite3 \
--without-pq \

jam -aq client

Eulora servers got a new home in 2018, so we must edit the server ip in data/servers.xml:

sed -i 's/' data/servers.xml

Now, to avoid having to manually enter the environment variables each time we want to play, we will create a shell script containing those and make it executable:

cat ><<EOF
export LD_LIBRARY_PATH="$HOME/devel/eulora/cal3d/src/cal3d/ \
export CRYSTAL=$HOME/devel/eulora/cs-forupload

chmod +


It was night in Eulora when I finished, so I only took a single screenshot of client startup. More to come as I test further.

May your journey be prosperous ....

Tags: News, Games, UNIX

Handheld game roms

December 25, 2018 — shinohai

While searching for the Basic games collection the other day, I stumbled upon a forgotten archive containing roms for a bunch of old handheld electronic games from the 70's and 80's. If you had any of the games on the list below, your childhood was likely pretty awesum. I have used MESS to run these, but feel free to try on other platforms (as I did not include any MESS-specific xml files with this archive).

List of games contained in archive:

ROM NAME:         GAME:
advision          "Adventure Vision"
alnattck          "Alien Attack"
alnchase          "Alien Chase"
amaztron          "Amaze-A-Tron"
astro             "Astro"
astrocmd          "Astro Command"
bambball          "Dribble Away Basketball"
bankshot          "Bank Shot - Electronic Pool"
bcclimbr          "Crazy Climber (Bandai)"
bdoramon          "Dokodemo Dorayaki Doraemon"
bfriskyt          "Frisky Tom (Bandai)"
bmboxing          "Knock-Em Out Boxing"
bmsafari          "Safari (Bambino)"
bmsoccer          "Kick The Goal Soccer"
cdkong            "Donkey Kong (Coleco)"
cgalaxn           "Galaxian (Coleco)"
cmspacmn          "Ms. Pac-Man (Coleco)"
comp4             "Comp IV"
cpacman           "Pac-Man (Coleco, Rev. 29)"
cpacmanr1         "Pac-Man (Coleco, Rev. 28)"
ebball            "Electronic Baseball (Entex)"
ebball2           "Electronic Baseball 2 (Entex)"
ebball3           "Electronic Baseball 3 (Entex)"
edracula          "Dracula (Epoch)"
efball            "Electronic Football (Epoch)"
egalaxn2          "Galaxian 2 (Entex)"
einvader          "Space Invader (Entex, TMS1100)"
epacman2          "Pac Man 2 (Entex)"
galaxy2           "Galaxy II"
gckong            "Crazy Kong (Gakken)"
gdigdug           "Dig Dug (Gakken)"
ghalien           "Heiankyo Alien (Gakken)"
gjackpot          "Jackpot: Gin Rummy & Black Jack"
gpoker            "Poker (Gakken, 1979 version)"
h2hbaseb          "Head to Head Baseball"
h2hfootb          "Head to Head Football"
invspace          "Invader From Space"
kingman           "Kingman"
machiman          "Machine Man"
maniac            "Maniac"
mathmagi          "Mathemagician"
merlin            "Merlin - The Electronic Wizard"
microvsn          "MicroVision"
mmerlin           "Master Merlin"
msthawk           "Star Hawk (Mattel)"
mvbfree           "Mini-Vid Break Free"
mwcbaseb          "World Championship Baseball"
packmon           "Packri Monster"
pbqbert           "Q*Bert (Parker Brothers)"
raisedvl          "Raise The Devil"
simon             "Simon (Rev. A)"
splasfgt          "Space Laser Fight"
splitsec          "Split Second"
ssfball           "Superstar Football"
ssimon            "Super Simon"
starwbc           "Star Wars - Electronic Battle Command"
starwbcp          "Star Wars - Electronic Battle Command (prototype)"
tandy12           "Tandy-12: Computerized Arcade"
tc4               "Total Control 4"
tcaveman          "Caveman (Tomy)"
tccombat          "Cosmic Combat"
tmpacman          "Pac Man (Tomy)"
tmscramb          "Scramble (Tomy)"
tmtennis          "Tennis (Tomy)"
tmtron            "Tron (Tomy)"
ufombs            "UFO Master-Blaster Station"
vinvader          "Invaders (VTech)"
wildfire          "Wildfire (prototype)"
zackman           "Zackman"

The archive can be downloaded from the \warez\ section of the library here.

Merry Christmas everyone!

Tags: News, Games, UNIX

Basic Computer Games

December 23, 2018 — shinohai

Old computer nostalgia often hits some of us hard on Telegram, and hours will be spent in conversation or reliving the glory days of TRS-80 and Commodore64 machines. In one such conversation, I mentioned I had a tarball somewhere of all the programs in the old 1978 book "Basic Computer Games" published by Creative Computing. After a brief search, the package was located and I decided to uploaded it to the /warez/ section of the library for others to enjoy - whether you are painfully typing these in line by line in original hardware or loading them with an emulator, I hope the collection brings back lots of pleasant memories for those of us that still enjoy tinkering with these things. Most of these I can verify still indeed work well on original hardware: I loaded many of these into my old TRS80 using a HxC2001 SD floppy emulator (because I'm lazy and didn't want to hand type them all) and ran with 0 syntax errors.

Table of games included in the archive:

Game Name:         Filename:            Description:

Acey Ducey 	   aceyducey.bas        Play acey-ducey with the computer
Amazing 	   amazing.bas 	        Computer constructs a maze
Animal 	           animal.bas 	        Computer guesses animals and learns new ones from you
Awari 	           awari.bas 	        Ancient game of rotating beans in pits
Bagels 		   bagels.bas 	        Guess a mystery 3-digit number by logic
Banner 		   banner.bas 	        Prints any message on a large banner
Basketball 	   basketball.bas       Basketball game
Batnum 		   batnum.bas 	        Match wits in a battle of numbers vs. the computer
Battle 		   battle.bas 	        Decode a matrix to locate enemy battleship
Blackjack 	   blackjack.bas        Blackjack (very comprehensive), Las Vegas rules
Bombardment 	   bombardment.bas      Destroy the computer's platoons with missles before it finds yours
Bombs Away 	   bombsaway.bas        Fly World War II bombing missions
Bounce 		   bounce.bas 	        Plot a bouncing ball
Bowling 	   bowling.bas 	        Bowling at the neighborhood lanes
Boxing 		   boxing.bas 	        3-round Olympic boxing match
Bug 		   bug.bas 	        Roll dice vs. the computer to draw a bug
Bullfight 	   bullfight.bas        You're the matador in a championship bullfight
Bullseye 	   bullseye.bas         Throw darts
Bunny 		   bunny.bas 	        Computer drawing of the Playboy bunny
Buzzword 	   buzzword.bas         Compose your speeches with the latest buzzwords
Calendar 	   calendar.bas         Calendar for any year
Change 		   change.bas 	        Computer imitates a cashier
Checkers 	   checkers.bas         Game of checkers
Chemist 	   chemist.bas 	        Dilute kryptocyanic acid to make it harmless
Chief 		   chief.bas 	        Silly arithmetic drill
Chomp 		   chomp.bas 	        Eat a cookie avoiding the poison piece (2 or more players)
Civil War 	   civilwar.bas         Fight the Civil War
Combat 		   combat.bas 	        Fight a small-scale war with the computer
Craps 		   craps.bas 	        Play craps (dice), Las Vegas style
Cube 		   cube.bas 	        Negotiate a 3-D cube avoiding hidden landmines
Depth Charge 	   depthcharge.bas      Launch depth charges to destroy a submarine
Diamond 	   diamond.bas 	        Prints 1-page diamond patterns
Dice 		   dice.bas 	        Summarizes dice rolls
Digits 		   digits.bas 	        Computer tries to guess digits you select at random
Even Wins 	   evenwins.bas         Take objects from a pile?try to end with an even number
Game of Even Wins  gameofevenwins.bas   Same as Even Wins?computer improves its play
Flip Flop 	   flipflop.bas         Solitaire logic game?change a row of Xs to Os
Ftball 		   ftball.bas 	        American football?you vs. the computer
Football 	   football.bas         American football for two players
Fur Trader 	   furtrader.bas        Trade furs with the white man
Golf 		   golf.bas 	        Golf game?choose your clubs and swing
Gomoko 		   gomoko.bas 	        Ancient board game of logic and strategy
Guess 		   guess.bas 	        Guess a mystery number?computer gives you clues
Gunner 		   gunner.bas 	        Fire a cannon at a stationary target
Hammurabi 	   hammurabi.bas        Govern the ancient city-state of Sumeria
Hangman 	   hangman.bas 	        Hangman word guessing game
Hello 		   hello.bas 	        Computer becomes your friendly psychiatrist
Hexapawn 	   hexapawn.bas         Hexapawn game
Hi-Lo 		   hi-lo.bas 	        Try to hit the mystery jackpot
High I-Q 	   highiq.bas 	        Try to remove all the pegs from a board
Hockey 		   hockey.bas 	        Ice hockey, two players
Horserace 	   horserace.bas        Off-track betting on a horse race
Hurkle 		   hurkle.bas 	        Find the Hurkle hiding on a 10x10 grid
Kinema 		   kinema.bas 	        Drill in simple kinematics
King 		   king.bas 	        Govern a modern island kingdom wisely
Letter 		   letter.bas 	        Guess a mystery letter?computer gives you clues
Life 		   life.bas 	        John Conway's Game of Life
Life For Two 	   lifefortwo.bas       Competitive game of Life (two or more players)
Lite Quiz 	   litquiz.bas 	        Children's literature quiz
Love 		   love.bas 	        Robert Indiana's artwork, your message
Lunar 		   lunar.bas 	        Land an Apollo capsule on the moon
LEM 		   lem.bas 	        Very comprehensive lunar landing
Rocket 		   rocket.bas 	        Lunar landing from 500 feet (with plot)
Master Mind 	   mastermind.bas       Guess the colors of pegs?then the computer guesses yours
Math Dice 	   mathdice.bas         Children's arithmetic drill using pictures of dice
Mugwump 	   mugwump.bas 	        Locate 4 mugwumps hiding on a 10x10 grid
Name 		   name.bas 	        An ice-breaker with the computer
Nicomachus 	   nicomachus.bas       Computer guesses number you think of
Nim 		   nim.bas 	        Chinese game of Nim
Number 		   number.bas 	        Silly number matching game
One Check 	   onecheck.bas         Challenging game to remove checkers from a board
Orbit 		   orbit.bas 	        Destroy an orbiting germ-laden enemy spaceship
Pizza 		   pizza.bas 	        Deliver pizzas successfully
Poetry 		   poetry.bas 	        Computer composes random poetry
Poker 		   poker.bas 	        Poker game
Queen 		   queen.bas 	        Move a single chess queen vs. the computer
Reverse 	   reverse.bas 	        Order a series of numbers by reversing
R,P,S	      	   rockscissors.bas     Game of rock, scissors, paper
Roulette 	   roulette.bas         European roulette table
Russian Roulette   russianroulette.bas  Russian roulette
Salvo 		   salvo.bas 	        Destroy an enemy fleet of ships
Sine Wave 	   sinewave.bas         Draw a sine wave on screen
Slalom 	    	   slalom.bas 	        Simulates a slalom run
Slots 		   slots.bas 	        Slot machine (one-armed bandit)
Splat 		   splat.bas 	        Open a parachute at the last possible moment
Stars 		   stars.bas 	        Guess a mystery number?stars give you clues
Stock Market 	   stockmarket.bas      Stock market simulation
Super Star Trek    superstartrek.bas    Comprehensive game of Star Trek
STK: Instructions  superstartrekins.bas Instructions for Super Star Trek
Synonym 	   synonym.bas 	        Word synonym drill
Target 		   target.bas 	        Destroy a target in 3-D space?very tricky
3-D Plot 	   3dplot.bas 	        Plot families of curves?looks 3-dimensional
3-D Tic-Tac-Toe    qubit.bas 	        Game of tic-tac-toe in a 4x4x4 cube
Tic-Tac-Toe 1 	   tictactoe1.bas 	Simple version
Tic-Tac-Toe 2 	   tictactoe2.bas 	This version prints out the board
Tower 		   tower.bas 	        Towers of Hanoi puzzle
Train 	  	   train.bas 	        Time-speed-distance quiz
Trap 		   trap.bas 	        Trap a mystery number?computer gives you clues
23 Matches 	   23matches.bas 	Game of 23 matches?try not to take the last one
War 		   war.bas 	        Card game of war
Weekday 	   weekday.bas 	        Facts about your birthday
Word 		   word.bas 	        Word guessing game

The entire archive is available for download here: Basic Computer Games (bcg.tar.gz)

Tags: UNIX, Vintage_Computing, Games


December 06, 2018 — shinohai

bcinfobot is a common lisp bot that bridges irc and telegram, and performs a variety of mostly useless crypto stats. It currently resides in the #btcinfo channels on freenode irc and telegram.

IRC command prefix is `$` - You must have a registered gpg key to use this bot.

This post will be updated as soon as comprehensive list of all commands can be added. Discussion is currently more vibrant on telegram, and discord support has been requested.

Tags: News, Info, UNIX

Cuntoo, a Linux that sucks less

December 02, 2018 — shinohai

This weekend I had a bit of extra time on my hands, so I decided to dust off an old AMD E-300 APU laptop I had sitting about and try building trinque's Cuntoo on it. The entire operation was pretty straightforward, and the bootstrapping script makes all this a painless operation as far as Gentoo goes.

First step is to download the bootstrap in a tar archive and the corresponding signature from here: . It appears the site is hosted on pizarro now, and downloading the archive took a little over 2 hours. Since I am quite aware that Pizarro resources can be overwhelmed with a single box making requests, I just left this to download overnight and checked on it in the morning. trinque has his head screwed on pretty straight, so the archive and sig were waiting in my Downloads folder after morning coffee.

After examining the bootstrap script, I put a copy of my amd64 configuration file into the config/ folder, since I don't have an apu2 board. One then needs to locate the block device they will be installing to, in my case `lsblk` revealed this to be located at /dev/sdc, so I ran: `./ -k config/config.amd64 -d /dev/sdc` .... and the magic began! The author recommended enjoying tea whilst the bootstrap process completed. The entire process took roughly six hours to complete, which will give one time to enjoy their favourite beverage and a fuck or two. When I came back to my desk I was greeted with the message "Create a user account, which shall be granted sudo access." After that, the script will ask you to paste a ssh public key in, to allow password free logins upon reboot. Painless, I say!

Those steps being complete, I got one final message: "You should now have a fully bootable Cuntoo system on "/dev/sdc". Enjoy!" The moment of truth. I then restarted the machine which booted very quickly into a new, no-nonsense Gentoo Linux environment.

Since the first run was successful, I decided to see how this recipe would work if I stuffed it onto a spare 32G flash drive I had lying about. This also worked fine, and now I have a portable version I can access via chroot on my workstation, since I have a less austere Gentoo recipe I use for day-to-day things.

I now intend to try running the ebuilds I have made for the projects I use most against this, and will report my findings here. Happy compiling!

Tags: News, UNIX, Software

Bitcoin Knots restored as the default upstream ebuild

July 22, 2018 — shinohai

Bitcoin Knots is once again the default ebuild of Bitcoin for Gentoo users. In order to revert to the "Core" flavor of Bitcoin, users will need to set the USE=-knots flag going forward.

According to developer luke-jr in a recent announcement:

Bitcoin Knots provides the best end user experience out of the box (for example, only 5 GB disk space is required instead of over 100 GB). It is completely compatible with the Bitcoin network and other Bitcoin implementations, including the popular Bitcoin Core implementation.

Bitcoin knots is currently undergoing testing on the btcinfo server, and will serve as a replacement for "therealbitcoin" in irc/telegram bot functions that require bitcoind. Source code and relevant patches will be added to the /bitcoin/ section of this website in the near future.

UPDATE 7/24/2018: luke-jr informed me that the these changes have not been merged yet. I apologize for the misquote.

Reading the #trilema logs this morning, it seems this post created fair amount of confusion:

asciilifeform: in other lulz, << shinohai endorses prb...

Please note the words undergoing testing, which should not imply any sort of endorsement or glowing review. To clarify, Knots simply offers some interesting features I want to poke with a stick more to satiate my curiosity - this segshit stuff is in wide use on alt irc platforms (Telegram, Discord, et all) and I simply want to see if any brokenness can be readily exposed. Sometimes that requires milling about in enemy territory and becoming familiar with enemy tools. Remember your Sun Tzu:

"If you know the enemy and know yourself, you need not fear the result of a hundred battles. If you know yourself but not the enemy, for every victory gained you will also suffer a defeat. If you know neither the enemy nor yourself, you will succumb in every battle."

asciilifeform is welcome to go ahead and negrate - this has nothing to do with spite, etc. as you already know all about. Ratings in a place where one's presence is not wanted mean little to me at this point. Experiments fail sometimes, but work should always continue nonetheless.

After all, I can't simply idle about on the beach every day. There's a goddamned war going on.

Tags: News, Bitcoin, UNIX

AUR latest victim of repository rape

July 10, 2018 — shinohai

More poisoned repositories are found, this time on the Arch User Repository. This, combined with the recent lulz on the gentoo shithub further confirm that only the trinque model can prevent repository rape.

Tags: News, UNIX, Webshit, Lulz

Site updates: RSS support, new package mirrors.

July 03, 2018 — shinohai

RSS support has been fixed, is now available at

The following tools and packages have been added to the /packages/ section of the library:



V99993K (mod6) I altered mine to display ascii graphs, nothing worth publishing. Update 07/05: Added the fix suggested by ave1 to turn off robots.txt in wget here

vtools (phf)

Tags: News, Uncategorized, UNIX