Link Dump #1 - 2019-12-05

The first of (hopefully) many link dumps - a place for me to offload the interesting articles or pieces or software I come across while trawling the internet.

Python

A consistent frustration for me has been the difficulty of using even moderately complicated Python projects across multiple devices. A lot of my recent reading has involved a search for whatever is the canonical/best approach to bundling dependencies together as a portable development environment, and also create a simple binary distribution.

I haven't come across the ultimate solution yet - but these are some of the tools or guides which will hopefully ease the burden the next time I have to tangle with Python.

Pex: A Python tool for generating executables from Python environments or individual packages.
Voila: A tool for converting Jupyter notebooks to interactive web dashboards, while retaining a functional compute kernel.
Pipx: A tool for consuming already-published Python packages as regular binaries.
Poetry: A popular alternative package/environment manager. Although I haven't used it extensively, my feeling is that this tool is most likely the one which will allow me to consider my frustrations with Python "solved".
PyOxidizer: The most modern in a selection of tools which promises the ability to generate application binaries from Python projects.

Chess

I recently started playing chess (using the Lichess android app) - having progressed from "beaten every time by the most basic AI" to "find the basic AI annoyingly bad in its stupidity" - I'm ready to step up to Stockfish 2! Thinking about how modern chess engines compare to real humans sent me down a rabbit hole of learning about how they are developed.

Stockfish: The home of the most popular chess engine, which is also one of the strongest.
Chessprogramming Wiki: A handy resource for anyone exploring the idea of writing their own chess engine, or those with an interest in the techniques used to make the engine more or less competent.

Rust

Learning some form of low-level programming language has been on my to-do list for far too long. Having never really progressed beyond useful-but-not-professional Python, I recently decided that targeting C/C++/Fortran to do anything numerical was probably a waste of time; anything I need will be far better served via existing open-source libraries than whatever novice version I could put together.

That decision led me towards Go and Rust, both of which have the appeal of being potentially useful for writing CLI applications - an area where I'm far more likely to be able to put my learning to real productive use.

The Rust Programming Language: A free online version of the (definitive?) guide to Rust. I have a copy of the physical book, and so far it is probably the best text I've come across about a particular programming language.

Encryption

A topic I find fascinating, but don't have much scope to experiment with on a day-to-day basis. One of my general concerns has been that gpg is easy enough after a bit of practice or memory-jogging, but not simple enough to be a comfortable default choice when only using it on a very occasional basis.

Toplip: A CLI tool for encryption with steganography and plausible-deniability features.

Raspberry Pi

My current count is 10 Raspberry Pi devices scattered around the house. One is permanently occupied as a bastion host/generic testing device, while the others tend to spend a few weeks in a cluster configuration before I get bored and put them aside, only to come back to them a few months later. My plans for the next round include a k3s cluster and a set of lightweight file-sync nodes. In that vein...

k3sup: A tool to simplify the deployment of k3s. While k3s is already a seemingly much more straightforward version of Kubernetes, impatient people like me can benefit from the "quick wins" a tool like this provides, and use it as a staging point to start learning more.
Resilio Sync on a Raspberry Pi: Many moons ago I was a BTSync user, but moved away from it as I was lacking a use-case. More recently I have decided to try to ditch Dropbox and Google Drive, so a private p2p sync tool seemed like a logical consideration. I tried Syncthing, but wasn't impressed by ther performance or stability. While Resilio is proprietary, the improved user experience seems to more than make up for this so far.

Operating Systems

I've now been a preferential user of Linux for over 10 years. One thing I've consistently overlooked is the world of open-source, or generally non-Windows operating systems outside the Linux space. People who have worked with a modern Unix OS seem to swear by them; so these are the two I intend to try when time allows.

OmniOS: A Unix OS, which might be useful as a means to learn about Illumos-based systems, and also make a nice hypervisor for Linux VMs/containers, with ZFS as the underlying storage.
SmartOS: Another Unix OS, seemingly an even better choice for a pure hypervisor deployment.


You'll only receive email when ChrisDowning publishes a new post

More from ChrisDowning