Author Archives: RemyG

About RemyG

Software engineer by day, open-source developer at night.

Self-hosting my blog

I’ve decided (once again) to change my blogging platform.

My blog is now available at remyg.ovh. It’s a Jekyll static blog, hosted on a Docker image running on a Raspberry Pi.

I will update the posts on this WordPress instance to include links to the new Jekyll instance.

Learning Kotlin

This post has moved to my new blog.


Kotlin is, as described on the official website, a

Statically typed programming language for modern multiplatform applications

Programiz has a great infographic that explains the interest of learning Kotlin.


The Kotlin website has a well written documentation, with a complete language reference, as well as different tutorials.

If, like me, you have some experience in Java development, a good starting point are the Kotlin Koans. The Koans are a series of TDD exercises, each of them introducing an element of the Kotlin syntax. It starts slowly, with the basic Kotlin syntax and the differences with Java, but then goes to specific collections handling concepts that can remind you of the new Java 8 or Scala transformation methods.

To start working on the Koans, you can either fork the project on GitHub (here) or clone it directly. I’ve forked it, and created a new branch for my work (git@github.com:RemyG/kotlin-koans.git).

Then open the project in IntelliJ (Kotlin is supported and developed by JetBrains).

You can see that the project provides failing unit tests, as well as the skeleton for the classes to implement. All you need to do is implement the methods so the unit tests pass.


After having familiarized yourself with the basic Kotlin syntax, you can move to more practical experiments.

You can find good tutorials on how to integrate Kotlin with Spring Boot: Creating a RESTful Web Service with Spring Boot, Spring Boot and Kotlin.

Kotlin is also fully supported for Android development (see this blog post), but that’s not an area I’m working in.

Monitoring a cluster of Raspberry Pi with Nagios

This post has moved to my new blog.


In this post, I’ll describe how I’ve set up the monitoring of my micro-cluster of Raspberry Pi with Nagios.

On the monitor host

Install and configure Nagios: see this article

Install the NRPE plugin:

sudo apt-get install nagios-nrpe-plugin

Define the services: edit /etc/nagios3/conf.d/services_nagios2.cfg

# NRPE Services
define service {
        hostgroup_name                  rpi-cluster
        service_description             Current-Users-N$
        check_command                   check_nrpe_1arg$
        use                             generic-service
        notification_interval           0
}

define service {
    hostgroup_name rpi-cluster
    service_description Current Load NRPE
    check_command check_nrpe_1arg!check_load
    use generic-service
    notification_interval 0
}

define service {
    hostgroup_name rpi-cluster
    service_description Disk Space NRPE
    check_command check_nrpe_1arg!check_all_disks
    use generic-service
    notification_interval 0
}

define service {
    hostgroup_name rpi-cluster
    service_description Zombie Processes NRPE
    check_command check_nrpe_1arg!check_zombie_procs
    use generic-service
    notification_interval 0
}

define service {
    hostgroup_name rpi-cluster
    service_description Total Processes NRPE
    check_command check_nrpe_1arg!check_total_procs
    use generic-service
    notification_interval 0
}

define service {
    hostgroup_name rpi-cluster
    service_description Swap NRPE
    check_command check_nrpe_1arg!check_swap
    use generic-service
    notification_interval 0
}

Define the new hostgroup: /etc/nagios3/conf.d/hostgroups_nagios2.cfg

define hostgroup {
        hostgroup_name  rpi-cluster
                alias           Raspberry PI Cluster
                members         rpi0,rpi1,rpi2
        }

Define a new host file for each slave: /etc/nagios3/conf.d/rpi-cluster-xxx.cfg. The address config contains the slave IP.

define host {
        use                     generic-host
        host_name               rpixxx
        alias                   rpi-cluster-xxx
        hostgroups              rpi-cluster
        address                 192.168.0.xxx
}

Reload Nagios:

sudo service nagios3 reload

On the slave hosts

Install the NRPE server:

sudo apt-get install nagios-nrpe-server

Edit /etc/nagios/nrpe_local.cfg. The allowed_hosts config contains the IP of the monitor.

######################################
# Do any local nrpe configuration here
######################################

allowed_hosts=127.0.0.1,192.168.0.xxx

command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10%
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200
command[check_swap]=/usr/lib/nagios/plugins/check_swap -w 50% -c 25%

Restart the service:

sudo service nagios-nrpe-server restart

Monitor

You can now monitor the slaves on Nagios:


Inspired by: LowEndBox

Training program

This post has moved to my new blog.


For the last 3 years, I’ve been working as a technical team leader for IBM Client Innovation Center.

Although this experience has brought me a lot (team management, project management…), I’ve lacked the time to really stay up-to-date with the more recent technologies.

That’s why I’ve decided to compile a list of a few technologies I’d like to learn or improve on during the next few months:

  • Kotlin
  • Spring 5
  • NoSQL
  • Docker
  • Angular

I’ll update this list if needed, and try to write on the different items, with the sources I find and use.

Update your Nikon DSLR firmware on Ubuntu

I’ve just invested in a new DSLR, a Nikon D750. One of the first things I do after unboxing it, is to update its firmware to the latest version, to have the latest functionalities and fixes.

Ubuntu (and other Linux distributions) is, as often, forgotten by these major manufacturers, who only provide Windows and Mac OS solutions.

To update the firmware on a Linux distribution:

  • download the Windows updater (F-D750-V110W.exe) from the Nikon download center
  • extract the content of the exe file, which is actually a rar archive: unrar e F-D750-V110W.exe
  • copy the content of the archive (D750_0110.bin) on an SD card, and put it in the slot 1 of your camera
  • in the Setup menu of your camera, select “Firmware version” and follow the on-screen instructions to complete the firmware update
  • once the update is complete, turn the camera off and remove the card
  • delete the bin file from your card

And voilà, your Nikon DSLR has the latest firmware!

No tips yet.
Be the first to tip!

Like this post? Tip me with bitcoin!

1GNVaSvTfP3ojgzCe8P3o5mTj2uSUD2FGr

If you enjoyed reading this post, please consider tipping me using Bitcoin. Each post gets its own unique Bitcoin address so by tipping you're not only making my continued efforts possible but telling me what you liked.