Shot Atlas
From an idea for a frame to a plan for the whole shoot. Organise scenes, attach storyboards and track progress in private saved productions.
- Version-checked saves
- Private image uploads
- Schedules, shot cards and backups
Creative tools, computer science experiments and the work behind them.
Production planning and data quality, with complete workflows and documented engineering decisions.
From an idea for a frame to a plan for the whole shoot. Organise scenes, attach storyboards and track progress in private saved productions.
Find missing values, duplicates and inconsistent formatting. Preview a cleaning recipe against the original, then export a clear record of what changed.
New JavaScript demonstrations inspired by my coursework. These are standalone learning experiences, separate from the original C and Python implementations.
Change a time quantum. Watch processes compete for the CPU. Understand the trade-off.
Open scheduling simulatorBuild a maze and watch A* find a shortest path. Turn abstract search into something tangible.
Open pathfinding playgroundRate a few films. See how similar viewers influence your next recommendation.
Open recommendation explorerA complete production workflow: private saved productions, storyboard uploads, shot scheduling, progress tracking and exports.
Launch Shot AtlasA local workflow for transcription, synchronised subtitle editing and SRT / WebVTT export.
Explore the projectExplore the relationship between fraud thresholds, review workload, precision and recall on synthetic data.
Launch SignalExplore my university, personal and fellowship work, from operating systems to applied machine learning.
11 projects
Implemented a two-player TCP service, client API and binary message framing in C.
Per-game threads and mutexes coordinate concurrent games; defensive message handling covers disconnects and malformed input. The game engine was supplied.
C · TCP sockets · pthreads · mutexes · binary protocols
A configurable CPU scheduling simulator with multiple priority queues and round-robin time slices.
Implemented I/O blocking and unblocking, queue demotion, periodic priority boosts and command-line configuration. Separating processes, queues and scheduling keeps the simulation understandable.
C · queues · scheduling · command-line tools · GCC
A 2D arcade game organised around shared entity behaviour and object-oriented design.
The design report describes collision handling, configurable game data, waves and polymorphic powerups. Inheritance and shared interfaces keep related game objects consistent.
Java · inheritance · polymorphism · collision detection
Compared classification pipelines for recognising 43 traffic-sign classes.
Evaluated SVM, Random Forest, MLP and stacking approaches using provided image features and HOG descriptors. The report examines model selection and misclassification patterns.
Python · scikit-learn · HOG · cross-validation · error analysis
Implemented multinomial Naive Bayes to classify SMS messages and explored learning from unlabelled examples.
Used confidence-based self-training to expand the training set and compared its classification results with the supervised baseline.
Python · Naive Bayes · text processing · semi-supervised learning
Logistics data modelling and research-data queries across database coursework.
Designed a 14-table logistics schema using Chen and Crow’s Foot notation. Query work includes joins, grouping, subqueries and window ranking, connecting database design with analytical questions.
SQL · MySQL Workbench · ER diagrams · relational modelling
A single-player search solver and a team exploration of adversarial game search.
Part A includes an A* based solver with legal move and jump-chain generation. The Part B report describes minimax, alpha-beta pruning and iterative deepening for a two-player agent.
Python · A* search · move generation · minimax · alpha-beta pruning
Explored Victorian remoteness and housing price changes for a local-government audience.
Combined data cleaning, dataset joins, decision-tree classification and regression. The team communicated findings and limitations through a report and presentation.
Data preparation · dataset integration · decision trees · regression
A UML class design for a taxi simulation with drivers, vehicles, passengers, trips and screens.
Mapped responsibilities and relationships between game objects, separating gameplay entities from screen behaviour. This entry showcases the class design.
Java · UML · class relationships · object-oriented modelling
A React portfolio with a FastAPI backend and MongoDB data models.
Includes routed pages, reusable interface components, a persisted theme preference, searchable articles, portfolio API routes and validated contact-message storage.
React · Tailwind CSS · FastAPI · Pydantic · MongoDB
RepositoryExplored personalised recommendations through user-based and item-based collaborative filtering.
The project work involved data preprocessing, feature engineering and presenting findings to peers.
Python · collaborative filtering · preprocessing · feature engineering
Each area connects to a project where I have applied it.
Python, C, Java, JavaScript, SQL, HTML and CSS. Git for version control and structured project documentation.
Explore MLFQ SchedulerTCP sockets, binary protocols, threads, mutexes, CPU scheduling, queues and command-line programs.
Explore Battleship Client-ServerReact, Tailwind CSS, FastAPI, Pydantic and MongoDB. Responsive interfaces, API integration, validation and browser storage.
Explore Digital Portfoliopandas, scikit-learn, data cleaning, feature engineering, classification, regression, cross-validation and model evaluation.
Explore Traffic Sign PredictionSQL queries, joins, aggregation, subqueries, window functions, ER diagrams and MySQL Workbench.
Explore Database SystemsA* search, game-search concepts, collaborative filtering, object-oriented design, inheritance, polymorphism and UML.
Explore Freckers