The Intellectual Wilderness There is nothing more useless than doing efficiently that which should not be done at all.

2021.06.11 10:42

Building Erlang on Devuan/Debian/Ubuntu

Filed under: Computing,Science & Tech — Tags: , , , , , , , , — zxq9 @ 10:42

Erlang R24 is out! …but there are, as usual with a version X.0 release, a few rough edges (enough of them around the important-but-annoying WX and OpenGL updates that I’ll be writing another post about that shortly…).

In the meantime, R23.3.4.3 is excellent and quite reliable. The steps for building with kerl are nearly identical as for R22, but it is worth re-posting them with the relevant version updates (or if you like the video version, Dr. Kumar made a few demonstrating his home Erlang + ZX build). Also, if you’re in a part of the world where’s docs are occasionally really really sloooooooowwww don’t forget the R23 docs mirror (or my Erlang page with linky links to everything).

sudo apt update
sudo apt upgrade
sudo apt install \
    gcc curl g++ dpkg-dev build-essential automake autoconf \
    libncurses5-dev libssl-dev flex xsltproc libwxgtk3.0-dev \
    wget vim git
mkdir vcs bin
cd vcs
git clone
cd ..
ln -s ~/vcs/kerl/kerl bin/kerl
kerl update releases
kerl build
kerl install ~/.erts/
echo '. "$HOME"/.erts/' >> .bashrc
. ~/.erts/
wget -q && bash get_zx

As usual, the ~/vcs/ directory is just my convention for version-controlled code that my $HOME sync scripts know to ignore, and you might want to install Erlang to some place global on your system like /opt/erts/ or whatever. The steps above work without root privileges with the exception of the apt commands. Remember if you are on Devuan or Debian that you need to perform the sudo commands actually as root unless you configure sudo on your system, then the rest as your normal local user account.

2021.06.4 09:26



  1. 天地万物はプランク限界でピクセル化されています。
  2. エベレットとボーアの解釈はどちらも正しい: 宇宙は遅延評価され、未来は「記憶」するには費用がかかりすぎる.
  3. 相対論的効果は、イベントの評価に必要な伝播遅延と削減バジェットのために発生する創発現象です。
  4. 確率は文脈から外れて滑らかに見えますが、ピクセル化とイベント順序の依存関係により、無限に小さな確率のイベントが実際に発生することが制限されます。
  5. 実数は偽物であり、有理数は実数です。 すべての数値には有限の解像度があります。
  6. 上記の点のために、残念ながらかなり多くの数学が間違っています (たとえば、真のタンジェントは、単一の値ではなく、そのスコープによって制限される範囲です)。 しかし、偽の数学は、その大部分が真っ赤な嘘であると認めれば、工学を完成させるのに十分に妥当な近似値です。
  7. 人は、自分の幻覚に夢中になりすぎて、上記のことを注意深く考えることができません。

2021.06.2 14:39

Random: The Erlang runtime (aka BEAM) when fed bad data

Filed under: Computing — Tags: , , , , — zxq9 @ 14:39

Random: How the Web was Designed

Filed under: Computing — Tags: , , , , , — zxq9 @ 14:37

2021.05.11 15:36

A personal appeal

Filed under: Uncategorized — zxq9 @ 15:36

Hello, World!

UPDATE: Things are looking better, but I’m not out of the woods yet. I have been surprised, amazed and humbled by the generosity and concern of the Erlang community. Wow.

Things are still up in the air, so if you happen to need someone to tackle one of the things I’m good at, please let me know. My core competencies:

  • Programming (Erlang, Python, Elixir, Go, C, asm, Lisp, SQL, etc. pretty much anything but K)
  • Project management
  • Distributed systems architecture (or evaluation and restructuring roadmap)
  • Robust systems architecture (or evaluation and restructuring)
  • Teaching (programming, design, English, Japanese, intelligence cycle, decision making process, etc.)
  • Geopolitical analysis and assessment
  • Intelligence analysis

I’ve tried to publish information and working projects for the open source community, however minor my contributions, and at the very least if you happen to be a user of one of my projects and decide to donate on that bases please at least tell me something I can improve for you so that I don’t feel like a total leech.

Donation methods — but if you donate please send me an email and let me know why and what you want it to go towards in terms of existing projects or projects you hope for:

ETH: 0xdaAa0a6789C7ab85c20d3af50475d0f2aCb72D9
BTC: 3F3es8UgDrcxWRKrSBeotcexDHqe7PhpPf

If you read this far, thank you for your patience.

2021.05.4 17:56

Tsuriai: Now engaging in smart contract work

I never thought I’d see the day, but Tsuriai (the tiny Japanese software company I work for) is now in the Ethereum smart contract market as a developer — which means I am now in that same market.

Need a smart contract or blockchain/IPFS-based project developers/consultants/educators*?
Just shoot the office an email at and they’ll hook you up.
They can even accept payment in ETH now, which makes it a lot easier to contract from overseas.

What a world!

[*Or, as always, Erlang developers or consultants, distributed systems analysis, and pretty much any other BEAM-related services, education or assistance!]

It is pretty well known that I don’t think smart contracts are going to save the world from itself because the problems in the US, Europe and China have everything to do with violations of social trust by government and lack of faith in people among the people themselves (as well as lack of faith in culture and tradition), but… smart contracts actually are kind of fun to write and our workflow is pretty darn fast.

There are clear use cases that fit the Ethereum-style computing paradigm and even some that clearly benefit from deployment on something like IPFS rather than a traditional server back end, and we can talk the client through the pros and cons. I suppose the most common thing to want to implement is NFTs at the moment, and some forms of NFTs (especially distributed name registry systems <hint!> <hint!>) are clearly extremely valuable solutions to otherwise difficult to administer problems.

2021.04.30 09:10

Valgrind “Hello, World!”: Python 3.6 VS Python 2.7 VS Erlang R23

I’ll just leave this here…

Python 3.6

ceverett@icecream:~/Code/python$ cat
#! /usr/bin/python3

print("Hello, world!")
ceverett@icecream:~/Code/python$ ./
Hello, world!
ceverett@icecream:~/Code/python$ valgrind ./
==19264== HEAP SUMMARY:
==19264==     in use at exit: 320,946 bytes in 166 blocks
==19264==   total heap usage: 1,698 allocs, 1,532 frees, 2,505,946 bytes allocated
==19264== LEAK SUMMARY:
==19264==    definitely lost: 0 bytes in 0 blocks
==19264==    indirectly lost: 0 bytes in 0 blocks
==19264==      possibly lost: 5,608 bytes in 10 blocks
==19264==    still reachable: 315,338 bytes in 156 blocks
==19264==         suppressed: 0 bytes in 0 blocks
==19264== ERROR SUMMARY: 8163 errors from 116 contexts (suppressed: 0 from 0)

Python 2.7

ceverett@icecream:~/Code/python$ cat 
#! /usr/bin/python

print "Hello, world!"
ceverett@icecream:~/Code/python$ ./
Hello, world!
ceverett@icecream:~/Code/python$ valgrind ./
==19416== HEAP SUMMARY:
==19416==     in use at exit: 417,246 bytes in 199 blocks
==19416==   total heap usage: 2,958 allocs, 2,759 frees, 3,085,205 bytes allocated
==19416== LEAK SUMMARY:
==19416==    definitely lost: 0 bytes in 0 blocks
==19416==    indirectly lost: 0 bytes in 0 blocks
==19416==      possibly lost: 528 bytes in 1 blocks
==19416==    still reachable: 416,718 bytes in 198 blocks
==19416==         suppressed: 0 bytes in 0 blocks
==19416== ERROR SUMMARY: 489 errors from 30 contexts (suppressed: 0 from 0)

Erlang R23

(On this one I can include the entire output.)

ceverett@icecream:~/Code/erlang$ cat hello_world 
#! /usr/bin/env escript

% Example of an escript

main(_) ->
    ok = io:setopts([{encoding, unicode}]),
    io:format("Hello, world!~n").
ceverett@icecream:~/Code/erlang$ ./hello_world 
Hello, world!
ceverett@icecream:~/Code/erlang$ valgrind ./hello_world
==25872== Memcheck, a memory error detector
==25872== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==25872== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==25872== Command: ./hello_world
Hello, world!

Hey, Python! What the actual fsck is going on here?!? Jeebus… The Good Idea Fairy came along and convinced the webtarded among you to start throwing kitchen sink features in (“walrus operator” — yeah, great idea, that, and totally worth losing the sober guidance of Guido over…) along with 8163 memory errors. Sweet! Oh how far the great have fallen…

Honorable mention: Ruby 2.5

I didn’t expect much better from Ruby as the Good Idea Fairy has been forwarding all xer mail there for years, but wow… just wow

ceverett@icecream:~/Code/ruby$ cat hello_world.rb 
#! /usr/bin/ruby

print "Hello, World!\n"
ceverett@icecream:~/Code/ruby$ ./hello_world.rb 
Hello, World!
ceverett@icecream:~/Code/ruby$ valgrind ./hello_world.rb
==27051== HEAP SUMMARY:
==27051==     in use at exit: 2,921,234 bytes in 20,690 blocks
==27051==   total heap usage: 65,312 allocs, 44,622 frees, 16,447,358 bytes allocated
==27051== LEAK SUMMARY:
==27051==    definitely lost: 385,479 bytes in 4,421 blocks
==27051==    indirectly lost: 640,953 bytes in 5,808 blocks
==27051==      possibly lost: 1,626,429 bytes in 9,663 blocks
==27051==    still reachable: 268,373 bytes in 798 blocks
==27051==         suppressed: 0 bytes in 0 blocks
==27051== ERROR SUMMARY: 162050 errors from 402 contexts (suppressed: 0 from 0)

162,050 memory errors. For Hello, World. How can there even be 162,050 instructions in the resulting set of commands to the system?

2021.04.6 16:37

Random: T’Challa’s Song

Filed under: Overlooked Resources,Society — Tags: , , , — zxq9 @ 16:37

Once upon a time, a student asked his music teacher the most difficult philosophical question in all of music and received wisdom.

T’Challa: “Teacher, there are so many instruments to pick from, which one is the best?”
Mrs. Ngudu: “Which is the best? You are the best instrument, T’Challa. All the music comes from you! Do you understand?”
T’Challa: “I think so…”

What he did with this wisdom was… novel.

Mrs. Ngudu

The principal

T’Challa’s cousin…

As a teacher you never know to what heights or in what manner your students may someday soar.

2021.04.5 20:25

Erlang: Socket experiments preliminary to writing a web server from scratch

Filed under: Computing,Science & Tech — Tags: , , , , , , , — zxq9 @ 20:25

A relative newcomer to networking in Erlang, Dr. Ajay Kumar, has started a self-educational project to create a web server from scratch in Erlang to give himself some first-hand insight into how TCP sockets work in Erlang and how web servers work in general. Web servers are a thing almost everyone has written against or for, but few have tried to implement on their own because socket programming sounds scary and time consuming to learn.

This video is quite short but incidentally demonstrates how not scary socket programming is and how easy it is to experiment with networking concepts on your own. Go experiment! Write networky things! It’s fun!

As an aside to this… I have a two-part explanation video that explains everything that is going on inside the service at he is basing his web server on. In the first part I explain what is going on within the default chat server that ZX templates as a network service project (kind of slow, covers basics for Erlang and ZX newcomers), and in the second part I explain how I used that as a basis for creating a telnet chat service that implements global shouts, channels, permissions, and other basic features needed for a real chat service (a bit better paced if you already know your way around Erlang and discusses some higher-level concepts such as service structure and the “service -> worker pattern“).

Pol: Representative government, voting, and issues with discovering the will of the people

A discussion about voting, representation, and discovering the will of the people.

Watch on Rumble or BitChute.

Older Posts »

Powered by WordPress