About Ronggeng

Ronggeng is a developer's notebook. It covers programming languages such as PHP, Python and JavaScript, Linux and the command line, databases, the web, and Git and the other tools developers use every day. The aim is practical: notes that solve a real problem, explain why the solution works, and show the output you should expect.

A notebook since 2009

The site started in 2009 as my personal collection of snippets. I am Nawawi Jamili, a Linux sysadmin and developer from Malaysia, and at the time I was writing a lot of shell scripts after years of PHP. Whenever I solved something I knew I would need again, I posted it here. Most of those early posts were a short code block and little else, written as reminders to myself.

In 2026 I relaunched the site. Every old post was rewritten into a proper article: the code was cleaned up, tested again, and explained, with the edge cases I had learned about from experience in the years since. New articles were added alongside them, and the site now covers a wider range of programming and technology topics than the original snippet collection did.

The Bash function library

The best-known series on the site is the pure-Bash function library: small functions named after their PHP counterparts, such as strlen, strtolower, str_replace, trim and basename. Each one does its job with parameter expansion and builtins, without starting external programs. The PHP string functions in Bash cheat sheet is the index to the whole series.

Around it are general shell scripting articles. They cover topics such as strict mode, option parsing and cleanup with trap. There are also MySQL and MariaDB notes, including stored functions for working with IP addresses.

Using the code

The code is meant to be copied. Paste a function into your script, or collect the ones you use into a file and source it. Each article shows the exact output the code produced when I ran it.

The Bash code is tested on Bash 4.4. Where it matters, articles note the differences for Bash 3.2, which is still the default /bin/bash on macOS, and for Bash 5.x. Features that need Bash 4, such as ${var,,} case conversion or associative arrays, are marked as such, usually with a fallback. Database articles say which server versions they were tested on.

Licence

You may use the code samples on this site freely in your own scripts and projects, commercial or not, with or without credit. They come without any warranty. Read and test code before you run it on an important system, especially anything that deletes files or changes a database. The article text itself remains mine, so please link to it rather than copying all of it.

There are no comments or accounts here. If you spot a mistake in an article, have a question, or want to suggest a topic, use the contact page. If an article helps you fix something, that is the main purpose of the site.