Object Oriented Program with Python for the automation of a
core manufacturing process at ENPULSION GmbH in order to
scale-up production capabilities. This project included the
following:
- Interactive user-friendly GUI with Tkinter which displays
critical process parameters and has the option to apply manual
overrides to otherwise automatic parameters.
- Real time Matplotlib monitoring graphs.
- Feedback loop control program capable of taking user-like
decisions based on control parameters from sensors monitoring
the process.
- Data logging capability.
- Custom process procedure definition script loading and
execution capability.
A simple graphical interface was created with tkinter to display a heat map of the sensors array currents as well as the result of some calculations in real time.
A physical model was developed in Python for the theoretical
calculations and thrust predictions of the experimental IFM
Nano Thruster SE (Segmented Extractor). This physical model
implements plasma physics equations and vector mathematics
calculations to obtain the theoretical estimation of thrust
vector and magnitude for the thruster with segment voltage
settings as additional model input, which are then compared
with experimental results as the subject of this Master
Thesis.
In addition, a control model was also developed in Python,
which is basically an algorithmic solver able to find the
approximate thruster and segments voltage settings to obtain
some user given target thrust magnitude and direction.
I prepared several post-processing scripts at ENPULSION GmbH to process the data coming from ion thruster performance tests at the lab. The results included thruster performance calculated parameters and performance plots for the test reports. Pandas dataframes and data cleaning and wrangling techniques were used with Python, as well as Matplotlib for the plots.
In this hands-on learning project of CS50’s Introduction to Artificial Intelligence with Python 2020 course, I worked on a program that must determine how many “degrees of separation” apart two hollywood actors are using a Search Algorithm. In this problem, we’re interested in finding the shortest path between any two actors by choosing a sequence of movies that connects them.
In this hands-on learning project of CS50’s Introduction to Artificial Intelligence with Python 2020 course, I worked on implementing an AI able to play the game Tic-Tac-Toe optimally using the Minimax adversarial search algorithm. Additionally, a pygame interface lets the user play the game against this AI in a graphic window.
In this hands-on learning project of CS50’s Introduction to Artificial Intelligence with Python 2020 course, I worked on a program able to solve logic puzzles. A propositional logic system is implemented with classes and methods to translate the knowledge statements and solve the puzzles.
In this hands-on learning project of CS50’s Introduction to Artificial Intelligence with Python 2020 course, I worked on an AI that can play Minesweeper. A Knowledge-based agent algorithm is implemented that can make decisions by considering its knowledge base, and make inferences based on that knowledge. Propositional logic is used to structure that knowledge in our program. A graphical interface to play the game, or let the AI play it, is implemented with pygame.
In this hands-on learning project of CS50’s Introduction to Artificial Intelligence with Python 2020 course, I worked on an AI that ranks web pages by importance.
In this hands-on learning project of CS50’s Introduction to Artificial Intelligence with Python 2020 course, I worked on an AI that calculates the probability that a person will have a particular genetic trait.
In this hands-on learning project of CS50’s Introduction to Artificial Intelligence with Python 2020 course, I worked on a program able to find satisfying assignment of words for a crossword puzzle given a certain vocabulary list. This is a type of optimization problem modelled as a contraint satisfaction problem.
In this hands-on learning project of CS50’s Introduction to Artificial Intelligence with Python 2020 course, I wrote an AI to predict whether online shopping customers will complete a purchase. The data for this project is from a shopping website with about 12,000 users sessions and 17 features to work with. The package Scikit-Learn is used. First, a "K-nearest neighbors classifier" is used to solve the problem. Later on, a "Decision Tree Classifier" together with grid search optimization are added to improve the predictions. Finally, a "Random Forest Classifier" is selected for the best results (more info in readme.md file of repository).
In this hands-on learning project of CS50’s Introduction to Artificial Intelligence with Python 2020 course, I worked on writing an AI that teaches itself to play Nim through reinforcement learning. After that, you can play against the AI. Try it out, I guarantee that you won't beat it! :)
In this hands-on learning project of CS50’s Introduction to Artificial Intelligence with Python 2020 course, I worked on an AI that can identify which traffic sign appears in a photograph. For this project, a TensorFlow neural network is built using Keras Sequential Model and then optimized for the task at hand, i.e. recognition of road signs from images. The German Traffic Sign Recognition Benchmark (GTSRB) dataset is used for our model, which contains thousands of images of 43 different kinds of road signs. After extensive fine-tuning the model, an almost perfect 98% accuracy is achieved on test data.
In this hands-on learning project of CS50’s Introduction to Artificial Intelligence with Python 2020 course, I worked on implementing an AI that can parse sentences and extract noun phrases from them. In this problem, I use the context-free grammar formalism to parse English sentences to determine their structure with the aid of some tokenization functions of package nltk.
In this hands-on learning project of CS50’s Introduction to Artificial Intelligence with Python 2020 course, I worked on coding an AI that can answer questions given a corpus of text for it to search answers from. It is based on inverse document frequency (tf-idf) and nltk functions are used for tokenization and stopwords removal.
NumPy arrays were used to manage data from 252 current sensors (segmented collector). NumPy mathematical operations were also used for scientific calculations.
Pandas dataframes and data wrangling methods were used to perform data science for the production and test for thrusters at ENPULSION GmbH.
Matplotlib was used to obtain a range of scientific plots used for my Master Thesis: Performance mapping of a FEEP thruster with thrust vectoring capabilities.
Matplotlib was used to obtain thruster performance plots from test data at ENPULSION GmbH.
Matplotlib was used to obtain useful visualizations for exploratory data analysis as well as for data trend visualizations and presentations.
In this hands-on learning project, project 1 of the CS50's
Web Programming with Python and JavaScript 2018 course, I
built a book review website with Flask with the following
characteristics and functionality:
- The flask web app is hosted on Heroku and uses a Heroku
Postgresql database.
- Users are able to register and then log in using their
username and password.
- Once they log in, they will be able to search for books,
leave reviews for individual books, and see the reviews
made by other people.
- A third-party API by Goodreads is used to pull in
ratings from a broader audience.
- Queries for book details and book reviews can be
programmatically obtain via the built website’s API as
well.
Some of the challenges encountered included:
* Learning how to host and access a Postgresql database on
Heroku.
* Learning hot to deploy an app on Heroku.
* Learning how the flask framework works.
* Learning how a web responsive front-end works using CSS
and Bootstrap.
* Learning how to use SQL to interact with the
database.
In this hands-on learning project, project 2 of the CS50's
Web Programming with Python and JavaScript 2018 course, I
built a instant messaging app with Flask and SocketIO,
with the following characteristics and functionality:
- The flask web app is hosted on Heroku and uses a worker
class eventlet to run Socket-IO.
- The user can choose an temporary username and create or
join rooms for public instant messaging.
- Private conversations are also possible, and badge
notifications appear after receiving a new private
message.
- The sending of files is also supported through
SocketIO.
- The last 100 messages of each channel are stored using a
circular buffer.
Some of the challenges encountered included:
* Learning to use JavaScript to run code server-side with
AJAX.
* Learning how to use SocketIO and its integration with
the client side (JS) and serve side (flask_socketio).
* Learning how to implement a ring buffer.
* Learning how to send files through SocketIO using a file
reader, storing it server side and displaying it on the
conversation.
* Deploying the app on Heroku and getting SocketIO worker
to work.
Working at LGFM, a food delivery company from Spain, I
developed full stack with a focus on Backend and Django
engineering:
I was responsible for maintaining, improving and deploying
updates for the main company Django backend handling
thousands of users and interactions per day with hundreds
of orders per day. This system includes:
- Android app backend.
- Web app backend.
- Admin web backend.
- External selling channels – system integrations.
- Integration with kitchen order management systems.
- Centralized database handling.
- Data analysis, stock management and more additional
system integrations
In addition, extensive front-end programming experience
using React and Typescript. Developed from scratch a
re-designed, responsive, more modern and user-friendly
version of the company admin website where all products,
kitchens and integrations are handled, using React,
Typescript and Django DRF
In this project I developed and hosted my personal
portfolio website (this site) with the following
features:
- Brochure page with responsive Navbar.
- About page with skills breakdown.
- Project cards section with automatic selection of cards
by topic buttons.
- Contact section with form and automated email
sending.
- Tree view specific experience pages with links to
projects and code.
- Django backend and admin model way of adding project
elements.
- Django Templating HTML and Javascript frontend including
design and animations.
Some of the challenges encountered included:
- Self-hosting of the Python Django application in a
production environment was challenging to learn and
implement using Cpanel and automatic git version control
and deployment.
- Static files hosting in AWS S3 bucket and connection
from hosting server.
- Email server configurations in the hosting server for
automatic email sending and receiving.
- Programming of the automatic project cards selection
feature.
In this project I developed and hosted a personalized
business website for a client with the following
features:
- Brochure page with custom made theme design and
javascript features.
- Responsive Navbar
- Automatic pop-up sign-up box with automatic contact
additions to a database.
- Contact section with form and automated email
sending.
- Additional service and product description pages and
price pages with links to booking.
- Gallery section with animations.
- Django backend and admin model way of adding products
and prices.
- Django Templating HTML and Javascript frontend including
design and animations.
Some of the challenges encountered included:
- Self-hosting of the Python Django application in a
production environment with c-panel.
- Static files hosting in AWS S3 bucket and connection
from hosting server.
In this hands-on learning project, project 3 of the CS50's
Web Programming with Python and JavaScript 2018 course, I
built a Django web application for handling a pizza
restaurant’s online orders, with the following
characteristics and functionality:
- User account system storing shopping cart data and
orders in a SQLLite database.
- Products catalogue stored in SQLLite database and
changable by admin through the admin page.
- The restaurant menu can be browsed, and items can be
customized and added to shopping cart.
- Shopping cart view lets the user change number or delete
items.
- Stripe API integration for payment/checkout system.
- Admin can view orders in admin page and mark them as
pending or complete.
- Users can see the status of their orders.
- Navigation menu with shopping cart badge dynamically
indicating the number of items in the shopping cart.
Some of the challenges encountered included:
* Learning how to use the Django Web Framework, including
the view, model and template layers.
* Creating the back-end to handle all necessary ecommerce
operations with Django and Python.
* Designing a good Relational Database to correctly handle
user shopping carts with customizable products (Foreign
Keys, Many-to-many relationships, etc).
* Utilizing JavaScript for more complex funtions and
AJAX.
. * Learning how to customize the admin site
with Django.
* Learning how to create a responsive and dynamic website
with CSS and JavaScript.
Note: The following test card numbers can be used to test
the checkout system:
No authentication: 4242 4242 4242 4242.
Authentication required: 4000 0027 6000 3184
In this project I implement an example API with Django
REST Framework to interact with a parallel-processing
satellite imagery rendering backend with the following
features:
- CRUD (Create,Read,Update,Delete) API functions for the
management of processing batch jobs.
- Job-create consistency checks.
- Automatic imagery file download and extraction when not
available.
- RGB image composition and rendering from Sentinel-2 MSI
bands using Pillow.
- Job-run API function performing the above tasks
according to a given batch job utilizing Python's Standard
Library Multiprocessing.
- Dockerization.
Some of the challenges encountered included:
* Getting the program to download the image product
automatically from copernicus hub API when not available
in local folder.
* Understanding and implementing the RGB image composition
algorithm from individual bands.
* Learning about containerization with Docker for adding
the Dockerfile and how to use it.