kilabit.info
| AmA | Build | Email | GitHub | Mastodon | Projects | SourceHut

Services

This server provides the following services to the public.

AUR repository

See https://build.kilabit.info for more information.

DNS server

The DNS server is run using rescached on the following port,

  • DNS over UDP at port 53,

  • DNS over HTTPS at "https://kilabit.info/dns-query",

  • DNS over TLS at port 443.

Check the IP address using dig or ping to domain kilabit.info. Some stranger abuse the UDP port 53, so the service may be get blocked at some point.

We use CloudFlare DNS as parent name servers.

Projects

All of my personal projects are open source and available on GitHub and SourceHut.

asciidoctor-go

The asciidoctor-go is the Go module to parse the AsciiDoc markup and convert it into HTML5.

awwan

awwan is configuration management software, infrastructure as file and directory layout. In other words, awwan is command-line interface to execute multiple lines of command in the local or remote server using SSH.

Do you have a collection of shell scripts to manage one more similar server? Do you ever want to execute only part of your shell script in remote server? Are you get tired with learning others syntax and tools for provisioning your own server, while you need is a handful knowledge of shell script?

If yes, awwan is the right tools for you.

bin.sh

A collection of shell scripts.

ciigo

ciigo is a program to write static web server with embedded files using asciidoc markup language. This site and golang-id.org is written with ciigo as framework.

golang-id.org

This website is my second contribution to Go community. Its goal is not only to provide help, through translation, for Indonesian to learn more about Go but also to provide an ecosystem for Indonesian Go community, for example, vlog and blog in Indonesian language, and sharing open source works written in Go. The website is freshly launched, they are still more works to be done, though.

gorankusu

gorankusu is a Go module that provide HTTP service with web user interface for testing HTTP endpoints (like Postman) and for load testing. For the load testing we use vegeta as the backend.

gotp

Command line interface for Time-based One Time Password (TOTP).

haminer

haminer is a library and program to parse and forward HAProxy logs to InfluxDB for mining HTTP requests.

hunspell-id

Indonesia hunspell dictionary. Kamus Bahasa Indonesia untuk program hunspell.

jarink

Jarink is a program to help web administrator and developers to inspect and maintains their website. Currently, it has the feature to scan and report for broken links.

karajo

karajo is the library and program to implement HTTP workers and manager similar to AppEngine cron. karajo has the web user interface for monitoring the jobs.

lilin

Lilin is the service monitoring for HTTP and TCP services.

pakakeh.go

pakakeh.go is collection of Go packages. The most outstanding packages are WebSocket (server and client), DNS (server and client), email (client only), STMP, and MemFS (memory file system).

pakakeh.ts

pakakeh.ts is a HTML web-user interface components built with TypeScript.

rescached

Rescached is resolver cache daemon. It is a DNS forwarding server, serve the clients queries, but also caching all the queries and answers for later use. The idea is to minimize network traffic for outside DNS queries and to manage local zone files. The first implementation was written in C++ and then re-written using Go.

tour.golang-id.org

The tour.golang-id.org is translation of their original website https://go.dev/tour to Indonesian language, to help newcomers learning the Go programming language. This is my first contribution to Go community.

Projects: archived

The following projects is not maintained anymore.

beku

(Deprecated in favour of Go module)

Beku is command line program to manage Go packages in user’s environment (GOPATH or vendor directory). Beku provide syntax like pacman. This program exists long before before godep or Go module exist and stable.

duitku

Duitku is the Go module for duitku.com.

The project is started because in my previous company we use duitku.com for payments and there is no open source Go module for it, so I create it.

kamusku

kamusku is open source project that provides HTTP API for Kamus Besar Bahasa Indonesia. The idea of this project is to provide command line interface to lookup the definition of Indonesia words from terminal and from Telegram bot.

This project is discontinued due to copyright issues, where the KBBI administrator send direct email warning to me after announcing this project on public Telegram channel. The email said that my program store data gathered from KBBI server.

The source code and implementation does not store the KBBI data into storage, only caching it in the memory to minimize identical requests to KBBI server.

This project depends on the kbbi module (see below), as the base layer for scrapping the definition.

  +-------------+    +--------------+
  | kamusku CLI |    | Telegram bot |
  +-------------+    +--------------+
      ^^                     ^^
      || HTTP API            || Telegram API
      vv                     vv
  +--------+  webhook   /----------\
  | kamusd | <========> | Telegram |
  +--------+            \----------/
  | kbbi   |
  +--------+
     ^^
     || HTTP scrapping
     vv
  +----------------------+
  | kbbi.kemdikbud.go.id |
  +----------------------+

kbbi

kbbi is the Go module and client program to lookup definition of Bahasa Indonesia words from the Kamus Besar Bahasa Indonesia.

libvos

libvos is a C++ library. First implementation was intended for reading and writing Delimited Separated Value (DSV) data, but then its evolved and have more capabilities. Current features included Buffer module, File module, Socket module, reading and writing INI file format, FTP (server and client) module, DNS module, and Oracle Client Interface module.

This library is the building block for the vos project (see below).

vos

Vos is a program to process formatted data, i.e. CSV data. Vos is designed to process a large input file, a file where their size is larger than the size of memory, and can be tuned to adapt with machine environment. Vos can do sorting, formatting, filtering, and join, by reading input file and its configuration script. Its written in C.

This project is inspired by IRI CoSort®, a fast, affordable, and easy-to-use sort/merge/report utility, and a full-featured data transformation package. I know CoSort when working at one of telco in Indonesia.

For the completion of my bachelor degree, I wrote a paper which research the best sorting algorithm for big data on low memory system. vos is the proof of concept of that thesis paper.

Talk

Software development retrospective

In this talk we will explore how does software development works? What is “team” in software development? Testing phase in software development, and software artifacts.

Workgroup or team work?

What does the team should looks like in the software development? Is the member of team work individually or as a team? Know their differences.

Introduction to DNS

What is DNS? How they works? This talk has two version. The first slide is the simplified one, and the second is the expanded version.

Git - Tutorial

This talk contain history, terminologies, tips and tricks, and quick git practice for push, pull and merge using local directory as remote.

Journal

2025

Internal of kilabit.info. In this article we will take a look at the architecture and the stacks behind kilabit.info and domains their managed, and how it works.

Hyper-V vs VirtualBox: benchmarking Angular test suites. In this journal we will compare the performance of virtual machine (VM) running with Windows Hyper-V and the one running with Oracle VirtualBox.

2024

Why DevOps do this? This article collect DevOps practices that I found bewildering and amusing.

Memfs vs go:embed. This article compare the feature of go:embed with the memfs package from my pakakeh.go module.

Bad coding practices. This journal collect the bad coding practices that I have found during my journey maintaining legacy software.

Peculiar engineering at new company. Notes on software engineering or IT in general at new company. This notes is intended for a reflection of me not to criticize my team or company.

Ask Me Anything. A light version of question and answers related to my history and backgrounds as software engineer.

karajo: integrating SourceHut Webhook. An article that describe how to integrate SourceHut with Karajo.

Best TV series. List of best non-America TV series that I watched in the past years.

2023

Research on SSH with 2FA. In this journal, we review several options to manage SSH authorization beyond using public keys, possibly also enabling 2FA, using Time-Based One-Time Password (TOTP). Some of the alternatives that we will review are Google Cloud OS Login, Smallstep, Teleport, and google-authenticator-libpam.

Using systemd mkosi for development (round 2). Continuing previous attempt, in this journal we take different path.

Using systemd mkosi for development. In this journal, I will take a notes on my journey learning and using mkosi as part of integration tests for developing awwan. The goal is that when I run make on awwan repository, it will create and run a container using systemd-nspawn(1) with SSH server running, and run all tests inside the container.

Reviewing status page websites. This journal review and dissecting several famous status page (or also known as service health).

Replacing Postfix with OpenSmtpd. I have read several articles on OpenSMTPD and interested to use it. In this article we describe the process to replace Postfix with OpenSMPTD.

Email server using Postfix, OpenDKIM, and Dovecot. This article describe my current email server configuration using Postfix, OpenDKIM, and Dovecot.

Better approach for type and variable naming. Naming variable is still hard, at some point. In order to make it less hard, we can create barriers, to round naming scopes, by applying several rules.

2022

Creating personal AUR builder and repository with karajo. This article describes step by step process to create personal AUR builder and repository using karajo. At the end of this article we will learn how to build AUR package with clean chroot, learn how to sign package using GnuPG, and learn how to operate karajo service.

MySQL, surprise!. Things that will surprise you when using MySQL.

Finally, I use GPL. My inner thoughts on why I finally choose GPL.

Flag based continuous deployment. This article looks on how to manage multiple features developed, activated, and deployed in multiple environments while still maintaining linear history.