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.
- GUI standalone application
- IRC bot for LED control
- Web-based controller allowing control from any browser
- Headless server application for receiving external connections
- 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
- 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
- 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
- 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
- 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
- socket server allowing external client to connect and issue their own commands
- default port of 3001
- Information log showing messages from the application/Arduino
- shows number of ping/pong exchanges
- allows sending raw commands to the Arduino
Headless server application
- only argument accepted is the tty port to use
- entire GUI application functionality (minus presets) available
- controlled via socket commands
- commands delimited by ';'
- web based controller using PHP/HTML
- tested with Apache
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 firstname.lastname@example.org)
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.
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