• 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. categories
  3. open-source
  • 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…

  • 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…

  • A pipe operator for Lua

    Published: 2021-02-15

    I have recently been getting into Elixir, and one nice feature it has is the pipe operator. It allows us to express a pipeline of function through which an object will be dragged. This got me thinking: with how flexible Lua is, would it be possible to add something similar to Lua as well?

    Continue reading…

  • Securing Quicklisp through mitmproxy

    Published: 2022-03-19

    Quicklisp is a popular systems manager for Common Lisp, it allows users to download, install, update and uninstall Common Lisp systems (what other language call packages, but that term already means something else in Common Lisp). However, Quicklisp has one glaring security issue: it downloads everything through HTTP. This means every time you use Quicklisp to download a system you open yourself up for a man-in-the-middle (MITM) attack. We can use a local proxy server to route all traffic to Quicklisp through HTTPS, and in this blog post I will illustrate how to achieve this using mitmproxy.

    Continue reading…

  • The problem with contributing to Open Source

    Published: 2022-04-07

    I love Free (Libre) and Open Source Software (FLOSS); not only does the software respect your personal freedom, you can also contribute back to make it better. It becomes a communal cooperative effort. But just because you can contribute, that doesn’t mean that you necessarily should.

    Continue reading…

  • Fake web backend with mitmproxy

    Published: 2022-06-12

    A web application typically consists of three layers: the frontend, the backend, and some sort of database system for persistence. While developing the frontend we often need to send messages to the backend, receive some response and process that response. Faking backends in automated tests is a solved problem, but sometime we don’t want to write tests, we want to wildly experiment with various inputs as we are trying out the frontend by hand. We want to intercept messages and look into what is being transmitted. In this post I will demonstrate a simple fake backend using the mitmproxy application.

    Continue reading…

  • Introducing cl-cmark

    Published: 2022-06-15

    For the past few weeks I have been working on a little side project, a library of Common Lisp bindings to cmark, the CommonMark reference implementation: cl-cmark (GitHub mirror). CommonMark is a dialect of Markdown which aims to remove any ambiguity, clean up the language specification and provide a common dialect of Markdown for other projects to use. The cmark library is the reference implementation for parsing CommonMark. It is written in C, so creating bindings for other language is fairly simple.

    Continue reading…

  • cl-cmark approaching stable release

    Published: 2022-10-16

    In June of this year I introduced my Common Lisp library cl-cmark (GitHub mirror), which implements parsing [CommonMark] documents and manipulating the resulting document tree. I have been hammering out the last kinks over the past weeks and I am now ready to call it done. Before I officially put the 1.0 stamp on it though I would like if a few more people could take a look at the library and give it a try.

    Continue reading…

  • Introducing nvim-cmp-vlime

    Published: 2022-11-22

    I am glad to announce a new Neovim plugin: nvim-cmp-vlime (GitHub mirror). It is a completion source for nvim-cmp which uses the Vlime plugin to fetch completion candidates from a running Common Lisp process. Vlime is a plugin similar to Slime for Emacs, it lets the editor communicate with a running Lisp process so we can evaluate code at runtime, debug, inspect values, and of course get auto-completion. In fact, Vlime uses the same Backend, Swank, as Slime, so the results should be equally good.

    Continue reading…

  • A file system abstraction for HSSG

    Published: 2022-12-30

    A while ago I announced my new pet project HSSG, the hackable static site generator. The final step of generating a web site is writing the actual files to the file system of the operating system. So far this has been a messy affair where information about file paths had to be dragged through the entire chain from start to finish. This was ugly, hard to maintain and it muddied the layers of abstraction. In this post I will explain how I brought order to HSSG through a file system abstraction.

    Continue reading…

  • « First
  • ‹ Previous
  • 2 of 3
  • Next ›
  • Last »
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