Blog
2026
crystal.nvim: Neovim plugin for Crystal-lang
I'm returning to Crystal-lang. The existing Vim and Neovim plugins are outdated, so I have authored my own: a complete tree-sitter-based plugin for Neovim 0.11+, built end-to-end with Claude Code in one afternoon.
Migrating a Jekyll Blog to Astro 5 with AI as My Pair Programmer
How I migrated andrius.mobi from Jekyll to Astro 5 in a week, using Claude as a pair programmer for content migration, dark mode, performance work, and Firebase auth.
Rebuilding the Asterisk Docker Matrix
Notes on rebuilding andrius/asterisk. The template system, the version coverage from 1.2.40 to 23.2.0, and the CI/CD that keeps it supported.
2024
A Run-in-Docker Action for GitHub Workflows
Open-sourced run-in-docker, a small GitHub Action that runs build commands inside a legacy Debian container without forcing Node.js into the container itself.
On-Demand Dev Environments With Coder
A self-hosted Coder running on a tiny Scaleway Stardust, spinning up ephemeral Hetzner workspaces from Packer-built snapshots, with a persistent volume for /home and Tailscale for reach.
2023
Running GitHub Actions on Debian Jessie and Stretch
Notes on building CI for services that still ship on Debian Jessie and Stretch. The image stack, the Node.js compatibility problem, and the workarounds that keep actions/checkout running on glibc that is older than GitHub expects.
Consolidating CI With Reusable Workflows
A year after migrating an R&D team's repositories to GitHub, the per-repo workflows had drifted into a maintenance problem. Notes on consolidating around fifty repositories behind a small set of reusable workflows.
Register SIP account and receive calls with Twilio
How to register your SIP softphone and receive inbound calls using Twilio
2022
Migrating 140 Repositories From GitLab to GitHub
Notes on moving an R&D team's repositories from a self-hosted GitLab installation to GitHub. The migration tool, the per-repo CI, and the design choices that came out of it.
2021
FreeSWITCH Behind a REST API
Notes on the telephony layer of a conference-bridge platform built with a small team. FreeSWITCH in Docker, SIP plus WebRTC, a dialplan that curls into the API on every call, and a recording pipeline driven by post-process hooks.
2019
Properly terminate crystal-lang service in docker
How to handle signals and properly terminate docker service written with the Crystal-lang.
Create the smallest Crystal-lang docker image based on scratch
How to use docker multi-stage builds to create a smallest by size Crystal-lang docker image.
All-in-one (Crystal-lang library that handle all the Asterisk PBX interfaces)
I've created and open-sourced a Crystal-lang shard (library) that handles all Asterisk PBX interfaces (ARI, AMI, and all types of AGI).
2018
How to install software on firewalled server
How to use a reverse SSH proxy to install software on a server with outbound firewalls (gray zone ;) )
DigitalOcean, Floating IP and VoIP
How to configure DigitalOcean's floating IP with VoIP, specifically with Asterisk, using Docker.
Tiny docker image with ngrok
I've found an excellent tiny Docker image for ngrok (wernight/ngrok). From now just using it to handle this blog.
2014
Updated OPUS codec patch that supports Asterisk 11.11.0 and 12.2.5
Updated OPUS codec patch now supports Asterisk 11.11.0 and 12.2.5, tested with VP8 pass-through.
2013
WebRTC with Asterisk 11?
Tonight, I tried two WebRTC clients (JsSIP and sipML5) with Asterisk 11. I was able to get both of them working for echo test calls with the ulaw (g711u) codec. However, when I called from WebRTC to the SIP softphone, there was only one-way audio.
Roaming PBX update
What's new: Asterisk 11.4, SILK codec, watchdog to improve Raspberry Pi board performance and prevent deadlocks.
First release of Roaming PBX
Announcing the first alpha release of the Roaming PBX image, featuring Ruby, pcapsipdump, Asterisk PBX, and the SILK codec.
Creating your own custom image for Raspberry Pi
How to cross-compile a custom Raspberry Pi image and to build custom Asterisk PBX installation.
SIP TCP vs UDP with mobile client: awesome results
Switching a mobile SIP client from UDP to TCP dramatically improved battery life with no noticeable change in voice quality.
Raspberry Pi: how to create your own image
Currently I do developing my own Roaming VoIP PBX as a Raspberry Pi image, and have to rebuild project packages often. It is not best idea to compile packages right on Raspberry Pi. That would take hours. I was searching for a tool that can create image base - on my laptop or VPS.
Asterisk with silk8 and amr-nb codecs
How to get Asterisk PBX working with SILK and AMR-NB codecs.
Debian installer (Asterisk and Adhearsion AGI framework)
Here is a script that installs Asterisk PBX 11.x: with fax support, MySQL, Ruby, and Adhearsion AGI.
Roaming PBX with Raspberry Pi, Asterisk and chan_dongle
As a frequent traveler, I understand the telecommunications needs of other travelers and citizens of the world. Recently, I decided to dedicate my free time to building a Roaming PBX solution.
Why you should create AGI?
In the world of Asterisk, the dial-plan is a powerful tool for creating custom voice applications. However, there are situations where using AGI (Asterisk Gateway Interface) is preferred. This article explores the reasons why AGI can be a valuable addition to your Asterisk system.
Click-to-call script for Windows users
Sharing one of my older projects with Asterisk: a click-to-call library with client and server components. It does work with Windows!
How to unlock Huawei modem
After my last post about the GSM gateway based on Raspberry Pi and Huawei modem, I received a few questions asking how to unlock it. Below is a YouTube video that describes the process.
Asterisk on Raspberry Pi as GSM gateway
Yesterday, I installed chan_dongle for my Asterisk PBX running on Raspberry Pi. chan_dongle is a driver that enables the use of Huawei 3G USB dongles as a voice "board" for handling voice, SMS, and USSD. I conducted extensive research on various topics and summarized everything in a document. Additionally, I provided useful links related to Asterisk CLI commands, troubleshooting Huawei modems, and additional resources for chan_dongle.