Project Showcase
Nawar Ismail
Software
Python Automation and Device Integration
| 2021 - 2023
This automation software enables users to define versatile entry points to their python functions using decorators for automation.
Create a function that launches a game, uses GUI automation to fill out a form, or launch your work applications - then simply wrap the function in a decorator.
For example, with the line `@SteamDeck(location="Games/1,1")`, the function can be executed from the streamdeck hardware.
The `@Google(phrase=["launch", "game"])` decorator will run your function with a voice command!
Now you can control my monitors, automate work functions, and set up games in whatever way is easiest.
Don't forget, all functions are also accessible through a CLI, GUI CLI (gooey), and GUI (streamlit)!
- Connect Python to services and devices.
- Easily Integrate Functions with a couple lines of code.
- StreamDeck launches custom python functions with a button.
- Google Assistant launches custom python functions with a voice command.
- Created Python wrappers to integrate several applications:
Mathematical Game Analysis and Strategy Optimization
| 2020 - 2024
This project is dedicated to unraveling the secrets hidden deep within the intricate complexity of the renowned video game Old School Runescape (OSRS).
Join us on a tough but rewarding journey as we dive deep into the mathematics of video games!
Whether it is modeling the game mechanics, optimizing player decisions, or creating powerful visuals, there is something interesting for everyone.
Video games serve as large bodies of complex problems that are heuristically solved by human players.
Since this is a game that is played over months, years, and now literally decades, players have devised optimal strategies for nearly every piece of content in this iconic old video game.
By studying these problems mathematically, whether through simulation or mathematical derivation, this project gives our clueless adventurer a chance to understand their universe.
- Open Source Project to Optimize Player Choices to maximize efficiency.
- Complex Algorithms such as Dijkstra's shortest path algorithm, search space reduction, and Markov chain analysis.
- Video Series discussing the solutions to these problems.
- Improved Predictions using mathematical models that often give exact solutions.
- Summarized Existing Knowledge of game mechanics, in pdf document.
- Conducted In-Game Data Collection to validate & collect 'experimental' data.
- Written in: Latex, Python, Math.
Robotics Simulation Using Neural Networks (C++/OpenGL/Python)
| 2015 - 2019
This project uses reinforcement learning to train simulated robots that act as mechanical creatures.
With pistons (muscles) controlled by neural networks (brain) supported by rods (bones), the creatures are evolved using the genetic algorithm to perform tasks of increasing complexity.
Whether it is walking in two dimensions, learning to jump or walk up hill, or using their primitive vision system to hunt down food in 3D, they are incredible to watch.
I wrote this 3D physics engine in C++ and rendered it in OpenGL (yep, I love dependencies!).
After years of tinkering, I had the privilege of studying this academically, even achieving a publication!
- Neural Networks control creature movement
- Vision System identifies different objects and feeds into brain
- 3D Physics and Graphics written using OpenGL.
- Genetics model physical components as set of mutable genes
- Procedural Terrain gives creatures varying training environments
- Multi-Threaded to greatly improve algorithm performance
- Written in: C++
Fractal Animations in Java
| 2019
Reflecting on a mathematical problem that stumped me in high school, I revisited the problem with newfound insight during my education.
It involved arranging circles within a triangle or square, starting from the largest in the center and progressively smaller ones in the corners.
Determining the radius of the nth circle proved elusive until I could revisit it with my accumulated mathematical knowledge.
With a deeper understanding, I realized its connection to the concept of recursion, leading to the fascinating realm of "trigonometric fractals".
For circles within a polygon, the solution involves tangent. If instead, you place the circles outside the polygon, you get a solution of sine.
It is still a mystery - what is the picture that relates to cosine? The equations suggest a third solution... perhaps you can crack it?
- Animations for different polygons
- Ratio of the successive circles placed in the corner of a polygon
- Ratio of the successive circles placed on the edges of a polygon
- Can you find the third fractal? Ratios related to sin and tan were found, where is cos?
- Written in: Java, Math
Multi-Device Multi-Monitor Manager
| 2018 - 2019
Aiming to enhance the productivity surrounding multiple monitors, I encountered the tedious task of configuring input sources and display settings.
If I want my MacBook on the left and my PC on the other monitors - and then want to use the full PC again, or if I want to put a laptop on the right for co-op games,
then I would have to navigate through so many interfaces, just to switch it back an hour later.
Since my monitors support daisy-chaining, I had to implement an algorithm that solves the inverse problem of "what settings are required to put these devices on these screens?".
After successfully automating that task, I continued on to make a more robust automation software.
- Automatically Updates Input Sources to display requested devices on desired monitors
- Simple JSON used to model connections and devices
- Recursive Daisy-Chaining Algorithm developed to determine device shown on monitor
- Brightness and Contrast Controls for both individual and global settings
- Written in: Python using Tkinter GUI
Degree Planning Software
| 2015 - 2016
This utility software streamlines the process of gathering course details from a university's website.
It handles the tedious logic surrounding prerequisites, restrictions, semester offerings, and more, sparing you the hassle.
Simply upload your current transcript and effortlessly map out your future courses with confidence!
For students who deviate by aiming for extra minors, subsequent degrees, or who change their path, this makes it all easier to manage.
- Webscraper extracts courses from university website
- Syntax Parser to identify and classify: prerequisites, restrictions, etc.
- Pleasant GUI colorfully organizes information
- Full-Featured including instantly extracting courses from unofficial transcript
- Cache & Database makes course information retrieval fast!
- Written in: HTML, CSS, Javascript, PHP, Python. Using Jquery & Bootstrap.
Command Line RPG
| 2015
My first major programming project was a story-based game featuring the adventures of the Wizard Palfore, tasked with saving the world.
It was a fantastic learning experience where I had the chance to implement lots of fun features.
From colorful icons to simple combat mechanics, mini-maps, and puzzles - all within the terminal.
It was a rewarding journey into game development, ultimately leading to my 3D robotics simulation.
- Help Palfore the wizard protect the world!
- Solve Riddles and Puzzles to get to the four towers
- Fight your way through enemies
- Map your journey and retrace your steps
- Written in: C
Other
Productivity Work Station
| 2015 - Active
As an avid programmer, my workstation is the center of my productivity. Over time, I've transformed my setup from a simple laptop to a full-fledged battle station.
This includes a custom-built desktop computer, standing legs for some variation, a split keyboard for a better typing experience,
and a StreamDeck for customized automations.
Switcher hardware is used to toggle between different devices, for example an audio switcher can change between headphones and speakers seamlessly, so too with a work/personal laptop/desktop, and so on.
- Custom Built PC rocking an AMD 3800x and Nvidia RTX 2070 Super
- Standing Desk Legs to alternate between standing and sitting
- Split Keyboard for maximum ergonomics
- Stream Deck to simplify tasks (see the Pybiosis project).
Simple Physics Problem Revisited
| 2017
One of the first systems we learn about in physics is projectile motion in 2D, which governs how objects move after being thrown.
This is typically done in terms of the distance along the ground and the height in the air over time.
A simple twist on this is representing the coordinates as an angle and distance from the launch site over time.
These are called polar coordinates, and its nice to see such a common problem in a novel form.
- Standard First Year Problem done from a different perspective!
- Interesting Insights coming from geometric interpretations
- Applying Limits let's us understand how the equations react to weak/strong gravity, for example.
- Coordinate Conversion from Cartesian to Polar
Minecraft Redstone Game (Circuits)
| 2012 - 2014
My first major project was building a series of circuits into a simple game within the renowned game Minecraft.
The in-game mechanic of "redstone" accurately mimics the logic of electrical circuits and, for those curious enough, turns this game into a 3D circuit simulation.
After three years of learning everything about logic gates (AND, OR, NOT, ...), circuits (adders, 7-segment displays, PRNGs, ...), and design, I finished implementing the classic gym-class game "Prey vs Predator" within Minecraft!
After learning how to program in html and javascript, this 2-3 year long project took about 2-3 days... time well spent!
- Classic Gym Class Game but built in redstone circuit logic!
- Simple Computer Logic like calculators, memory, random number generators and displays!
- AI Controlled Predator and Prey to avoid / target
- Super fast! Okay, you got me, it takes 10 seconds to move one icon