A documented journey of a software developer

About Me




My name is Nassim Rhaiem, a graduate software developer with over one year of professional experience working with Microsoft Dynamics 365 and building CRM systems. In 2022 I graduated with a First in computer science at Coventry University, I value creativity and innovation and strive to apply these to anything I do. I take work as an opportunity to share a passion that originated from gaming. I have experience in collaborating in groups as part of a team inside and out of the professional setting as I work to develop games as a hobby that I value as a skill and a source of entertainment. I am always working in a shifting environment that contains new and unfamiliar challenges which present opportunities to learn from my peers to improve myself with preparations for any task at hand.

Background




My interest in software development began during my time at university where I was exposed to a wide range of languages and technologies, including C#, Java, JavaScript, and Python. I was particularly drawn to the problem-solving aspect of computer science and the ability to create something out of nothing.



Works




Investigating the impact of latency in NFC relay attacks using Arduino's

A relay attack was emulated using three Arduino UNO's: Imagine a scenario where you had your bank card at the back of your phone and in this scenario, your phone was infected with a virus that could read the card since it is in close proximity, the hacker could utilise that virus to act as a mole to relay the NFC interaction between a reader and the card itself. one Arduino would act as a reader, where two other Arduino's would act as a mole that reads an NFC card with information on it and a proxy that sends the request to the mole, recieves the response and sends it to the reader. The Arduino's communicated using Serial.py and were all connected to a laptop and the reader would recieve the connection, verify the information and return the time taken to finish this process. This time was compared with a legitimate interaction between the nfc card and the reader and it was discovered that there was a consistent, significant (as defined as over 500ms) increase in latency when a relay attack is attempted, with an increase in latency of at least 1022ms.


Output of the Arduino saying it has found a match, detecting a relayed signal and displaying the UID of the original card


Projects




Tiny Warfare

As a small team of three, I was the sole programmer for the of Ludum Dare 56 games jam. This time around I was able to implement complex game design paradigms such as finite state machines and global event singletons. This game was designed with the theme: "Tiny Creatures" in mind. This game was met with a very positive reception with people appreciating the art style as well as the progression system that was implemented. In this game you are challenged to see how long you can survive, in a place that, depending on which region you're in, influences the likelihood of which enemy bugs you will encounter, you will be able to level up and evolve to receive different abilities to survive the odds, but your enemies also adapt and become stronger...




Morello's Mediocre Night of Marvels

Participating in the global games jam 2024 with a team of developers, artists and designers from across the world including different states in USA, Italy, Puerto Rico and across the UK. Following the theme of "Make me laugh", we present: Morello's Mediocre night of Marvels, an ambitious platformer that requires finding depressed jesters and making them laugh, going through gags like the falling anvil to squish down to compact areas. I was a lot more experienced in Unity and programming concepts as well as handling version control to ensure a minimum viable product was achieved before the deadline of one week was due. I was able to assist my peers when roadblockers occured and was able to ascertain my own limitations when it came to developing the scope of this project.






Ruby's Adventure

Ruby's Adventure was my first experience using a game engine: Unity. Ruby's adventure is a Unity-provided tutorial on how to begin to design a small 2D game using sprites, animations and Object Oriented Programming with C#. I took this one step further, assigning different variations of NPCs, taking advantage of Unity's prefab system to create variations of enemies and characters that can do unique things such as changing dialogue when conditions are met and chaning movement patterns. Ruby must fix all of the robots in her village but perhaps someone else is pulling the strings. The game is available to play on Github and is the first major project I had taken outside of university.






Pace Maker: The Fitness App

Designing a fitness app from the ground up, utilising cloud computing to enhance the user experience with the Firebase API to store user login information securely. This app also uses mobile sensors such as the accelerometer to detect and count footsteps, to approximate burned calories for the sole purpose of aiding a healthier lifestyle in a clear, accessible interface, such features include using the MVVM model, Inversion of Control and tabbed pages for the UI.


A login page that uses the Firebase authentication to securely login or register to the app. Footstep counter that uses accelerometer to detect steps and calculates number of calories burned.





ChadBot: The Discord Chef ChatBot

Inspired by a friend and chef: Chad, a chatbot was developed using Discord's API and Edamam's recipe API that can recall any recipe in its database when asked for a recipe containing a key word, alternatively, random recipes can be selected and the nutritional values of the recipes can be indexed and provided, which is acheived using event callbacks. This was the first University project that I had done and was priveledged to work on this with others who also made significant contributions and this project introduced me to version control and programming in a team.


Output of the Chatbot explains the recipe of a Beef Teriyaki.





Weather prediction using AI

Using a dataset that provides information of the weather in Australia from Kaggle, the data was preprocessed via scrubbing of irrelevant and incomplete data, Encoded using OneHotEncoder to assign value to strings such as weather types which are non numerical. The model was trained and compared to a scaled size of the dataset, the more optimal of the two was chosen. Logistic Regression and K Nearest Neighbour (KNN) was used to predict if it would rain today. The models produced high levels of accuracy each, and were tuned to further increase predictibility using grid search and randomized search to find the optimal hyperparameters for Logistic Regression and the optimal number of neighbors for KNN. Confusion matrices and cross validation were performed to analyse the accuracy and precision of the training models. In conclusion: Both models succeed in classifying if there will be rain tommorow. The Logistic Regression model was the better model with a perfect accuracy when tuned whereas KNN had high accuracies of 89% when tuned


Results of the KNN Tuning shows a weak recall for classifying features with values of No and a strong recall for values of Yes. Results of the Logistic Regression Tuned model produces perfect scores


Contact.








References




Available on request.