• HiPhish
  • Grid Framework
    • Overview
    • Features
    • Examples
    • Gallery
    • Showcase
    • FAQ
    • News
    • Support

    • Buy Now 35$
  • Open Source
    • NTFS-Clone
    • IPS-Tools
    • roll
    • Newton's Method in C
    • Xeen Tools
    • Wolf3D Extract
    • Game Source Documentation
  • Vim/Nvim plugins
    • Info.vim
    • REPL.nvim
    • Quicklisp.nvim
    • jinja.vim
    • Guix channel
  • Blog
  • About
  1. blog
  2. 2020
  • Spreading tables in Lua

    Published: 2020-12-31

    Javascript has a spreading operator which lets us splice the contents of an object or array into another object or array. This makes it very easy to create an object based on another object and override or add entries. Since Lua and Javascript are quite similar, wouldn’t it be nice to have this operator in Lua as well? Lua is a minimal language, so adding a new operator seems unlikely, but Lua is also very flexible, and we can add a spreading function instead.

    Continue reading…

  • Making LuaRocks (partially) compliant with the XDG Base Directory specification

    Published: 2020-12-29

    LuaRocks is a community-driven package manager for the Lua programming language. LuaRocks packages can be installed globally or in the user’s home directory, but sadly LuaRocks does not follow the XDG Base Directory specification. However, with a few lines of Lua code we can fix this shortcoming partially at least.

    Continue reading…

  • Making SBCL compliant with the XDG Base Directory specification

    Published: 2020-12-28

    The war on dotfiles continues, this time with SBCL. Let’s see how we can make it comply with the XDG Base Directory specification.

    Continue reading…

  • Making Bash compliant with the XDG Base Directory specification

    Published: 2020-12-27

    GNU Bash does not comply with the XDG Base Directory specification, it uses the classical dotfiles approach where it just dumps all its files into the home directory. It does not even have the courtesy of putting all its files in one common ~/.bash directory. Fortunately we can coerce Bash into compliance with a bit of effort.

    Continue reading…

  • A Guix daemon for runit

    Published: 2020-11-20

    I use GNU Guix as a secondary package manager on my system. Previously I have been running Kubuntu, which uses systemd as its init system, but I have since switched to Void, which uses runit. Guix comes with services for systemd and Upstart included, but not for runit. Let’s find out how to create a runit service from scratch.

    Continue reading…

  • My computer broke down

    Published: 2020-11-15

    There are two types of people: those who make backups and those who will experience a system breakdown. Fortunately I was in the former category, but it was still a very tedious and stressful experience. Every problem is also an opportunity to grow and throw off dead weight, so I used the opportunity to upgrade the hardware and switch my operating system.

    Continue reading…

  • A web page template DSL for my website

    Published: 2020-10-02

    In my previous blog post I presented how I had come up with an embedded domain-specific language for creating web pages in my custom static site generator. I also mentioned the concept of “templates” in passing. Of course it was only logical to follow the page DSL up with a custom template DSL to smooth over the code duplication and pattern repetition.

    Continue reading…

  • A page DSL for my website

    Published: 2020-09-28

    I got bitten by the Lisp bug recently again, and so I decided to clean up an ugly wart in my static site generator which I use for generating the Workshop. The goal was to create an embedded domain-specific language (DSL) for defining web pages.

    Continue reading…

  • Dotfiles were a mistake

    Published: 2020-08-30

    Unix has a clever trick for hiding a file from being displayed by the ls command or other file browsers: just prefix the file name with a period character. Many applications use this fact in order to place hidden files or directories in the user’s home directory, usually containing settings, cached files, persistent data and whatever else developers might come up with. This practice has always struck me as just plain wrong, and I am glad that my sentiment was confirmed by Rob Pike years ago.

    Continue reading…

  • The best language to learn programming

    Published: 2020-08-02

    What is the best first language when learning how to program? There have been many opinions over the years, each with their own selling point: BASIC was created for beginners, Python is executable pseudocode, JavaScript runs everywhere on the web, and so on. However, I would argue that the truly best language has been right under our nose the whole time: the Unix shell.

    Continue reading…

  • Macho, the man command on steroids

    Published: 2020-05-31

    The Unix man command can open a manual page if you know its name, and the apropos command can search through the manuals if you are looking for a specific word. Let’s put the two to work together into a command I like to call macho: the man command on steroids.

    Continue reading…

  • How I manage SSH connections

    Published: 2020-05-23

    I have a number of machines I need to connect to via the secure shell (SSH), and typing in the IP address or host name by hand every time get tedious very quickly. I could use an application for that, but that’s bloat. Let’s instead see how we can leverage small universal tools to build an elegant solution of our own instead.

    Continue reading…

  • De-Bootsrapping the workshop, part 2

    Published: 2020-02-29

    About a year ago I wrote about the first step in de-Bootstrapping my website, where I made my site layout independent of the Bootstrap CSS framework. I have now finally removed Bootstrap entirely from the website.

    Continue reading…

  • Project-local Vim settings the right way

    Published: 2020-02-08

    Sometimes you want to have a set of Vim settings specific only to a certain project. There are many tips out there how to achieve such a setup, but most of them expose the user to serious security risks. I am going to describe the fundamental problem and how to solve it. TL;DR: use the vim-addon-local-vimrc plugin.

    Continue reading…

  • Learn Vim Script in Y minutes

    Published: 2020-02-01

    My article for the website Learn X in Y minutes about Vim scripting has been accepted; the article teaches you how to get started with Vim’s built-in custom scripting language in a very concise manner. It has been quite an enjoyable topic to write about and I even ended up learning a few new tricks myself.

    Continue reading…

Subscribe: RSS

Archive

  • 2026 (3)
  • 2025 (2)
  • 2024 (8)
  • 2023 (11)
  • 2022 (13)
  • 2021 (5)
  • 2020 (15)
  • 2019 (17)
  • 2018 (1)
  • 2017 (4)
  • 2016 (6)
  • 2015 (2)

Categories

  • organisation (15)
  • vim (24)
  • open-source (25)
  • misc (12)

Tags

  • html (11)
  • vim (21)
  • cocoa (1)
  • info (1)
  • rant (15)
  • lisp (21)
  • msgpack (3)
  • awk (1)
  • math (1)
  • unix (8)
  • guix (2)
  • linux (5)
  • lua (9)
  • elixir (1)
  • neovim (4)
  • web (6)
  • network (2)
  • markdown (2)
  • wine (1)
  • games (4)
  • git (2)
  • terminal (1)
  • unity3d (1)
  • python (2)
  • testing (3)
  • functional programming (1)
  • javascript (1)
  • css (1)

© 2015-2026, licensed under CC BA-SA 4.0

GitHubGitLab