# Install these packages (use your favorite AUR tool here) | |
yay -S minikube kubectl docker-machine-driver-kvm2 libvirt qemu-headless ebtables | |
# Get libvirt going | |
sudo systemctl enable libvirtd.service | |
sudo usermod -a -G libvirt $(whoami) | |
# This fix thanks to http://blog.programmableproduction.com/2018/03/08/Archlinux-Setup-Minikube-using-KVM/ | |
sudo virsh net-autostart default |
package main | |
import ( | |
"context" | |
"flag" | |
"fmt" | |
"log" | |
"net/http" | |
"os" | |
"os/signal" |
[package] | |
name = "rust-async-qotd" | |
version = "0.1.0" | |
authors = ["Gökberk Yaltıraklı <[email protected]>"] | |
[dependencies] | |
tokio = { git = "https://github.com/tokio-rs/tokio" } | |
rand = "0.3" |
State machines are everywhere in interactive systems, but they're rarely defined clearly and explicitly. Given some big blob of code including implicit state machines, which transitions are possible and under what conditions? What effects take place on what transitions?
There are existing design patterns for state machines, but all the patterns I've seen complect side effects with the structure of the state machine itself. Instances of these patterns are difficult to test without mocking, and they end up with more dependencies. Worse, the classic patterns compose poorly: hierarchical state machines are typically not straightforward extensions. The functional programming world has solutions, but they don't transpose neatly enough to be broadly usable in mainstream languages.
Here I present a composable pattern for pure state machiness with effects,
# Download latest archlinux bootstrap package, see https://www.archlinux.org/download/ | |
wget 'ftp://ftp.nluug.nl/pub/os/Linux/distr/archlinux/iso/latest/archlinux-bootstrap-*-x86_64.tar.gz' | |
# Make sure you'll have enough entropy for pacman-key later. | |
apt-get install haveged | |
# Install the arch bootstrap image in a tmpfs. | |
mount -t tmpfs none /mnt | |
cd /mnt | |
tar xvf ~/archlinux-bootstrap-*-x86_64.tar.gz --strip-components=1 |
let color = "blue" | |
let num = 42 | |
localized("Colorless green ideas sleep furiously.") | |
localized("Colorless \(color) ideas sleep furiously.") | |
localized("\(num.formatted("%05d")) colorless green ideas sleep furiously.") |
// Electron's quick start sample, naively ported to Go | |
// https://github.com/atom/electron/blob/master/docs/tutorial/quick-start.md | |
// | |
// go get -u gopherjs | |
// gopherjs build main.go | |
// electron $(pwd) | |
package main | |
import ( |
use std::rc::Rc; | |
trait HKT<U> { | |
type C; // Current type | |
type T; // Type with C swapped with U | |
} | |
macro_rules! derive_hkt { | |
($t:ident) => { | |
impl<T, U> HKT<U> for $t<T> { |