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
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.
beku (deprecated in favor of Go module)
Beku is command line program to manage 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.
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.
haminer
haminer is a library and program to parse and forward HAProxy logs to InfluxDB for mining HTTP requests.
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.
libvos (unmaintained)
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.
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).
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 tour.golang.org to Indonesian language, to help newcomers learning Go programming language. This is my first contribution to Go community.
vos (unmaintained)
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.
Articles
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
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.