index posts opinions likes dislikes interesting cgit


Outdated list of some of my projects

GitHub Profile

RGB Controller

C/C++, PHP, HTML, cross platform, Qt Framework, Arduino

Code on GitHub

Using an Arduino, C/C++ and the Qt Framework I have created a controller that allows you to control the colours of an RGB LED strip.


room1 room2 room3
GUI application

RGB controller 1
  • status preview indicating current connection state
  • dropdown list populated by available serial ports
  • refresh button allowing the user to repopulate the dropdown
  • convenient connect/disconnect buttons
  • UI elements enable/disable appropriately
  • ping/pong system to keep the Arduino and host computer connected

RGB controller 2
  • sliders for modifying red, green and blue values
  • updates dynamically as you move the sliders
  • red, green and blue buttons for setting solid colours
  • off button to turn all colours off

RGB controller 3
  • allows fading of each red, green and blue channel dynamically
  • fade from and to values to allow precise fade control of each colour
  • toggle buttons to begin/end the fade of each colour individually
  • sliders to modify the speed of each colour individually
  • single slider that changes all colours speed at once, confirm button

RGB controller 4
  • presets stored locally in a text file and is parsed
  • dropdown menu listing all saved presets
  • button to load the current selected presets values
  • reload button allowing users to reload presets if changed externally
  • allows the user to save the current colour values, requires a name to be given
  • delete button to delete the currently selected preset, confirmation box displays

RGB controller 5
  • IRC bot allows commands from a single user, example "!send off;red=255;blue=255"
  • input boxes for the server, port, channel and bot name
  • automatically detects disconnections and attempts to reconnect

RGB controller 6
  • socket server allowing external client to connect and issue their own commands
  • default port of 3001

RGB controller 7
  • Information log showing messages from the application/Arduino
  • shows number of ping/pong exchanges
  • allows sending raw commands to the Arduino

Headless server application

Server application 1

Web controller

Web controller 1

Slack logging

Python, MongoDB, Slack API, PHP, HTML

Code on GitHub

Considering Slacks free tier doesn't provide permanent data retention this script was created to allow permanent logging of our channels.

When run 2 API calls are made, one collecting channel information (names, ID's) the second user information (user id's, names, real names etc). A subsequent API call is made for each channel requesting the message history of that channel. The number of messages requested is configurable. Once this call is complete the script runs through each message. using the timestamp as a unique identifier (this is guaranteed to be unique in only the channel requested) the message is logged to the MongoDB database. If the API indicates that the message has been edited (adds a section to the response) the script checks if that message timestamp exists in the database in the specific channel (the same timestamp can exists in two channels!), if it does not, it adds it. However, if it does already exist the message content is checked with what is stored, if they don't match the newer message is stored.

The script can convert user id's to user names (and back), the same with channel id's and names.

database credentials and other important configurable variables are stored in a .cfg file for easy configuration.

Discord logging bot

Python, MySQL, PHP, HTML

Code available upon request (request via admin@danieljon.es)
demonstration available here (bot no longer running since I parted ways with the Discord server)

Using Python, a MySQL database and a combination of PHP and HTML I have created a Discord logging bot that was designed to log every channel on r/GlobalOffensive's Discord server. We required this tool because bot deletions were not logged to the audit log at the time - we needed a way to see why people were banned/muted.

Conway's Game of Life in C using ncurses

C, ncurses, game

Code on GitHub

Using C and the ncurses library I have created a clone of Conway's Game of Life.

The arrow keys control the cursor, pressing space changes the selected cells value (either dead or alive). Pressing 'g' begins the simulation, 's' steps the simulation by one generation and 'c' clears the field.

Website generator


Code on GitHub

Considering my website previously was bloated, slow and relied heavily on php and databases I created a static website generator using python that allows me to create and publish my website dynamically. This project was designed for my personal website https://danieljon.es

page generated 2018-11-20 20:26:21 using sitegenerator