Build an AI-Powered Exam Marking Tool

The project outlines the creation of an AI-based examiner tool that automates the marking of handwritten GCSE exams. Teachers can upload scanned PDFs, and in 20-30 seconds, receive detailed feedback reports formatted as .docx files. Built using Python, Flask, and Gemini AI, it offers an efficient marking solution while ensuring data privacy.

C++17: Efficiently Returning std::vector from Functions

The discussion centers on returning std::vector from C++ functions, highlighting Return Value Optimization (RVO) introduced in C++17. RVO allows the compiler to avoid copying vectors by constructing them in place when there's a single return path. For multiple return paths, std::move is used to transfer ownership efficiently. Exceptions exist, particularly with the conditional operator, which requires copying. Returning references from member functions is safer than from free functions since the object's lifetime ensures validity.

Mastering DataOps: Orchestrating AWS Glue Workflows

The implemented stages of ingestion, preprocessing, EDA, and feature engineering have transitioned to automation and monitoring, forming a cohesive DataOps layer. By introducing orchestration, the independent Glue jobs become an automated, reliable workflow. Testing confirmed successful execution, paving the way for regular automations to enhance operations and insights from data.

Training and Evaluating ML Models with AWS Glue

This post details the development of a Machine Learning Pipeline for demand forecasting. Utilizing AWS Glue and PySpark, it covers training and evaluating Linear Regression and Random Forest models using an engineered feature dataset. Results show Random Forest slightly outperforms Linear Regression, demonstrating effective model stability and reliability for deployment.

Mastering Feature Engineering for Machine Learning

The Feature Engineering stage follows Exploratory Data Analysis, preparing the dataset for machine learning. It generates temporal and statistical features, encodes categorical identifiers, and ensures schema consistency. Implemented in AWS Glue, it enables reproducibility and scalability for model training, enhancing forecasting accuracy by incorporating lag and rolling average features.

Enhancing Your ETL Pipeline with AWS Glue and PySpark

The post details enhancements made to a serverless ETL pipeline using AWS Glue and PySpark for retail sales data. Improvements include explicit column type conversions, missing value imputation, normalization of sales data, and integration of logging for observability. These changes aim to create a production-ready, machine-learning-friendly preprocessing layer for effective data analysis.

Building an ETL Pipeline for Retail Demand Data

This project aims to develop a demand forecasting solution for retail using historical sales data from Kaggle. A data pipeline employing AWS Glue and PySpark will preprocess the data by cleaning and splitting it into training and testing sets. The objective is to maximize inventory management and customer satisfaction.

How Did I Run and Containerise My First Flask App?

The article discusses the challenges of consistent application behavior in software development and how Docker addresses these issues. It outlines the creation of a simple Flask app, its containerization using Docker, and steps to ensure accessibility from outside the container. Troubleshooting and cleanup procedures are also covered, emphasizing a portable setup.

Introduction to Multi-Threaded Programming: Key Concepts

This blog post discusses how multi-tasking enables efficient CPU time-sharing among programs, allowing them to seemingly run simultaneously on a single-core processor. The OS scheduler manages task switching, allowing programs like a music player and a word processor to share CPU time effectively. Context switching is a rapid process that gives the appearance of parallel execution. However, distinct processes have isolated memory spaces, complicating data sharing. Threads within a process, on the other hand, share address space, simplifying communication and resource management. This post also introduces the pthread library for creating threads in C, showcasing the practicality of multi-threading.