Articles

Encrypted Mosquitto broker in Kubernetes

Encrypted Mosquitto broker in Kubernetes thumbnail
Mosquitto can usually be installed on an Ubuntu server fairly easily using the APT package manager. By Default, the broker handles unencrypted MQTT connections but it can be configured to use SSL certificates obtained, for example, using Certbot and thus enable MQTTs connections. This configuration is usually achieved by editing the Mosquitto configuration file in /etc/mosquitto so as to point to certificates obtained independently. However, when deploying Mosquitto to Kubernetes, one would prefer not to edit configuration files manually after install. Moreover, in Kubernetes, one can use Cert-manager to obtain SSL certificates. Thus, this article presents an efficient method to deploy a secure MQTTs broker in Kubernetes.
KubernetesMQTTTutorials

"Resizing" a PVC and its PV in Microk8s

With the storage addon enabled, microk8s can automatically provision a PV when a PVC is created. The size of the PV is set according to that of the PVC. However, PVCs cannot be resized after creation. The PVC could be deleted and recreated with a larger size but this would result in the deletion of the PV and, by extension, all the data stored so far in it. This article presents a workaround to resize a PVC and its corresponding PV without any loss of data.
TutorialsMediumKubernetesMicrok8s

MQTT control dashboard

MQTT control dashboard thumbnail
With the cloud native multi-user MQTT platform deployed, I started designing IoT devices that I could distribute to end users. However, without a GUI, interacting with those devices would be difficult. Of course, one could install applications like MQTT dash or similar but this would require tedious configuration such as MQTT broker and topics. I wanted to give users a simpler UX so I made this simple control interface that automatically displays a users devices and allows those to be controlled.
WebVuetifyProjectsMQTTWIP

API tester

API tester thumbnail
There are multiple tools available for API testing, Postman and Insomnia being probably the most popular. However, those are desktop applications that need to be installed. I wanted a solution that I can use in the browser so I made a simple web application to achieve basic API testing functions.
VuetifyWebProjects

A template for Vue.js applications

A template for Vue.js applications thumbnail
Over the years, I have built multiple Vue.js applications. Although their business logic differs, those applications often share similar components such as a navigation panel, a header with my logo and an authentication mechanism. Writing those from scratch for each application would be time consuming so I designed an application template that can be installed using NPM to bootstrap my projects.
WebVue.jsSecurityProjectsNPM

Group and User Pickers

Group and User Pickers thumbnail
With the user management and group management microservices, users and their groups can be easily queried through HTTP requests. However, the GUI that the user interacts with must also be properly designed so as to provide an optimal UX. To facilitate the query of users via the GUI, I designed a group and user picker component for Vue.js that can be easily installed using NPM.
NPMWIPWebProjects

3D printed solder spool holder

3D printed solder spool holder thumbnail
One day I got fed up with my solder spool rolling around all the time so I designed this simple spool holder in Fusion360 and 3D printed it.
ProjectsCAD3D printing

User management microservice based on Neo4J

User management microservice based on Neo4J thumbnail
Web applications commonly require a user database and the management logic for it. Having to build such software infrastructure for each individual app would be time consuming so I designed a general-purpose user management microservice that can be easily integrated in a project.
SecurityProjectsWebNode.jsNeo4J

SONOFF S20 firmware

SONOFF S20 firmware thumbnail
The SONOFF S20 is a cheap Wifi smart socket that enables the remote control of appliances for less than USD 10. Although the hardware is more than decent, its usage requires a proprietary app which most likely involves a third party server between the user and the device. Since the socket uses an ESP8266 at its core, I decided to write my own firmware for it.
ElectronicsIoTWIPMQTT

Raspberry Pi based display board

Raspberry Pi based display board thumbnail
I recently started using Grafana to visualize my apartment data. Although I can easily open a browser tab to view the dashboard I created, I wanted to have a standalone display dedicated to the task that I could put on a shelf of my living room.
ElectronicsProjectsRaspberry PiGrafana