Anardil

A spot of sunlight

All Articles

Steam Library on Network Attached Storage

The Problem Suppose you have a lot of Steam games, but not a lot of local disk space. Maybe you're using a laptop for some light gaming and don't want to sacrifice several hundred gigabytes of your local storage. Maybe you have a couple computers and ...

Devbot

Introduction Some of using computers is inevitably repetitive: checking for updates, backing up files, maybe clearing some logs. Scripts are a great way to automate some of the logic around these tasks, but you have to remember to run them or they ...

Hangman in Haskell

Introduction Hangman is a simple word game where the user must guess the hidden word. The catch is that there are a limited number of guesses. This is a functional implementation of Hangman in 100 lines. I'll go through each section of the source and ...

Stream Programming

Introduction Most simple iterative programming tasks can be rephrased in terms of a 'map' or 'reduce' operation. The advantage here is that if we can work our problem into a map - reduce problem, we can easily increase parallelism. A simple example ...

Binary Tree in Haskell

Introduction Binary trees have internal structure; for any given node, all elements to the left are less than the current value, and all elements to the right are greater than the current value. For instance: 5 /--+--\ 3 6 /-+-\ 1 2 Lets build a binary ...

Dynamic Shell Scripting

Summary We can use declare, eval and text manipulation tools like awk and sed to dynamically redefine shell functions based on their content or name. This allows us to add lines or generate entirely new functions. Introduction Bash and other shell ...

AutoCLI

Summary AutoCLI simplifies managing scripts by auto generating option menus, all in bash, without any dependencies. Sub menus, customization, and positional arguments are all supported. See autocli.sh on GitHub for the source and more examples. The ...