Articles

MongoDB K8s manifest

Here's a simple manifest to deploy MongoDB with data persistence in microk8s:
MongoDBKubernetes

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

Mongoose bulkWrite upsert

Here is a code snippet for a bulk update with upsert using Mongoose:
MongoDBMongooseNode.js

K8s NGINX Deployment for Ingress test

An NGINX container can be quite useful to test whether one's Kubernetes setup is working. Here is one example manifest file that deploys such container with an appropriate service and ingress.
TutorialsKubernetes

PET bottle collecting robot

PET bottle collecting robot thumbnail
While at university, two friends and I registered as a team for the <a href="https://robot-competition.epfl.ch/" rel="noopener noreferrer nofollow">EPFL robots competition</a>. The objective of the competition is to build a robot that would collect PET bottles inside an arena and bring them back to a collection area. We figured the robot would need to be designed with a storage space as well as some form of path finding algorithm if we wanted it to be able to carry bottles to the collection area so decided to simply skip the step. Instead, we designed the robot as a bottle cannon that would shoot the bottles in the collection area.
ProjectsArduinoElectronicsRobotics

IoT heater controller

IoT heater controller thumbnail
The thermal insulation of my apartment not being the best, I decided to buy an electric heater in order not to freeze during cold winter nights. However, the one I got was probably too powerful for my needs and letting it run for too long would heat up my place too much. Thus, I added a wifi enabled controller to it so its operations are controlled by my home automation system.
Projects3D printingESP8266IoTElectronics

General purpose IoT button

General purpose IoT button thumbnail
Over the years, I have built multiple IoT devices ranging from AC controllers to ceiling lights. Usually, I would control those devices using my smartphone or computer but sometimes a physical button can be more convenient. Thus, I designed this simple IoT button which publishes MQTT messages when pressed.
ElectronicsIoT3D printingCADProjects

BLE presence detection

BLE presence detection thumbnail
I wanted my home automation system to detect when I arrive home so as to unlock my door automatically or let me know if I leave the apartment without turning the A/C off. I figured my smartphone could be used to achieve this since it is equipped with a vast array of sensors and connectivity options. For example, I could use an app like OwnTracks which would send an MQTT message once I enter a certain perimeter around my apartment. However, constantly monitoring one's GPS location is wasteful in terms of battery life. Another option would be to ping my phone's IP address to check if it is connected to the WiFi, but smartphones can sometimes take a while to connect. So, I decided to use BLE advertising, which does not use too much battery while still remaining constantly active.
ESP32ProjectsIoTBluetooth

Odroid XU4 server

Odroid XU4 server thumbnail
Having one's own server provides the ability to run web services 24/7. However, having a computer running all the time can significantly increase one's electricity bill. The objective of this project was to build a low power home server capable of running common software (Apache, Node.js, etc.) while only consuming little power.
3D printingProjectsLinux

Publish a module to NPM

This article is based on <a href="https://www.freecodecamp.org/news/how-to-make-a-beautiful-tiny-npm-package-and-publish-it-2881d4307f78/" rel="noopener noreferrer nofollow">this publiation</a>.
TutorialsNode.jsNPM