{"id":66,"date":"2017-09-22T12:42:19","date_gmt":"2017-09-22T12:42:19","guid":{"rendered":"https:\/\/franz.ayestaran.dev\/?page_id=66"},"modified":"2026-09-17T15:13:58","modified_gmt":"2026-09-17T15:13:58","slug":"portfolio","status":"publish","type":"page","link":"https:\/\/franz.ayestaran.dev\/?page_id=66","title":{"rendered":"Projects"},"content":{"rendered":"<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;LLM Training Dashboard<\/b> <i>(AI-Augmented Software Engineering)<\/i><\/i><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;May 2026 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/dashboard.llmtraining.dev\" target=\"_blank\">https:\/\/dashboard.llmtraining.dev<\/a><br \/>\n<a href=\"https:\/\/ollamacloud.dev\" target=\"_blank\">https:\/\/ollamacloud.dev<\/a><\/p>\n<p><!--Hosted on a bespoke Linux <b>Debian 12<\/b> (Bookworm) Server using... <b>Nginx 1.22.1<\/b>, <b>Node 20.10.0<\/b> and <b>PHP 8.2.29<\/b>\n--><br \/>\nHosted on an <b>Apple M2 Pro<\/b> system (<b>Darwin 25.5.0<\/b>, <b>arm64 architecture<\/b>) featuring a <b>10\u2011core CPU @ 3.5 GHz, 16 GB unified memory<\/b>, and <b>Metal\u2011accelerated Apple M2 GPU<\/b> with up to <b>16 GB VRAM<\/b> shared bandwidth.<\/p>\n<p>The LLM Training Dashboard is a tool I built to make modern artificial intelligence easier to understand, experiment with, and improve. Large Language Models (LLMs) \u2014 the type of AI behind tools like ChatGPT \u2014 are normally very complex and difficult to work with. My dashboard turns this complexity into something visual, interactive, and approachable.<\/p>\n<p>Instead of writing long technical code, a user can upload a dataset, choose how they want the AI to learn, and watch the training process unfold in real time. The dashboard shows what the model is paying attention to, how it understands words, and how its internal \u201cthought patterns\u201d change as it learns. These visualisations help people see why the AI behaves the way it does, not just what it produces.<\/p>\n<p>The system is built as a full software application, with a web interface, a training engine, and a set of tools for exploring how the AI works internally. It runs on cloud servers and can train real AI models used in industry. This makes it useful for teaching, research, and practical experimentation.<\/p>\n<p>Overall, the project demonstrates the ability to design and build a complete AI system from scratch \u2014 one that combines software engineering, machine learning, data handling, and user\u2011centred design. It provides a clear, accessible way to explore how modern AI models learn and make decisions, making it valuable for both education and advanced research. It was primarily developed as a tool for AI Village on an Apple MacBook Pro 16\u2033 M1 MAX with 32GB 1TB.<\/p>\n<p><b>Core Capabilities<\/b><\/p>\n<p>A fully integrated platform for pre-training support, fine\u2011tuning, analysing, visualising, and deploying large language models. Key capabilities include:<\/p>\n<p><b>\u2022 Portable. Train &#038; infer anywhere. Agnostic. Fully air\u2011gapped.<\/b><br \/>\n<b>\u2022 4 Training Modes<\/b>, LLM, Gene Sequencing, Molecular AI and Scientific Graph<br \/>\n<b>\u2022 12\u2011level transformer interpretability stack<\/b>, from embeddings to activation flows and concept neurons<br \/>\n<b>\u2022 Emergent Collective Intelligence<\/b> (query a cluster of LLMs)<br \/>\n<b>\u2022 Gene Sequencing<\/b>, Interactive gene\u2011to\u2011variant mapping with real\u2011time 3D DNA visualisation and functional annotation<br \/>\n<b>\u2022 Molecule Builder<\/b>, Small Molecule and Macromolecule<br \/>\n<b>\u2022 End\u2011to\u2011end LLM training pipeline<\/b> supporting LoRA, QLoRA, pre-training support, full fine\u2011tuning across MLX (Apple Silicon) and CUDA (NVIDIA) backends<br \/>\n<b>\u2022 Dataset preparation and validation tools<\/b> with multi\u2011format import, automatic tokenisation, and dataset integrity checks<br \/>\n<b>\u2022 Real\u2011time system telemetry<\/b> for CPU, GPU, RAM, VRAM, disk I\/O, network throughput, and training\u2011stage metrics<br \/>\n<b>\u2022 One\u2011click GGUF export and Ollama deployment<\/b>, including automatic model registration and versioning<br \/>\n<b>\u2022 Interactive 3D interpretability visualisations<\/b>, including Brain Atlas, Embedding Galaxy, attention flows, tensor heatmaps and checkpoint comparison<br \/>\n<b>\u2022 Hugging Face Sync<\/b> with Auto\u2011Quant, LoRA import, and Refresh mode via direct repository URL<br \/>\n<b>\u2022 Native\/Comparable training profiles<\/b> enabling reproducible experiments across MLX and CUDA environments<br \/>\n<b>\u2022 Feature\u2011Space Geometry tools<\/b> (PCA, concept directions, neuron clusters, behavioural subspaces)<br \/>\n<b>\u2022 Mobile\u2011responsive dashboard<\/b> with adaptive layout for tablets and smartphones<br \/>\n<b>\u2022 Internationalisation (i18n)<\/b> with full Tier 1 &#038; Tier 2 language coverage (10 languages)<br \/>\n<b>\u2022 Integrated model management<\/b>, including checkpoints, logs, metrics, and training history<br \/>\n<b>\u2022 Cross\u2011platform deployment pipeline<\/b>, enabling seamless transition from local training \u2192 cloud inference<br \/>\nBuilding on the dashboard\u2019s interactive visualisation capabilities, the following section introduces the interpretability layer that extends model analysis into a spatial cognitive framework.<br \/>\n<b>\u2022 3D Scene Export<\/b>, supports direct GLB export of Brain Atlas, Embedding Galaxy and Feature Space Geometry<br \/>\n<b>\u2022 Cross\u2011platform<\/b>, running natively on Linux, macOS and Windows<br \/>\n<b>\u2022 Precompute<\/b>, accelerates inference by caching model outputs for instant reuse<\/p>\n<p><b>ML &#038; DL Training Features<\/b><\/p>\n<p><b>\u2022<\/b> Integrated Machine Learning (ML) and Deep Learning (DL) training pipeline within the dashboard<br \/>\n<b>\u2022<\/b> Supports classical ML models (Logistic Regression, SVM, Decision Trees) and neural architectures (MLP, CNN, custom PyTorch models)<br \/>\n<b>\u2022<\/b> Unified dataset workflow: upload \u2192 preprocessing \u2192 validation \u2192 training \u2192 evaluation<br \/>\n<b>\u2022<\/b> GPU\u2011accelerated training with real\u2011time metrics (loss, accuracy, validation curves)<br \/>\n<b>\u2022<\/b> Interactive visualisation of training progress and model performance<br \/>\n<b>\u2022<\/b> Modular architecture enabling rapid experimentation across heterogeneous model families<br \/>\n<b>\u2022<\/b> Consistent UI\/UX shared with LLM fine\u2011tuning, ensuring a seamless multi\u2011model training experience<br \/>\n<b>\u2022<\/b> Exportable model artefacts for deployment, benchmarking, and reproducibility<br \/>\n<b>\u2022<\/b> Designed for comparative studies across ML, DL, and LLM training workflows<br \/>\n<b>\u2022<\/b> Extends the dashboard into a general\u2011purpose AI research and teaching platform<\/p>\n<p><b>Neural Brain Journey \u2013 Interpretability Extension:<\/b><\/p>\n<p>The system renders a three dimensional representation of the trained model\u2019s internal topology, conceptualised as an outlined brain structure. Within this environment, each neural connection is represented as a spatial link between regions corresponding to attention heads and feed\u2011forward pathways. The result is a dynamic interpretability framework that allows users to experience the model\u2019s cognitive processes as a navigable landscape, demonstrating the dashboard\u2019s capacity to merge technical transparency with immersive, human\u2011centric AI visualisation.<\/p>\n<p><b>Transformer Interpretability Stack<\/b><\/p>\n<p>The project progressively exposes the internal logic of large language models through eight hierarchical layers:<\/p>\n<p>1. <b>Embedding Galaxy<\/b> \u2014 Constructs the top\u2011level semantic space, mapping tokens into a unified representational geometry.<\/p>\n<p>2. <b>Brain Atlas<\/b> \u2014 Defines the macro\u2011architecture of the model, showing how major regions (attention, MLP, embedding) interconnect.<\/p>\n<p>3. <b>Tensor Microarchitecture<\/b> \u2014 Visualises tensor statistics and heatmaps, enabling fine\u2011grained inspection of weight distributions and activation patterns.<\/p>\n<p>4. <b>Head\u2011Aware Q\/K\/V Decomposition<\/b> \u2014 Separates attention heads to analyse norms, sparsity, and per\u2011head behaviour.<\/p>\n<p>5. <b>Activation\u2011Path Visualisation<\/b> \u2014 Traces query, key, and value activations through attention weights, revealing how information flows within a layer.<\/p>\n<p>6. <b>Multi\u2011Head Interaction Map<\/b> \u2014 Examines horizontal structure: head\u2011to\u2011head similarity, clustering, redundancy, and specialisation (syntax, induction, negation heads).<\/p>\n<p>7. L<b>ayer\u2011to\u2011Layer Activation Flow<\/b> \u2014 Explores vertical structure: how outputs propagate across layers, forming emergent circuits and conceptual hierarchies.<\/p>\n<p>8. <b>MLP Neuron Concept Discovery<\/b> \u2014 Drills into feed\u2011forward layers to identify concept neurons, feature detectors, and direction vectors. This level exposes neurons that fire for interpretable phenomena such as numbers, names, emotions, code indentation, and language\u2011specific features.<\/p>\n<p>9. <b>Feature\u2011Space Geometry<\/b> \u2014 visualise principal components, concept directions, neuron clusters and subspaces for specific behaviours.<\/p>\n<p>10. <b>Time Drift Visualisation<\/b> \u2014 Tracks how embeddings, attention patterns, and neuron behaviours shift across checkpoints to reveal when representations diverge or capabilities emerge.<\/p>\n<p>11. <b>Gradient Flow &#038; Influence Maps<\/b> \u2014 Reveals why a model chose its output by tracing token\u2011level gradients, attribution signals, and causal influence pathways.<\/p>\n<p>12. <b>Mechanistic Circuits &#038; Subgraph Extraction<\/b> \u2014 A multi\u2011level framework that reveals how transformer models represent, transform, and reason through their internal mechanisms.<br \/>\n<!--&#x26a0;&#xfe0f; <u><i>Demonstration Environment Notice<\/i><\/u>\n\n<i>This LLM Training Dashboard is being showcased on a non-GPU server for illustrative and UI exploration purposes only. The training functionality is not active on this server. Users can explore the interface, navigate through tabs, and understand the workflow, but actual model training cannot be performed in this demonstration environment. It was primarily developed as a tool for AI Village on an Apple MacBook Pro 16\" M1 MAX with 32GB 1TB. This demonstration is intended solely to showcase the user interface, feature set, and workflow design<\/i>.\n\n--><br \/>\n<b>Skills<\/b>: <i>Linux \u00b7 Nginx \u00b7 Microsoft Visual Studio Code \u00b7 SQLite \u00b7 Python (Programming Language) \u00b7 llama.cpp \u00b7 PyTorch \u00b7 Flask  \u00b7 Transformers \u00b7 NumPy \u00b7 PSUtil \u00b7 TQDM \u00b7 scikit-learn (PCA) \u00b7 Plotly (interactive viz) \u00b7 TensorBoard \u00b7  ZIP compression \u00b7 HTML \u00b7 CSS \u00b7 JavaScript \u00b7 Large Language Models (LLM) \u00b7 Artificial Intelligence (AI) \u00b7 Ollama  \u00b7 TinyLlama<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/LLMTrainingDashboard.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/LLMTrainingDashboard.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;(AI-Augmented Software Engineering) Apple Silicon \/ NVIDIA CUDA<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/TrainYourModel.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/TrainYourModel.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Train Your Model<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/09\/EmergentCollectiveIntelligence.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/09\/EmergentCollectiveIntelligence.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Emergent Collective Intelligence<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/08\/GeneSequencing.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/08\/GeneSequencing.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Gene Sequencing<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/MolecularAITraining.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/MolecularAITraining.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Molecular AI Training Mode<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/08\/MoleculeBuilder.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/08\/MoleculeBuilder.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Molecular Builder<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/TrainingArtifacts.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/TrainingArtifacts.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Training Artifacts<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/AttentionExplorer.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/AttentionExplorer.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;LLM Attention Explorer<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/JourneyThroughYourLlmModel.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/JourneyThroughYourLlmModel.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Journey Through Your Trained LLM Model<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/EmbeddingGalaxy.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/EmbeddingGalaxy.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Explore The Model&#8217;s Semantic Universe<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/ValueProjectionHeadDecomposition.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/ValueProjectionHeadDecomposition.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Value Projection Head Decomposition<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/MLPNeuronConceptDiscovery.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/MLPNeuronConceptDiscovery.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;MLP Neuron Concept Discovery<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/FeatureSpaceGeometry.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/FeatureSpaceGeometry.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Feature Space Geometry<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/TrainingTimeDrift.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/TrainingTimeDrift.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Time Drift Visualisation<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/GradientAndInfluence.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/GradientAndInfluence.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Gradient Flow &#038; Influence Maps<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/MechanisticCircuitsAndSubgraphExtraction.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/MechanisticCircuitsAndSubgraphExtraction.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Mechanistic\u202fCircuits\u202f&#038;\u202fSubgraph\u202fExtraction<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/ModelTrainingSystemStatus.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/ModelTrainingSystemStatus.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Model Training System Status<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Machine &#038; Deep Learning<\/b> <i>(Training Console)<\/i><\/i><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;April 2026 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/machinedeeplearning.llmtraining.dev\" target=\"_blank\">machinedeeplearning.llmtraining.dev<\/a><\/p>\n<p><!--Hosted on a bespoke Linux <b>Debian 12<\/b> (Bookworm) Server using... <b>Nginx 1.22.1<\/b>, <b>Node 20.10.0<\/b> and <b>PHP 8.2.29<\/b>\n--><br \/>\nHosted on an <b>Apple M2 Pro<\/b> system (<b>Darwin 25.5.0<\/b>, <b>arm64 architecture<\/b>) featuring a <b>10\u2011core CPU @ 3.5 GHz, 16 GB unified memory<\/b>, and <b>Metal\u2011accelerated Apple M2 GPU<\/b> with up to <b>16 GB VRAM<\/b> shared bandwidth.<\/p>\n<p>The ML Training Console is a unified platform for running, monitoring, and managing machine learning and deep\u2011learning experiments across three phases: Core ML\/DL, Classical ML, and Transformers + Vision. It provides a streamlined workflow for dataset ingestion, model selection, training, evaluation, and deployment\u2011ready export formats.<\/p>\n<p>The console automatically detects dataset types (tabular, text, or vision), validates structure, and routes them to compatible model families. Users can train classical ML models, deep\u2011learning architectures, and transformer\u2011based models such as MicroLLaMA, MiniLLaMA, and Vision Transformers (ViT).<\/p>\n<p>Key features include:<\/p>\n<p>\u2022 Three\u2011phase training pipeline: Core ML\/DL, Classical ML, and Transformers + Vision<\/p>\n<p>\u2022 Deep\u2011learning support with epoch\u2011based training, batch size, learning rate, and max\u2011sample controls<\/p>\n<p>Transformer workflows for text datasets, including MicroLLaMA and MiniLLaMA<\/p>\n<p>\u2022 Vision Transformer (ViT) support for image\u2011based datasets<\/p>\n<p>\u2022 Real\u2011time telemetry: loss curves, accuracy, throughput, GPU\/CPU usage, VRAM\/RAM, and latency<\/p>\n<p>\u2022 Automatic dataset detection for CSV, JSON, TXT, and labeled image folders<\/p>\n<p>\u2022 Export options: ONNX, inference runners, and optional GGUF conversion for local deployment<\/p>\n<p>\u2022 Model artefact management with structured storage for transformer, classical ML, and core ML runs<\/p>\n<p>\u2022 Integrated inference tools for text\u2011based transformer models<\/p>\n<p>This project demonstrates the ability to design and build a full\u2011stack ML\/DL experimentation environment, combining model training, dataset engineering, telemetry, and deployment workflows into a single cohesive interface.<\/p>\n<p><b>Skills<\/b>: Linux \u00b7 Python (Programming Language) \u00b7 PyTorch \u00b7 Transformers \u00b7 scikit\u2011learn \u00b7 NumPy \u00b7 Pandas \u00b7 TQDM \u00b7 PSUtil \u00b7 ONNX \u00b7 GGUF \u00b7 Vision Transformers (ViT) \u00b7 MicroLLaMA \u00b7 MiniLLaMA \u00b7 GPU Acceleration (CUDA \/ MLX) \u00b7 FastAPI \u00b7 Flask \u00b7 SQLite \u00b7 Plotly (interactive visualisation) \u00b7 TensorBoard \u00b7 JSON\/CSV Dataset Engineering \u00b7 HTML \u00b7 CSS \u00b7 JavaScript \u00b7 Model Deployment \u00b7 Artificial Intelligence (AI) \u00b7 Machine Learning (ML) \u00b7 Deep Learning (DL)<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/CoreMLDLConfigurationPanel.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/CoreMLDLConfigurationPanel.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Core ML\/DL Configuration Panel<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/AttentionAndTokenActivationVisualization.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/AttentionAndTokenActivationVisualization.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Attention &#038; Token Activation Visualization<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/ResultsAndDeploymentPanel.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/ResultsAndDeploymentPanel.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Results &#038; Deployment Panel<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/Training-Performance-Metrics.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/Training-Performance-Metrics.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Training Performance Metrics<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;DeepSpec MLX Dashboard<\/b><\/i><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;June 2026 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/deepspecmlx.llmtraining.dev\" target=\"_blank\">deepspecmlx.llmtraining.dev<\/a><\/p>\n<p><!--Hosted on a bespoke Linux <b>Debian 12<\/b> (Bookworm) Server using... <b>Nginx 1.22.1<\/b>, <b>Node 20.10.0<\/b> and <b>PHP 8.2.29<\/b>\n--><br \/>\nHosted on an <b>Apple M2 Pro<\/b> system (<b>Darwin 25.5.0<\/b>, <b>arm64 architecture<\/b>) featuring a <b>10\u2011core CPU @ 3.5 GHz, 16 GB unified memory<\/b>, and <b>Metal\u2011accelerated Apple M2 GPU<\/b> with up to <b>16 GB VRAM<\/b> shared bandwidth.<\/p>\n<p>The DeepSpec MLX Dashboard is a modern, Apple\u2011Silicon\u2011optimised environment that reimagines speculative decoding through an interactive and visual interface. Built entirely on MLX, it transforms the foundational ideas introduced in DeepSeek\u2019s original DeepSpec repository into a developer\u2011friendly experience that runs seamlessly on Mac hardware. Instead of requiring multi\u2011GPU setups or deep CUDA expertise, the dashboard makes speculative decoding accessible to researchers, developers, and students through a clean browser interface.<\/p>\n<p>At its core, the dashboard provides a complete ecosystem for exploring, benchmarking, and visualising speculative decoding. The Regeneration Console allows users to compare draft and target model outputs interactively, revealing latency, acceptance, and verification patterns that explain how acceleration emerges. The Micro\u2011Benchmark Runner offers fine\u2011grained performance analytics, displaying latency trends, acceptance timelines, and draft\u2011versus\u2011target deltas through advanced charts. The Draft Model Playground enables live speculative decoding runs with adjustable parameters such as temperature and token limits, while the Token Flow Visualiser animates the decoding process in real time, showing how tokens are accepted, rejected, or regenerated step by step.<\/p>\n<p>Complementing these interactive modules, the Target Cache Explorer provides a detailed view of cached samples, sequence lengths, and input IDs, helping users understand model caching behaviour. The Model Inspector lets users load and examine MLX or GGUF models\u2014such as Qwen3\u20110.6B\u2014and view architecture details, runtime configuration, and device mode. Integrated GGUF Conversion Tools make it easy to convert MLX, PyTorch, or Hugging Face models into GGUF format for deployment, with quantization presets and direct download options. A built\u2011in Export JSON Utility allows users to extract runtime configurations, benchmark results, and regeneration data for external analysis.<\/p>\n<p>Throughout the environment, a live System Status panel refreshes every two seconds, displaying CPU, memory, and GPU metrics alongside device information such as platform, architecture, and Python environment. This transparency ensures that users can monitor host performance as decoding runs unfold.<\/p>\n<p>Every component of the DeepSpec MLX Dashboard is designed to bridge the gap between research and practical application. It turns speculative decoding from a low\u2011level algorithm into a hands\u2011on, visual experience\u2014one that makes acceleration dynamics intuitive, measurable, and deeply informative. By combining the inspiration of DeepSeek\u2019s original research with the flexibility of MLX and the efficiency of Apple Silicon, the dashboard stands as both a tribute to the pioneering work of DeepSpec and a forward\u2011looking tool for modern AI experimentation.<\/p>\n<p><b>Skills<\/b>: macOS \u00b7 Darwin (arm64 architecture) \u00b7 MLX (Apple\u2011Silicon Machine Learning Framework) \u00b7 Speculative Decoding \u00b7 Python (Programming Language) \u00b7 PyTorch \u00b7 Transformers \u00b7 scikit\u2011learn \u00b7 NumPy \u00b7 Pandas \u00b7 TQDM \u00b7 PSUtil \u00b7 ONNX \u00b7 GGUF \u00b7 Qwen3\u20110.6B \u00b7 Vision Transformers (ViT) \u00b7 MicroLLaMA \u00b7 MiniLLaMA \u00b7 GPU Acceleration (Metal \/ MLX) \u00b7 FastAPI \u00b7 Flask \u00b7 SQLite \u00b7 Plotly (interactive visualisation) \u00b7 TensorBoard \u00b7 JSON\/CSV Dataset Engineering \u00b7 Model Caching \u00b7 Quantization \u00b7 Benchmarking \u00b7 HTML \u00b7 CSS \u00b7 JavaScript \u00b7 Model Deployment \u00b7 Artificial Intelligence (AI) \u00b7 Machine Learning (ML) \u00b7 Deep Learning (DL)<br \/>\n<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/RegenerationConsole.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/RegenerationConsole.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Regeneration Console<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/Micro-BenchmarkRunner.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/Micro-BenchmarkRunner.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Micro-Benchmark Runner<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/DraftModelPlayground.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/DraftModelPlayground.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Draft Model Playgroundl<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/TokenFlowVisualiser.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/TokenFlowVisualiser.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Token Flow Visualiser<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/TargetCacheExplorer.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/TargetCacheExplorer.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Target Cache Explorer<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/ModelInspector.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/07\/ModelInspector.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Model Inspector<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;ClawForgeAI<\/b> &#8211; <i>Real\u2011Time Agent Dashboard (Prototype)<\/i><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;March 2026 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/clawforgeai.llmtraining.dev\/\" target=\"_blank\">clawforgeai.llmtraining.dev<\/a><\/p>\n<p>Hosted on an <b>Apple M2 Pro<\/b> system (<b>Darwin 25.5.0<\/b>, <b>arm64 architecture<\/b>) featuring a <b>10\u2011core CPU @ 3.5 GHz, 16 GB unified memory<\/b>, and <b>Metal\u2011accelerated Apple M2 GPU<\/b> with up to <b>16 GB VRAM<\/b> shared bandwidth.<\/p>\n<p>A server hosted, real\u2011time orchestration and monitoring dashboard providing a unified view of system tasks, agent activity, model routing, and backend performance, purpose built for AI\u2011augmented software engineering workflows.<\/p>\n<p>&#x1f527; Real\u2011Time Task Orchestration<\/p>\n<p>\u2022 Live view of active, queued, and completed task<br \/>\n\u2022 Automatic grouping by agent, model, or workflow<br \/>\n\u2022 Color\u2011coded status indicators for instant clarity<\/p>\n<p>&#x1f9e0; Agent, Model &#038; Skill Routing Insights<\/p>\n<p>\u2022 Visual mapping of which agents execute which tasks<br \/>\n\u2022 Transparent LLM routing: model selection, fallbacks, retries<br \/>\n\u2022 Full visibility into custom skill execution, including triggers, dependencies, and outcomes<br \/>\n\u2022 Execution traces for debugging and optimisation<\/p>\n<p>&#x1f9e9; Custom Skills Framework<\/p>\n<p>\u2022 Register and manage custom agent skills directly from the dashboard<br \/>\n\u2022 Real\u2011time introspection of skill calls, arguments, and return values<br \/>\n\u2022 Skill\u2011level performance metrics (latency, error rates, throughput)<br \/>\n\u2022 Designed for extensibility: plug in new tools, APIs, or domain\u2011specific capabilities<\/p>\n<p>&#x1f4ca; System Health &#038; Performance Metrics<\/p>\n<p>\u2022 CPU\/GPU utilization panels<br \/>\n\u2022 Memory + VRAM tracking<br \/>\n\u2022 Latency, throughput, and per\u2011task analytics<\/p>\n<p>&#x1f4c1; Persistent Task History<\/p>\n<p>\u2022 Full audit trail of all agent actions<br \/>\n\u2022 Searchable logs with timestamps and metadata<br \/>\n\u2022 Built for reproducibility and long\u2011running experiments<\/p>\n<p>&#x2699;&#xfe0f; Deep Integration with the ClawForgeAI Runtime<\/p>\n<p>\u2022 Direct hooks into the ClawForgeAI task engine<br \/>\n\u2022 Supports multi\u2011agent workflows, background jobs, and scheduled tasks<br \/>\n\u2022 Extensible via plugins, custom tools, and new agent types<\/p>\n<p><b>Skills<\/b>: <i>Microsoft Visual Studio Code \u00b7 Python (Programming Language) \u00b7 JavaScript \u00b7 HTML \u00b7 CSS \u00b7 JSON \u00b7 Flask \u00b7 Node.js \u00b7 Large Language Models (LLM) <\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/ClawForgeAi.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/ClawForgeAi.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Task Dashboard<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;GLB Explorer<\/b> &#8211; <i>Interactive 3D Asset Inspector<\/i><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;February 2026 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/glb.ayestaran.dev\" target=\"_blank\">glb.ayestaran.dev<\/a><\/p>\n<p>Hosted on a bespoke Linux <b>Debian 12<\/b> (Bookworm) Server using&#8230; <b>Nginx 1.22.1<\/b>, <b>20.10.0<\/b> and <b>PHP 8.2.29<\/b><\/p>\n<p>A browser\u2011based 3D asset inspection tool for GLB\/GLTF models, designed for instant visualization, analysis, and interaction. Users can click individual meshes to reveal geometry, material, and vertex data, and toggle visibility to isolate or drill down into complex structures.Built with WebGL and Three.js, it supports drag\u2011and\u2011drop model loading, dynamic lighting, and performance telemetry assets in a clean, orbitable viewer.<\/p>\n<p><b>Skills<\/b>: <i>Microsoft Visual Studio Code \u00b7 Python (Programming Language) \u00b7 JavaScript \u00b7 HTML \u00b7 CSS \u00b7 JSON \u00b7 Node.js<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/GLBExplorer.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/GLBExplorer.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;3D Asset Viewer<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;LLM Token Calc<\/b> &#8211; <i>Measure Datasets Before You Train<\/i><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;March 2026 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/tokencalc.llmtraining.dev\/\" target=\"_blank\">tokencalc.llmtraining.dev<\/a><\/p>\n<p>Hosted on an <b>Apple M2 Pro<\/b> system (<b>Darwin 25.5.0<\/b>, <b>arm64 architecture<\/b>) featuring a <b>10\u2011core CPU @ 3.5 GHz, 16 GB unified memory<\/b>, and <b>Metal\u2011accelerated Apple M2 GPU<\/b> with up to <b>16 GB VRAM<\/b> shared bandwidth.<\/p>\n<p>Upload a text file, JSON file, or JSONL file to estimate token volume, multiply it across training epochs, and compare that token count against a built-in pricing catalog for OpenAI, Anthropic, and similar APIs. JSON files are compacted before counting so the estimate reflects the content rather than indentation. Plain-text uploads can be `.txt`, `.md`, `.csv`, `.log`, `.xml`, `.yaml`, or `.yml`. Provider prices live in the local catalog and can be updated as vendors change rates.<\/p>\n<p><b>Skills<\/b>: <i>Microsoft Visual Studio Code \u00b7 Python (Programming Language) \u00b7 JavaScript \u00b7 HTML \u00b7 CSS \u00b7 JSON \u00b7 Flask \u00b7 Node.js \u00b7 Large Language Models (LLM) <\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/04\/LllmTokenCalc.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/04\/LllmTokenCalc.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;7 Provider Filter<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Ollama Cloud Inference<\/b> &#8211; <i>Secure, Reproducible AI Infrastructure for the Future<\/i><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;February 2026 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/ollamacloud.dev\/\" target=\"_blank\">ollamacloud.dev<\/a><\/p>\n<p>Hosted on a bespoke Linux <b>Ubuntu 22.04 LTS<\/b> (Jammy\u202fJellyfish) Server using&#8230; <b>Caddy<\/b><\/p>\n<p>Developed and deployed Ollama Cloud Inference as the backbone of a closed, production grade AI ecosystem integrating AI Village and the LLM Training Dashboard. Architected a secure, reproducible inference layer hosted on Linode and Vast.ai, enabling seamless model serving across Apple Silicon and NVIDIA CUDA environments. Implemented Caddy based routing and Cloudflare Tunnel for resilient API access, ensuring low\u2011latency communication between distributed nodes. The system supports GGUF format models and LoRA adapters, optimised for lightweight, cost\u2011efficient inference. This project demonstrates end\u2011to\u2011end orchestration of cloud\u2011native AI infrastructure from model deployment to multilingual front\u2011end integration highlighting my focus on scalability, reproducibility, and cross\u2011platform compatibility.<\/p>\n<p><b>Skills<\/b>: <i>Cloud Computing \u00b7 Terraform \u00b7 Linode \u00b7 CloudFlare \u00b7 Ollama Inference \u00b7 Caddy \u00b7 GUFF<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/04\/AiConfiguration.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/04\/AiConfiguration.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Ai Village<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Configuration Panel<\/i><\/h5>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">&nbsp;&nbsp;&nbsp;<br \/>\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/03\/EthanAyestaran.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;AI Village<\/b> <i>(2D Game Creator with AI-Driven NPCs)<\/i><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran and Ethan Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Oct 2025 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>AI &#8211; Training @ <a href=\"https:\/\/dashboard.llmtraining.dev\" target=\"_blank\">dashboard.llmtraining.dev<\/a> (End-to-End: Train a Model &#038; Run It in Ollama)<br \/>\nAI &#8211; Integration @ <a href=\"https:\/\/aivillage.ayestaran.dev\" target=\"_blank\">aivillage.ayestaran.dev<\/a> (2D Game Creator with AI-Driven NPCs)<br \/>\nAI &#8211; Ollama Cloud Inference @ <a href=\"https:\/\/ollamacloud.dev\" target=\"_blank\">ollamacloud.dev<\/a> (AI Village Model, Connected via OpenAI \/ Port 11434)<\/p>\n<p>Hosted on a bespoke Linux <b>Debian 12<\/b> (Bookworm) Server using&#8230; <b>Nginx 1.22.1<\/b>, <b>Node 20.10.0<\/b> and <b>PHP 8.2.29<\/b><\/p>\n<p>This beta project examines the implementation and integration of artificial intelligence technologies within an interactive 2D game creator featuring autonomous non-player characters (NPCs) powered by cutting-edge AI systems. The project synthesizes multiple AI disciplines including natural language processing, machine learning, pathfinding algorithms, and emotional computing to create a cohesive, immersive gaming experience. Through the development of AI Village, this research demonstrates how modern AI technologies can be practically applied to enhance interactive systems, while simultaneously exploring the ethical implications, technical challenges, and future directions of AI in game development and human-computer interaction.<\/p>\n<p><b>Skills<\/b>: <i>Linux \u00b7 Nginx \u00b7 SQLite \u00b7 Microsoft Visual Studio Code \u00b7 HTML \u00b7 CSS \u00b7 JavaScript \u00b7 Large Language Models (LLM) \u00b7 Artificial Intelligence (AI) \u00b7 OpenAI \u00b7 ElevenLabs<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/03\/AiVillage.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/03\/AiVillage.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Online 2D Game Engine<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Open WebUI Chatbot<\/b> <i>(OpenRouter.ai)<\/i><\/i><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Jul 2025 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Hosted on a <b>Terraformed<\/b> Linux <b>Debian 12<\/b> (Bookworm) Server using&#8230; <b>Docker 20.10.24<\/b> and <b>Nginx 1.22.1<\/b><\/p>\n<p><b>Models<\/b>:<\/p>\n<p><b>Meta<\/b>: <a href=\"https:\/\/openrouter.ai\/meta-llama\/llama-3.1-405b-instruct:free\" target=\"_blank\">Llama 3.1 405B Instruct<\/a> <i>(free)<\/i><br \/>\n<b>DeepSeek<\/b>: <a href=\"https:\/\/openrouter.ai\/deepseek\/deepseek-r1:free\" target=\"_blank\">R1<\/a> <i>(free)<\/i><br \/>\n<b>Google<\/b>: <a href=\"https:\/\/openrouter.ai\/google\/gemma-3-27b-it:free\" target=\"_blank\">Gemma 3 27B<\/a> <i>(free)<\/i><br \/>\n<b>OpenAl<\/b>: <a href=\"https:\/\/openrouter.ai\/openai\/gpt-oss-20b:free\" target=\"_blank\">gpt-oss-20b<\/a> <i>(free)<\/i><\/p>\n<p><b>Links<\/b>:<\/p>\n<p><b>Demo Website<\/b>&#8230; <a href=\"https:\/\/Chatbot.ayestaran.dev\" target=\"_blank\">https:\/\/chatbot.ayestaran.dev<\/a><\/p>\n<p><b>username<\/b>: guest@ayestaran.dev<br \/>\n<b>password<\/b>: l3tm31n<\/p>\n<p><b>Developer Website: <\/b>&#8230; <a href=\"https:\/\/docs.openwebui.com\/\" target=\"_blank\">https:\/\/docs.openwebui.com\/<\/a><\/p>\n<p><b>History&#8230;<\/b><\/p>\n<p><b>Open WebUI<\/b> is an extensible, feature-rich, and user-friendly self-hosted <b>AI platform<\/b> designed to operate entirely offline. It supports various <b>LLM<\/b> runners like <b>Ollama<\/b> and <b>OpenAI-compatible APIs<\/b>, with built-in <b>inference engine<\/b> for <b>RAG<\/b>, making it a powerful AI deployment solution.<\/p>\n<p><b>OpenRouter<\/b> provides a unified <b>API<\/b> that gives you access to hundreds of <b>AI models<\/b> through a <b>single endpoint<\/b>, while automatically handling fallbacks and selecting the most cost-effective options. Get started with just a few lines of code using your preferred <b>SDK<\/b> or <b>framework<\/b>.<\/p>\n<p><b>Skills<\/b>: <i>Terraform \u00b7 Docker \u00b7 Linux \u00b7 Nginx \u00b7 Microsoft Visual Studio Code \u00b7 SQLite \u00b7 Python (Programming Language) \u00b7 Large Language Models (LLM) \u00b7 Artificial Intelligence (AI) \u00b7 Ollama<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/08\/chatbot.ayestaran.dev_.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/08\/chatbot.ayestaran.dev_.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Online Chatbot<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Artificial Intelligence Whiteboard Make Real Starter (OpenAI API GPT-4V Turbo)<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Nov 2023 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Hosted on a bespoke Linux <b>Debian 12<\/b> (Bookworm) Server using&#8230; <b>Node v20.10.0<\/b> \/ <b>Node.js v18.13.0<\/b> \/ <b>Next.js v14.0.4<\/b> \/ <b>PM2<\/b><\/p>\n<p><b>Links:<\/b><\/p>\n<p><b>Demo Website<\/b>&#8230; <a href=\"https:\/\/aiwhiteboard.co.uk\" target=\"_blank\">https:\/\/aiwhiteboard.co.uk<\/a><br \/>\n<b>Calculator JSON<\/b>&#8230; <a href=\"https:\/\/secure.ayestaran.dev\/CalculatorDesign.json\" target=\"_blank\">https:\/\/secure.ayestaran.dev\/CalculatorDesign.json<\/a><br \/>\n<b>Three.js (3D Modelling)<\/b>&#8230; <a href=\"http:\/\/three.js.ayestaran.dev\" target=\"_blank\">http:\/\/three.js.ayestaran.dev<\/a> (<b>Developer website<\/b>&#8230; <a href=\"https:\/\/threejs.org\" target=\"_blank\">https:\/\/threejs.org<\/a>)<br \/>\n<b>Original tldraw make-real-starter template repo<\/b>&#8230; <a href=\"https:\/\/github.com\/tldraw\/make-real-starter\" target=\"_blank\">https:\/\/github.com\/tldraw\/make-real-starter<\/a><\/p>\n<p><b>History&#8230;<\/b><\/p>\n<p>&#8220;Make it Real&#8221; lets users draw an image of software and bring it to life using <b>AI<\/b>. The feature uses <b>OpenAI&#8217;s GPT-4V API<\/b> to <b>visually<\/b> interpret a <b>vector<\/b> drawing into<br \/>\nfunctioning <b>Tailwind CSS<\/b> and <b>JavaScript<\/b> web code that can <b>replicate<\/b> user <b>interfaces<\/b> or even create <b>simple<\/b> implementations of <b>games<\/b> like <b>Breakout<\/b>.<\/p>\n<p>Tldraw, developed by <b>Steve Ruiz<\/b> in London, is an <b>open source<\/b> collaborative <b>whiteboard<\/b> tool. It offers a basic infinite <b>canvas<\/b> for drawing, text, and media without requiring a login. Launched in <b>2021<\/b>, the project received <b>$2.7 million<\/b> in seed funding and is supported by <b>GitHub<\/b> sponsors. When The GPT-4V API launched recently, Ruiz integrated a design prototype called <b>&#8220;draw-a-ui&#8221;<\/b> created by <b>Sawyer Hood<\/b> to bring the <b>AI-powered<\/b> functionality into tldraw.<\/p>\n<p><b>Skills<\/b>: <i>Linux \u00b7 Node.js \u00b7 Next.js \u00b7 JavaScript \u00b7 HTML5 \u00b7 CSS \u00b7 Artificial Intelligence (AI) \u00b7 Large Language Models (LLM)<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Calculator1.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Calculator1.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Calculator<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Html (Interactive) &#8211; Tweaked by a Human.<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Calculator2.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Calculator2.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Calculator<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Html (Interactive) &#8211; Designed by a Human, coded by AI.<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Calculator3.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Calculator3.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Artificial Intelligence Whiteboard<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Turning drawings into working software, hosted on a custom bespoke Debian Linux Server.<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/tldraw_github.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/tldraw_github.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;GitHub &#8211; tldraw\/make-real-starter: Make it real<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Original Repository by https:\/\/www.tldraw.dev\/<\/i><\/h5>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Venn Diagram Generator<\/b> &#8211; <i>Interactive Set Visualisation Tool<\/i><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;March 2026 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/venndiagramgenerator.llmtraining.dev\/\" target=\"_blank\">venndiagramgenerator.llmtraining.dev<\/a><\/p>\n<p>osted locally on an <b>Apple M2 Pro<\/b> system (<b>Darwin 25.5.0<\/b>, <b>arm64 architecture<\/b>) featuring a <b>10\u2011core CPU @ 3.5 GHz, 16 GB unified memory<\/b>, and <b>Metal\u2011accelerated Apple M2 GPU<\/b> with up to <b>16 GB VRAM<\/b> shared bandwidth.<\/p>\n<p>Key Features<\/p>\n<p>\u2022 Dynamic Set Editing<br \/>\nAdd, remove, and modify items with instant recalculation of all intersections, unions, differences, complements, and symmetric differences.<\/p>\n<p>\u2022 Precise Geometry Controls<br \/>\nAdjust circle centres and radii for custom layouts, with live updates to region boundaries and computed set relationships.<\/p>\n<p>\u2022 Live Mathematical Output<br \/>\nAutomatically generated set equations for all primary and derived operations:<br \/>\nA, B, C, A\u2229B, A\u2229C, B\u2229C, A\u222aB\u222aC, A\u2216B, B\u2216A, complements, symmetric differences, and more.<\/p>\n<p>\u2022 Symbol Normalisation Engine<br \/>\nA built\u2011in parser that automatically converts informal or inconsistent symbols (e.g., |, minus, \\) into correct mathematical notation (\u2216, \u222a, \u2229, \u1d9c, \u0394), ensuring clarity and consistency across the UI.<\/p>\n<p>\u2022 Preview Mask System<br \/>\nInteractive visual overlays that highlight the exact regions corresponding to each set operation before applying it \u2014 ideal for learning, debugging, and teaching set theory.<\/p>\n<p>\u2022 Derived Equation Toggle<br \/>\nA UI switch that allows users to show or hide advanced derived equations (complements, multi\u2011way intersections, symmetric differences), keeping the interface clean for beginners while offering depth for advanced users.<\/p>\n<p>\u2022 Import\/Export Support<br \/>\nSave and load diagrams as JSON for reproducibility.<br \/>\nExport final visuals as high\u2011resolution SVG or PNG.<\/p>\n<p>\u2022 Clean, Lightweight Architecture<br \/>\nBuilt as a standalone, fully client\u2011side web tool with no backend dependencies.<br \/>\nOptimised for clarity, speed, and reliability \u2014 runs entirely in the browser.<\/p>\n<p><b>Skills<\/b>: <i>Microsoft Visual Studio Code \u00b7 Python (Programming Language) \u00b7 JavaScript \u00b7 HTML \u00b7 CSS \u00b7 JSON \u00b7 Flask \u00b7 Node.js \u00b7 Large Language Models (LLM) <\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/VennDiagramGenerator.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2026\/05\/VennDiagramGenerator.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Union, Intersection, Set Minus, Absolute Complement, Venn Diagrams, and Powerset<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;OpenWeather (Python \/ SQLite)<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Jul 2023 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/github.com\/Code-Munkeys\/OpenWeather\" target=\"_blank\">https:\/\/github.com\/Code-Munkeys\/OpenWeather<\/a><\/p>\n<p><b>API<\/b> call using <b>Python<\/b> and <b>SQLite<\/b><\/p>\n<p>Includes embedded forecast examples for offline testing.<\/p>\n<p><b>Skills<\/b>: <i>Microsoft Visual Studio Code \u00b7 Python (Programming Language) \u00b7 SQLite \u00b7 JSON \u00b7 RESTful APIs<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/VisualStudioCodeAndShellScreenshot.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/VisualStudioCodeAndShellScreenshot.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Visual Studio Code and Shell Screenshot<\/b><\/h4>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/OpenWeatherAPIcallUsingPythonAndSQLite.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/OpenWeatherAPIcallUsingPythonAndSQLite.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;OpenWeather API call using Python and SQLite<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Temperature Logger for the RaspberryPi Pico with external RTC (MicroPython)<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Jul 2023 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/github.com\/Code-Munkeys\/TemperatureLogger\" target=\"_blank\">https:\/\/github.com\/Code-Munkeys\/TemperatureLogger<\/a><\/p>\n<p><b>Usage:<\/b><\/p>\n<p>When the Splash screen has displayed for 5 seconds, the User will be presented with a Calibration screen. The User can press the <b>GREEN Button<\/b> to increase and the <b>RED Button<\/b> to decrease the required temperature adjustment amount, when finished the User simply presses the <b>BLUE Button<\/b> to continue.<\/p>\n<p>When the Temperature screen is displayed the User can perform the following functions via the assigned inputs. <b>RED Button<\/b>: Toggle Logging On \/ Off, <b>GREEN Button<\/b>: Toggle \u00b0C \/ \u00b0F, <b>BLUE Button<\/b>: Toggle OLED display On \/ Off. When the OLED Display is in the off state, the Pico onboard LED is illuminated to show the temperature logger is on.<\/p>\n<p><b>POTENTIOMETER<\/b>: Interval time (<b>Left<\/b> 60s) (<b>Center<\/b> 30s) (<b>Right<\/b> 15s) (s = seconds)<\/p>\n<p>When the logging CSV file is created and appended to, the filename suffix datetime stamp is set to the following format&#8230; [<b>temperatureYYYY-MM-DD_HHMMSS.csv<\/b>]. If no external RTC is installed then an additional random suffix number can be added to the filename&#8230; [<b>temperatureYYYY-MM-DD_HHMMSS_01234567.csv<\/b>]<\/p>\n<p><b>Skills<\/b>: <i>Pycharm \u00b7 MicroPython \u00b7 CSV \u00b7 Raspberry Pi Pico \u00b7 Electronics<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/SplashCalibrateMainScreen.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/SplashCalibrateMainScreen.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Splash, Calibration and Main Screenshots<\/b><\/h4>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/TemperatureLoggerRtcBreadboard.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/TemperatureLoggerRtcBreadboard.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Temperature Logger RTC Breadboard<\/b><\/h4>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/TemperatureLoggerRtcCircuit.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/TemperatureLoggerRtcCircuit.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Temperature Logger RTC Circuit<\/b><\/h4>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/TemperatureGraph.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/TemperatureGraph.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Example CSV Test Data<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Binary 2 Decimal Converter for the Android Phone &#038; Watch (Android Studio &#8211; Kotlin)<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Mar 2023 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/github.com\/Code-Munkeys\/Binary2Decimal\" target=\"_blank\">https:\/\/github.com\/Code-Munkeys\/Binary2Decimal<\/a><\/p>\n<p>Tap the [<b>left<\/b>] up arrow to convert from <b>decimal<\/b> to <b>binary<\/b> and the [<b>right<\/b>] down arrow to convert binary to decimal. Tap the [<b>generate<\/b>] button to display a <b>random<\/b> binary value in order to <b>guess<\/b> the decimal value, then tap the [<b>compare<\/b>] button to <b>check<\/b> your <b>answer<\/b>. Use the <b>seek bar<\/b> in order to <b>increase<\/b> or <b>decrease<\/b> the binary and decimal value.<\/p>\n<p><b>Skills<\/b>: Skills: Android Studio \u00b7 Kotlin<\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Binary2DeciamlWatch.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Binary2DeciamlWatch.jpeg\" alt=\"\" width=\"75\" height=\"150\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Watch<\/b><\/h4>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Binary2DeciamlPhone.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Binary2DeciamlPhone.jpeg\" alt=\"\" width=\"75\" height=\"150\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Phone<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;ARK: Survival Evolved Server<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Jan 2023 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/server.nitrado.net\/en-GB\/offers\/ark-survival-evolved?utm_campaign=all_all_ark_general&#038;utm_source=wildcard&#038;utm_medium=studio&#038;utm_content=ingame-link-steam&#038;short=arkse\" target=\"_blank\">Nitrado Hosting<\/a><\/p>\n<p>(PC) &#8220;<b>WorldOfPi<\/b>&#8221; &#8211; IP: <b>95.156.210.98:16777<\/b><\/p>\n<p>Current map <b>TheCenter PVE<\/b> \/ Version <b>358.24<\/b><\/p>\n<p><b>History<\/b>&#8230;<\/p>\n<p>Ark: Survival Evolved (stylized as ARK) is a 2017 <b>action-adventure survival<\/b> video game developed by <b>Studio Wildcard<\/b>. In the game, players must survive being stranded on one of several maps filled with roaming <b>dinosaurs<\/b>, <b>fictional fantasy monsters<\/b>, and other <b>prehistoric animals<\/b>, <b>natural hazards<\/b>, and potentially <b>hostile human players<\/b>.<\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/07\/ArkSurvivalEvolved.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/07\/ArkSurvivalEvolved.jpg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;In-Game<\/b><br \/>\n&nbsp;&nbsp;&nbsp;Screenshot<\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;MCAPI<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Jul 2021 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/mcapi.org\" target=\"_blank\">https:\/\/mcapi.org\/<\/a><\/p>\n<p><b>Usage<\/b>&#8230;<\/p>\n<p>All requests should be sent to \/server\/status or \/server\/query. You may add two parameters, an <b>ip<\/b> and a <b>port<\/b>. <b>JSONP<\/b> is not supported as <b>CORS<\/b> is enabled.<\/p>\n<p>Please do not send more than one request per client per minute as data is cached server side for five minutes.<\/p>\n<p>An example request would look like http:\/\/mcapi.org\/server\/status?ip=<b>85.202.160.228<\/b>. If you are using a non-standard <b>25565<\/b> port, you may include the port too, like this: http:\/\/mcapi.org\/server\/status?ip=<b>85.202.160.228<\/b>&#038;port=<b>2248<\/b>.<\/p>\n<p><b>Skills<\/b>: <i>Linux \u00b7 Docker \u00b7 Redis \u00b7 Nginx \u00b7 PHP \u00b7 JavaScript \u00b7 HTML \u00b7 Python (Programming Language) \u00b7 RESTful APIs<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/MCapiOrg_WebAPILandingPage.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/MCapiOrg_WebAPILandingPage.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Landing Page<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Luanti (formerly Minetest) Server<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;May 2021 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/www.luanti.org\/\" target=\"_blank\">https:\/\/www.luanti.org\/<\/a><\/p>\n<p>IP address: <b>185.249.199.163<\/b>: Port: <b>2042<\/b> @ Zap-Hosting<\/p>\n<p>Standard (SSD, 2.0-3.4 GHz, DDR3\/4 memory) Max 10 Players<\/p>\n<p><b>History<\/b>&#8230;<\/p>\n<p>Minetest is a free and <b>open-source sandbox<\/b> video game developed by a team of <b>volunteers<\/b>, with significant <b>contributions<\/b> from the <b>community<\/b>. The first publicly available version was <b>Minetest 0.0.1<\/b>, created by <b>Perttu Ahola<\/b>, and released on the Web in <b>November 2010<\/b>. Minetest is programmed in <b>C++<\/b> using the <b>Irrlicht<\/b> Engine, and is available for <b>Linux-based<\/b> systems, <b>FreeBSD<\/b>, <b>Microsoft Windows<\/b>, <b>MacOS<\/b>, and <b>Android<\/b>. Minetest provides an <b>API<\/b> for <b>users<\/b> to create their own <b>games<\/b> and <b>mods<\/b> written in <b>Lua<\/b>.<\/p>\n<p><b>Skills<\/b>: <i>Linux<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"http:\/\/minetest.co.uk\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/MinetestLandingPage.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Landing Page<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Minecraft Bedrock Server 1.21.81<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Sep 2020 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>IP address: <b>46.251.234.50<\/b>: Port: <b>10250<\/b> @ Nitrado<\/p>\n<p><b>History<\/b>&#8230;<\/p>\n<p>Minecraft is a <b>sandbox<\/b> construction game created by <b>Mojang AB<\/b> founder <b>Markus Persson<\/b>, and inspired by the <b>Infiniminer<\/b>, <b>Dwarf Fortress<\/b> and <b>Dungeon Keeper<\/b> games. Gameplay involves players interacting with the game <b>world<\/b> by placing and <b>breaking<\/b> various types of <b>blocks<\/b> in a <b>three-dimensional<\/b> environment. In this environment, players can <b>build<\/b> creative structures, creations, and artwork on <b>multiplayer<\/b> servers and <b>singleplayer<\/b> worlds across multiple game modes.<\/p>\n<p><b>Skills<\/b>: <i>Linux<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/MinecraftBedrockInGame.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/MinecraftBedrockInGame.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;In-Game<\/b><br \/>\n&nbsp;&nbsp;&nbsp;Screenshot<\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/ZonkTechnology.jpeg\" alt=\"\" width=\"100\" height=\"55\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Linux Servers<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Zonk Technology<br \/>\n<i>&nbsp;&nbsp;&nbsp;Jul 2020 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Currently host a collection of bespoke <b>Terraformed Debian<\/b> and <b>Ubuntu<\/b> cloud servers with <b><a href=\"https:\/\/www.linode.com\/\" target=\"_blank\">Linode<\/a><\/b> (Akamai), supporting the following services&#8230;<\/p>\n<p>\u2022 Ayestaran.Dev (Development)<br \/>\n\u2022 AI Chatbot (Open WebUI)<br \/>\n\u2022 AI Whiteboard (Make Real)<br \/>\n\u2022 Bulletin Board System (BBS)<br \/>\n\u2022 Element Matrix Server (Messaging)<br \/>\n\u2022 Minecraft Bedrock Server<br \/>\n\u2022 Minecraft Server Status Api<br \/>\n\u2022 Virtual Private Network (VPN)<br \/>\n\u2022 Virtual Private Servers (VPS)<br \/>\n\u2022 XMRig Monero Cryptocurrency Miner<\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/www.linode.com\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/07\/Akamai.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Hosting Link<\/b><\/h4>\n<\/div>\n<\/div>\n<p><b>Skills:<\/b> <i>Linux \u00b7 Terraform \u00b7 Docker \u00b7 Nginx \u00b7 Apache \u00b7 Node.js \u00b7 Next.js \u00b7 Databases \u00b7 MongoDB \u00b7 Redis \u00b7 SQLite \u00b7 NoSQL \u00b7 MySQL \u00b7 SQL \u00b7 Web Services \u00b7 PHP \u00b7 PhpMyAdmin \u00b7 RESTful APIs \u00b7 JSON \u00b7 HTML \u00b7 JavaScript \u00b7 Python (Programming Language) \u00b7 Large Language Models (LLM) \u00b7 Artificial Intelligence (AI)<\/i><\/p>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/ZonkTechnology.jpeg\" alt=\"\" width=\"100\" height=\"55\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;iTimeTable<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Zonk Technology<br \/>\n<i>&nbsp;&nbsp;&nbsp;Jun 2019 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/itimetable.zonk.technology\" target=\"_blank\">https:\/\/itimetable.zonk.technology\/<\/a><\/p>\n<p>Available on the Apple App Store<\/p>\n<p>Developed in <b>Swift<\/b>, compatible with <b>iOS 9<\/b> through to <b>iOS 26<\/b> including <b>Apple Silicon<\/b><\/p>\n<p>TimeTable is a simple app that displays the <b>current<\/b> and following <b>lesson<\/b>, while still allowing the user to <b>navigate<\/b> through <b>day-to-day<\/b> studies. An <b>achievement summary<\/b> and <b>star rating<\/b> can be added to each lesson, then <b>viewed<\/b> or <b>exported<\/b> as a <b>weekly<\/b> compilation.<\/p>\n<p>\u2022 Digital alternative to a conventional paper version<br \/>\n\u2022 Navigate to current, previous and next lesson<br \/>\n\u2022 Add, edit and delete existing lessons<br \/>\n\u2022 Rate each lesson achievement between zero and five stars<br \/>\n\u2022 Achievement week average star rating<br \/>\n\u2022 Import and export timetable templates<br \/>\n\u2022 Templates exported as comma-separated value format<br \/>\n\u2022 View and export achievements by week number and year<br \/>\n\u2022 Automatic backup of existing timetable and achievements prior to template import<br \/>\n\u2022 Lessons are automatically refreshed when the app is moved from the background to the foreground<br \/>\n\u2022 Lessons completed progress bar<br \/>\n\u2022 Current week number<br \/>\n\u2022 Alternative day picker<br \/>\n\u2022 Files app compatible<br \/>\n\u2022 Import and export via iTunes file sharing<br \/>\n\u2022 Edit exported timetable templates using a preferred comma-separated value editor, ready for re-importing<br \/>\n\u2022 The achievement editor supports the use of dictation and emojis<br \/>\n\u2022 Supports dark mode<br \/>\n\u2022 View and navigate through the current daily timetable on the Apple Watch<br \/>\n\u2022 Supports three timetables and biometric authentication<\/p>\n<p><b>Skills<\/b>: <i>Xcode \u00b7 Swift (Programming Language) \u00b7 SQLite \u00b7 SQL<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/apps.apple.com\/gb\/app\/itimetable\/id1436434908\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/iTimeTable.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Apple App Store Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">&nbsp;&nbsp;&nbsp;<br \/>\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/11\/Neo-Pascal.png\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Binary2Decimal &#8211; Francis Combe Academy Year 9 Project<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran and Neo-Pascal Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Jul &#8211; Oct 2018<\/i><\/h4>\n<\/div>\n<\/div>\n<p>The aim of the project was to help people learn about binary and to be able to quickly convert binary to decimal through muscle memory. The project tried to make the device and the information as easy to use and understand as well as including all the necessary information needed to learn from this project.<\/p>\n<p>It was decided to opt for the PIC16F84A Microcontroller with an external clock connected to a 16 x 2 Alphanumeric LCD Character Display. The project has been built on a breadboard comprising of discrete components such as a bicolour LED, various resistors, capacitors, several push to make switches, a 4Mhz crystal and an off the shelf inline 3.3\/5.0v power supply module.<\/p>\n<p><a href=\"https:\/\/github.com\/neo-pascal\/Binary2Decimal\" target=\"_blank\">Available on GitHub<\/a><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/11\/SpringProjectFormAward9Bo1.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/11\/SpringProjectFormAward9Bo1.png\" alt=\"\" width=\"150\" height=\"75\"><\/a>&nbsp;&nbsp;&nbsp;<br \/>\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/11\/SpringProjectSpecialAward9B01.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/11\/SpringProjectSpecialAward9B01.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Awards<\/b><\/h4>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/Binary2Decimal.pdf\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/11\/Binary2DecimalDocumentation.jpg\" alt=\"\" width=\"75\" height=\"150\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Documentation<\/b><\/h4>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/11\/Binary2Decimal_PicMicrocontroller.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/11\/Binary2Decimal_PicMicrocontroller.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Completed Build Photo<\/b><\/h4>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/Binary2Decimal.mp4\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/11\/Binary2DecimalDemoVideoScreenshot.jpg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Video Demonstration<\/b><\/h4>\n<\/div>\n<\/div>\n<p><b>Skills<\/b>: <i>Microchip PIC \u00b7 PIC Assembly \u00b7 Electronics<\/i><\/p>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/TheOpenUniversity.jpeg\" alt=\"\" width=\"65\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Personal Open University Blogs<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with The Open University<br \/>\n<i>&nbsp;&nbsp;&nbsp;Oct 2015 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>My day to day Sense programming<\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/learn1.open.ac.uk\/mod\/oublog\/view.php?user=296178\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/OuPersonalBlogs.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Blogs Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;RoboMongo2Json<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Feb 2015 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Converts exported <b>Robomongo<\/b> text mode results into a valid <b>JSON<\/b> format<\/p>\n<p><a href=\"https:\/\/github.com\/Code-Munkeys\/RoboMongo2Json\" target=\"_blank\">Available on GitHub<\/a><\/p>\n<p>Project source code includes&#8230;<\/p>\n<p>1. Windows Application (Visual Studio 2012 VB)<br \/>\n2. Sample Data<\/p>\n<p><b>Skills<\/b>: <i>VB.NET \u00b7 .NET \u00b7 MongoDB<\/i><\/p>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;FiveM Server<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Jan 2015 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>FiveM is a modification for <b>Grand Theft Auto V<\/b> enabling you to play multiplayer <b>RPG<\/b> on a customised dedicated server.<\/p>\n<p>CTAT: <b>134.255.217.129:30160<\/b><\/p>\n<p>(M.2 SSD, Gaming CPU 3.4-4.4GHz, DDR4 memory) Max 10 Players<\/p>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/ZonkTechnology.jpeg\" alt=\"\" width=\"100\" height=\"55\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;iPicSolve\u00ae<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Zonk Technology<br \/>\n<i>&nbsp;&nbsp;&nbsp;Nov 2014 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/ipicsolve.zonk.technology\" target=\"_blank\">https:\/\/ipicsolve.zonk.technology\/<\/a><\/p>\n<p>Available on the Apple App Store<\/p>\n<p>Developed in <b>Objective-C<\/b>, compatible with <b>iOS 7<\/b> through to <b>iOS 26<\/b> including <b>Apple Silicon<\/b><\/p>\n<p>iPicSolve\u00ae is based on the classic <b>slide puzzle<\/b>, dating back to the <b>1800&#8217;s<\/b>. The rules are simple &#8211; <b>slide<\/b> the <b>tiles<\/b> to <b>restore<\/b> the <b>original<\/b> image.<\/p>\n<p><b>Capture, Create, Play and Share<\/b><\/p>\n<p>\u2022 Choose puzzle sizes from 8 to 24 segments<br \/>\n\u2022 Import images via camera or from an album<br \/>\n\u2022 Customise your favourite images with the built-in editor<br \/>\n\u2022 Edited images are automatically copied to the camera roll<br \/>\n\u2022 Built-in move counter and optional game timer<br \/>\n\u2022 View and export game history via email<br \/>\n\u2022 Selectable shuffle mode<br \/>\n\u2022 One tap move<br \/>\n\u2022 Displays previous game score<br \/>\n\u2022 Share completed puzzles on social media<br \/>\n\u2022 Showcase best game scores on 18 different Leaderboards<br \/>\n\u2022 Auto-Solve mode<\/p>\n<p><b>Skills<\/b>: <i>Xcode \u00b7 Objective-C \u00b7 SQLite \u00b7 SQL<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/apps.apple.com\/gb\/app\/ipicsolve\/id931391224\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/iPicSolve.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Apple App Store Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/ZonkTechnology.jpeg\" alt=\"\" width=\"100\" height=\"55\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;iWeatherMap<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Zonk Technology<br \/>\n<i>&nbsp;&nbsp;&nbsp;Sep 2014 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/iweathermap.zonk.technology\" target=\"_blank\">https:\/\/iweathermap.zonk.technology\/<\/a><\/p>\n<p>Available on the Apple App Store<\/p>\n<p>Developed in <b>Objective-C<\/b>, compatible with <b>iOS 7<\/b> through to <b>iOS 26<\/b> including <b>Apple Silicon<\/b><\/p>\n<p>Hassle free, <b>past<\/b> and <b>present<\/b> weather <b>forecasting<\/b> with accurate <b>short term<\/b> and <b>longterm<\/b> future predictions, anywhere in the world. The simple to use UI comes into it&#8217;s own when choosing a <b>geographical<\/b> location within a specific point in time, making it ideal for a variety of forecasting requirements.<\/p>\n<p>\u2022 Simple to follow graphical weather dashboard<br \/>\n\u2022 Easy to use world map with custom or auto locate feature<br \/>\n\u2022 Date and time picker for past, present and future forecasting<br \/>\n\u2022 Choose between Imperial and Metric system<br \/>\n\u2022 Switch between Mph and Mps, regardless of selected unit type<br \/>\n\u2022 Retrieve location information from current co-ordinates<br \/>\n\u2022 Custom location search bar<br \/>\n\u2022 View raw weather station data<br \/>\n\u2022 Copy to clipboard, location information &#038; raw weather station data<br \/>\n\u2022 Export forecasts via email and Dropbox<\/p>\n<p><b>Skills<\/b>: <i>Xcode \u00b7 Linux \u00b7 MongoDB \u00b7 PHP \u00b7 Apache \u00b7  Objective-C \u00b7 RESTful APIs<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/apps.apple.com\/gb\/app\/iweathermap\/id910479116\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/iWeatherMap.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Apple App Store Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/ZonkTechnology.jpeg\" alt=\"\" width=\"100\" height=\"55\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;iColourPicker<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Zonk Technology<br \/>\n<i>&nbsp;&nbsp;&nbsp;Aug 2014 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/icolourpicker.zonk.technology\" target=\"_blank\">https:\/\/icolourpicker.zonk.technology\/<\/a><\/p>\n<p>Available on the Apple App Store<\/p>\n<p>Developed in <b>Objective-C<\/b>, compatible with <b>iOS 7<\/b> through to <b>iOS 26<\/b> including <b>Apple Silicon<\/b><\/p>\n<p>The user can <b>extrapolate<\/b> both <b>decimal<\/b> and <b>hexadecimal<\/b> RGB colour values derived from a given image by simply tapping on the screen, whether it be the from the <b>camera<\/b> or an existing <b>album<\/b>. The <b>built-in<\/b> colour picker makes it easy to choose from and create a <b>wide range<\/b> of colours. Colour <b>swatches<\/b> can be <b>copied<\/b> and <b>exported<\/b> via <b>email<\/b> or <b>Dropbox<\/b>.<\/p>\n<p>\u2022 Add an image via camera or an album<br \/>\n\u2022 Simply tap anywhere on an image to generate a corresponding RGB value<br \/>\n\u2022 Export Bookmark list and colour swatches via email or Dropbox<br \/>\n\u2022 Manually inputted hexadecimal values are automatically converted to decimal<br \/>\n\u2022 Choose from a wide range of colours with the aid of the custom picker<br \/>\n\u2022 Rotate image, portrait or landscape<br \/>\n\u2022 Export camera EXIF to clipboard (Exchangeable image file format)<br \/>\n\u2022 Very useful for web designers, creative professionals and software engineers<\/p>\n<p><b>Skills<\/b>: <i>Xcode \u00b7 Objective-C<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/apps.apple.com\/gb\/app\/icolourpicker\/id908617854\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/iColourPicker.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Apple App Store Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;iToDo<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;May 2014 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>An <b>open source<\/b>, <b>full stack<\/b> approach to <b>integrating<\/b> mobile and server side technology.<\/p>\n<p>Available on <a href=\"https:\/\/github.com\/Code-Munkeys\/iToDo\" target=\"_blank\">GitHub<\/a><\/p>\n<p>Project source code includes&#8230;<\/p>\n<p>1. <b>Mobile App<\/b> (Xcode 26 \/ Objective-C iOS26)<br \/>\n2. <b>Restful Webservice C# WebAPI<\/b> (MongoDB.Net Driver 1.8.3.9)<br \/>\n3. <b>Database (MongoDB 2.4.9)<\/b><\/p>\n<p><b>Skills<\/b>: <i>Xcode \u00b7 Objective-C \u00b7 MongoDB \u00b7 .NET \u00b7 C# \u00b7 IIS \u00b7 RESTful APIs<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/07\/iToDoSplash.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/07\/iToDoSplash.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Mobile App<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Splash Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/07\/iToDoDetailPage.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/07\/iToDoDetailPage.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Mobile App<\/b><\/h4>\n<h5>&nbsp;&nbsp;&nbsp;<i>Task Detail Page Screenshot<\/i><\/h5>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;CodeMunkeys (Meetup)<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Feb 2014 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><b>Links:<\/b><br \/>\n<a href=\"https:\/\/www.meetup.com\/login\/?returnUri=https%3A%2F%2Fwww.meetup.com%2FCodeMunkeys%2Fmembers%2F131221022%2F\" target=\"_blank\">Meetup<\/a><br \/>\n<a href=\"https:\/\/github.com\/Code-Munkeys\" target=\"_blank\">GitHub<\/a><\/p>\n<p>CodeMunkeys is a <b>meet<\/b> up for <b>software developers<\/b> interested in <b>learning<\/b> new <b>technologies<\/b> with like minded people. We meet every 3 weeks on Thursday evening to discuss a topic in the <b>software engineering<\/b> genre. Members can vote on which topic they would like to discuss. There will be web links to suggested learning in preparation for the meet up.<\/p>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/ZonkTechnology.jpeg\" alt=\"\" width=\"100\" height=\"55\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;iWebSearch<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Zonk Technology<br \/>\n<i>&nbsp;&nbsp;&nbsp;Dec 2013 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/iwebsearch.zonk.technology\" target=\"_blank\">https:\/\/iwebsearch.zonk.technology\/<\/a><\/p>\n<p>Available on the Apple App Store<\/p>\n<p>Developed in <b>Objective-C<\/b>, compatible with <b>iOS 6<\/b> through to <b>iOS 26<\/b> including <b>Apple Silicon<\/b><\/p>\n<p>WebSearch is designed to <b>speed up<\/b> the process required when submitting a single <b>search<\/b> term to <b>multiple<\/b> search engines. By simply tapping on the desired <b>search engine<\/b> the user can scroll through the list then repeat the process by <b>navigating<\/b> back and tapping an alternative search engine. <b>Bookmarked<\/b> results can be <b>viewed<\/b> then <b>exported<\/b> via <b>email<\/b> or <b>Dropbox<\/b> in a <b>Comma-separated<\/b> format.<\/p>\n<p>\u2022 Search 6 Popular Search Engines with Ease<br \/>\n\u2022 Check ranking with just a single click<br \/>\n\u2022 Great as a research tool<br \/>\n\u2022 HyperText Markup Language (HTML) Viewer<br \/>\n\u2022 Copy current URL or HTML to Clipboard<br \/>\n\u2022 Exportable Bookmarks via Email and Dropbox<br \/>\n\u2022 CSV compatible with most spreadsheet applications<\/p>\n<p><b>Skills<\/b>: <i>Xcode \u00b7 Objective-C \u00b7 SQLite \u00b7 SQL<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/apps.apple.com\/gb\/app\/iwebsearch\/id771845202\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/iWebSearch.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Apple App Store Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/ZonkTechnology.jpeg\" alt=\"\" width=\"100\" height=\"55\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;iTracker<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Zonk Technology<br \/>\n<i>&nbsp;&nbsp;&nbsp;Dec 2013 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/itracker.zonk.technology\" target=\"_blank\">https:\/\/itracker.zonk.technology\/<\/a><\/p>\n<p>Available on the Apple App Store<\/p>\n<p>Prototyped in <b>PhoneGap<\/b> Migrated to Native <b>Objective-C<\/b>, compatible with <b>iOS 6<\/b> through to <b>iOS 26<\/b> including <b>Apple Silicon<\/b><\/p>\n<p>iTracker is a <b>GPS<\/b> based <b>telemetry logger<\/b> that stores <b>real-time<\/b> location data at <b>user defined<\/b> intervals. Journey information can be displayed on an <b>interactive map<\/b> or through the built-in <b>CSV<\/b> and <b>GPX<\/b> viewer. <b>Routes<\/b> exported via <b>email<\/b> and <b>Dropbox<\/b> can be <b>imported<\/b> into <b>third party software<\/b> that support both <b>Comma-separated<\/b> and <b>GPS eXchange<\/b> file formats. <b>Waypoints<\/b> can be <b>graphically<\/b> or manually <b>bookmarked<\/b>, then <b>imported<\/b> and <b>exported<\/b> via the <b>clipboard<\/b>.<\/p>\n<p>\u2022 Multi-Purpose GPS Telemetry Logger<br \/>\n\u2022 Real-time Waypoint Tracking, ideal for Geocaching<br \/>\n\u2022 Interactive Routes (Road and Hybrid)<br \/>\n\u2022 Route GPX &#038; CSV Viewer (Export Via Email \/ Clipboard \/ Dropbox)<br \/>\n\u2022 Graphically or Manually Bookmark Waypoints<br \/>\n\u2022 Pan between Current Location and a Selected Waypoint<br \/>\n\u2022 Graphically call up and Zoom into any Bookmarked Waypoint<br \/>\n\u2022 Exportable Bookmarked Waypoints (Via Clipboard and Dropbox)<br \/>\n\u2022 Point-to-Point \u201cAs the crow flies\u201d Distance Calculator<br \/>\n\u2022 Speed and Elevation Performance Graph<br \/>\n\u2022 Retrieve location information from current co-ordinates<br \/>\n\u2022 Search bar, enabling a text lookup for any given location<br \/>\n\u2022 Switch between Imperial and Metric<br \/>\n\u2022 Speech Notification<br \/>\n\u2022 16 Point Compass<br \/>\n\u2022 Granular Data<br \/>\n\u2022 Copy multipoint tracking list to clipboard<br \/>\n\u2022 Send current location or waypoint via SMS (Ideal for lone workers)<br \/>\n\u2022 Export the history and waypoint database via iTunes file sharing<\/p>\n<p><b>Skills<\/b>: <i>Xcode \u00b7 Objective-C \u00b7 SQLite \u00b7 SQL<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/apps.apple.com\/gb\/app\/itracker\/id726960882\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/iTracker.png\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Apple App Store Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Minecraft Java Server 1.16.4<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Jun 2013 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Ayestaran Minecraft Server <b>Forge 1.5.2<\/b> &#8211; <b>1.16.4<\/b><\/p>\n<p>BungeeCord IP: <b>85.202.160.228<\/b>: Port: <b>2248<\/b> @ Revivenode<\/p>\n<p><b>History<\/b>&#8230;<\/p>\n<p>Minecraft is a <b>sandbox<\/b> construction game created by <b>Mojang AB<\/b> founder <b>Markus Persson<\/b>, and inspired by the <b>Infiniminer<\/b>, <b>Dwarf Fortress<\/b> and <b>Dungeon Keeper<\/b> games. Gameplay involves players interacting with the game <b>world<\/b> by placing and <b>breaking<\/b> various types of <b>blocks<\/b> in a <b>three-dimensional<\/b> environment. In this environment, players can <b>build<\/b> creative structures, creations, and artwork on <b>multiplayer<\/b> servers and <b>singleplayer<\/b> worlds across multiple game modes.<\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/minecraftjavaserver.com\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/MinecraftJava.jpeg\" alt=\"\" width=\"150\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Landing Page<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Microsoft SQL Facebook Group<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Nov 2010 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/www.facebook.com\/groups\/164023756953397\/\" target=\"_blank\">Facebook Page<\/a><\/p>\n<p>Group Founder with <b>51K<\/b> members<\/p>\n<p><b>MCTS 70-433<\/b> Training Kit with <b><a href=\"https:\/\/secure.ayestaran.co.uk\/pascaltriangle\/\" target=\"_blank\">On-line Query Analyser Interface<\/b><\/a><\/p>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/ZonkTechnology.jpeg\" alt=\"\" width=\"100\" height=\"55\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;PDA Digital Jobsheet<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Zonk Technology<br \/>\n<i>&nbsp;&nbsp;&nbsp;Aug 2005 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Also available to download from <b>Archive.Org<\/b> @ <a href=\"https:\/\/archive.org\/details\/DigitalJobsheet\" target=\"_blank\">https:\/\/archive.org\/details\/DigitalJobsheet<\/a><\/p>\n<p>Developed in <b>Embedded Visual Basic<\/b> for <b>Windows CE<\/b><\/p>\n<p>PDA Digital Jobsheet re-invents the job sheet as we know it. This paper less system enables the Engineer&#8217;s client to sign digitally a job sheet, the details along with the encoded signature are uploaded to a Webserver where it can be viewed in real-time by the employer.<\/p>\n<p><b>Key Features<\/b>&#8230;<\/p>\n<p>\u2022 The encoded Signature is digitally stored with <b>Job Sheet<\/b> and <b>exported<\/b> as an <b>SQL Statement<\/b> ready for <b>Uploading<\/b><br \/>\n&nbsp;&nbsp;to a Webserver and viewing on-line<br \/>\n\u2022 MS SQL Server and Web Integration<br \/>\n\u2022 The Job Sheets are stored in a Pocket Access Database which can be exported as a Comma Separated File<br \/>\n\u2022 Jobsheets are stored in an SQL Server Database Table<\/p>\n<p><b>Skills<\/b>: <i>Visual Basic \u00b7 Microsoft SQL Server \u00b7 SQL \u00b7 T-SQL<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/secure.zonktechnology.com\/legacy\/default.asp?page=PDADigitalJobsheet\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/DigitalJobsheet.jpeg\" alt=\"\" width=\"75\" height=\"100\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Legacy Windows CE App Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/ZonkTechnology.jpeg\" alt=\"\" width=\"100\" height=\"55\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;GPS Telemetry Recorder<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Zonk Technology<br \/>\n<i>&nbsp;&nbsp;&nbsp;Sep 2004 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Also available to download from <b>Archive.Org<\/b> @ <a href=\"https:\/\/archive.org\/details\/GpsTelemetryRecorder\" target=\"_blank\">https:\/\/archive.org\/details\/GpsTelemetryRecorder<\/a><\/p>\n<p>Developed in <b>Visual Basic 6<\/b> for <b>Windows<\/b><\/p>\n<p>GPS Telemetry Recorder displays <b>real-time<\/b> Global Positioning Information direct from a <b>GPS<\/b>. The <b>Datastream<\/b> received from the GPS can be saved to an <b>NMEA<\/b> File or placed into a <b>Database<\/b> hosted by <b>SQL Server<\/b>. The processed data can be displayed to a <b>Web Page<\/b> enabling a <b>live feed<\/b> to <b>Users<\/b> on the Internet. There are many applications for this software, such as performance recording <b>Track Day<\/b> Events.<\/p>\n<p><b>Key Features<\/b>&#8230;<\/p>\n<p>\u2022 Real-Time Graphical Datastream Analysis<br \/>\n\u2022 MS SQL Server and Web Integration<br \/>\n\u2022 Google Map, Satellite and Terrain View<br \/>\n\u2022 Datastream stored to either SQL Server or an NMEA File<br \/>\n\u2022 Datastream NMEA Playback<br \/>\n\u2022 Export to GPS Exchange Format File<br \/>\n\u2022 Choose between Nautical, Metric and Statute<br \/>\n\u2022 Supports NMEA 0183 and Garmin Protocols<\/p>\n<p><b>Skills<\/b>: <i>Visual Basic \u00b7 Microsoft SQL Server \u00b7 SQL \u00b7 T-SQL<\/i><\/p>\n<p><a href=\"https:\/\/secure.zonktechnology.com\/legacy\/Content\/Mp4\/GpsTelemetry.mp4\" target=\"_blank\">Demo Video<\/a><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/secure.zonktechnology.com\/legacy\/default.asp?page=GpsTelemetryRecorder\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/GpsTelemetryRecorder.jpeg\" alt=\"\" width=\"75\" height=\"100\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Legacy Windows App Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/ZonkTechnology.jpeg\" alt=\"\" width=\"100\" height=\"55\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Beacon Redirect<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Zonk Technology<br \/>\n<i>&nbsp;&nbsp;&nbsp;Nov 2003 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Developed in <b>Pascal<\/b> using <b>Delphi 7<\/b><\/p>\n<p><b>Internet Service Providers<\/b> normally supply a connection with a dynamic <b>IP address<\/b> allocated by a <b>DHCP<\/b> which is subject to change at anytime. If a home user or a small business wants to host a website on their own <b>Web Server<\/b> a different IP address would have to be given to internet users or a Domain <b>Name Server<\/b> everytime this IP address changed. A static IP address on the internet can be used as a Internet beacon and act as a link between the internet user and the Webserver assigned a dynamic IP address. Beacon Redirect can be used to keep the <b>domain name<\/b> pointing at your Web Server. Beacon Redirect is designed to continually monitor the <b>WAN<\/b> IP address of a Router or <b>Local Host<\/b> IP. If there is a change in the IP address the Internet Beacon is then updated with the new IP address by uploading a <b>Redirect HTML file<\/b> which links the user to the Webserver. A log is kept of changes made to the IP address.<\/p>\n<p><b>Skills<\/b>: <i>HTML \u00b7 Borland Delphi<\/i><\/p>\n<p><a href=\"https:\/\/secure.zonktechnology.com\/legacy\/Content\/Mp4\/BeaconRedirect.mp4\" target=\"_blank\">Demo Video<\/a><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/secure.zonktechnology.com\/legacy\/default.asp?page=BeaconRedirect\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/BeaconRedirect.jpeg\" alt=\"\" width=\"100\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Legacy Windows App Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/ZonkTechnology.jpeg\" alt=\"\" width=\"100\" height=\"55\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;mvTELNET<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Zonk Technology<br \/>\n<i>&nbsp;&nbsp;&nbsp;Oct 2003 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Also available to download from <b>Archive.Org<\/b> @ <a href=\"https:\/\/archive.org\/details\/mvTELNET\" target=\"_blank\">https:\/\/archive.org\/details\/mvTELNET<\/a><\/p>\n<p>Developed in <b>Visual Basic 6<\/b> for <b>Windows<\/b><\/p>\n<p>mvTELNET links <b>Visual Basic<\/b> with <b>MultiValue Systems<\/b>, bridging <b>Command Line<\/b> Interfacing with <b>GUI<\/b> Application development. <b>Commands<\/b> are sent in the same way as a <b>Virtual Terminal<\/b> with the added advantage that <b>PICK Basic<\/b> queries can be built up from information supplied by the User and then sent at a click of a button from within a developed <b>VB application<\/b>, the result <b>echoed<\/b> back and displayed in the desired <b>format<\/b>.<\/p>\n<p>Connect to our Server at <b>Host<\/b>: client.mvtelnet.com <b>Port<\/b>: 23 <b>Username<\/b>: user.<\/p>\n<p><b>Skills<\/b>: <i>Visual Basic<\/i><\/p>\n<p><a href=\"https:\/\/secure.zonktechnology.com\/legacy\/Content\/Mp4\/mvTELNET.mp4\" target=\"_blank\">Demo Video<\/a><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/secure.zonktechnology.com\/mvtelnet\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/mvTelnet.jpeg\" alt=\"\" width=\"100\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Legacy Windows App Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/ZonkTechnology.jpeg\" alt=\"\" width=\"100\" height=\"55\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Clocking System<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Zonk Technology<br \/>\n<i>&nbsp;&nbsp;&nbsp;Jan 2003 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Developed in <b>Pascal<\/b> using <b>Delphi 7<\/b><\/p>\n<p>This clocking system enables <b>employees<\/b> to clock in and out by simply <b>swiping<\/b> an <b>ID card<\/b> with a <b>barcode<\/b> printed on it, an alternative to any previously used <b>paper system<\/b>. The <b>personnel<\/b> and <b>clocking data<\/b> is stored on <b>Microsoft SQL Server<\/b> accessed via <b>ADO<\/b> using <b>Stored Procedures<\/b> to prepare and process employee clocking <b>records<\/b>. and <b>reports<\/b>.<\/p>\n<p>\u2022 Microsoft Sql Server Back End Database<br \/>\n\u2022 Daily Sign Log, Employee &#038; Personnel Browser<br \/>\n\u2022 Flexible Clocking Report<br \/>\n\u2022 Works with Laminated and Plastic Cards<\/p>\n<p><b>Skills<\/b>: <i>Borland Delphi<\/i><\/p>\n<p><a href=\"https:\/\/secure.zonktechnology.com\/legacy\/Content\/Mp4\/ClockingSystem.mp4\" target=\"_blank\">Demo Video<\/a><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/secure.zonktechnology.com\/legacy\/default.asp?page=ClockingSystem\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/ClockingSystem.jpeg\" alt=\"\" width=\"100\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Legacy Windows App Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/ZonkTechnology.jpeg\" alt=\"\" width=\"100\" height=\"55\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;FileMaker Server Control Centre<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Zonk Technology<br \/>\n<i>&nbsp;&nbsp;&nbsp;Jan 2003 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Developed in <b>Pascal<\/b> using <b>Delphi 7<\/b><\/p>\n<p>FileMaker Server Control Centre is a <b>GUI<\/b> front end to the <b>Win32 console<\/b> application FileMaker Server which allows the user to host and un-host <b>databases<\/b> without having to use the <b>command prompt<\/b>.<\/p>\n<p>\u2022 Scheduler<br \/>\n\u2022 Database Logger<br \/>\n\u2022 Assignable Database Shortcut Buttons<br \/>\n\u2022 Command Line<\/p>\n<p><b>Skills<\/b>: <i>Borland Delphi<\/i><\/p>\n<p><a href=\"https:\/\/secure.zonktechnology.com\/legacy\/Content\/Mp4\/Fmscc.mp4\" target=\"_blank\">Demo Video<\/a><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/secure.zonktechnology.com\/legacy\/default.asp?page=FMSCC\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/FMSCC.jpeg\" alt=\"\" width=\"100\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Legacy Windows App Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Dosimage<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Feb 1999 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Also available to download from <b>Archive.Org<\/b> @ <a href=\"https:\/\/archive.org\/details\/DOSIMAGE\" target=\"_blank\">https:\/\/archive.org\/details\/DOSIMAGE<\/a><\/p>\n<p>Developed in <b>Pascal<\/b> and <b>8086 Assembley<\/b> using <b>Borland Turbo Pascal<\/b><\/p>\n<p>FileMaker Server Control Centre is a <b>GUI<\/b> front end to the <b>Win32 console<\/b> application FileMaker Server which allows the user to host and un-host <b>databases<\/b> without having to use the <b>command prompt<\/b>.<\/p>\n<p>Dosimage allows the user to backup <b>MS-DOS<\/b> and <b>UNIX<\/b> floppy disks to an <b>image<\/b> file ready to be <b>restored<\/b> back to a <b>formatted<\/b> floppy disk at a later date.<\/p>\n<p><b>r<\/b>: read from 1.44mb floppy disk to hard drive<br \/>\n<b>w<\/b>: write to 1.44mb floppy disk from hard drive<\/p>\n<p>Usage: dosimage (r\/w) (filename.ext)<\/p>\n<p>A range of <b>MS-DOS<\/b> Bootable Disks can also be downloaded from <a href=\"http:\/\/www.fixdisks.com\" target=\"_blank\">http:\/\/www.fixdisks.com<\/a><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/secure.ayestaran.co.uk\/fixdisks\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Dosimage.jpeg\" alt=\"\" width=\"150\" height=\"100\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Legacy Dos App Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;PIC Microcontroller<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Aug 1997 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/github.com\/Code-Munkeys\/PIC_Microcontroller\" target=\"_blank\">GitHub<\/a><\/p>\n<p>PIC <b>16C84<\/b> \/ <b>16F84A<\/b> (RISC-like Assembly architecture)<\/p>\n<p>Demonstated how to create a 16 character message using the [<b>UP<\/b>] [<b>DOWN<\/b>] [<b>ENTER<\/b>] key via a 16&#215;2 LCD Module.<\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/07\/LCD_Module_16x2_4Bit_Project.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/07\/LCD_Module_16x2_4Bit_Project.jpeg\" alt=\"\" width=\"150\" height=\"100\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Project Demo<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Burn-In<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Apr 1997 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Also available to download from <b>Archive.Org<\/b> @ <a href=\"https:\/\/archive.org\/details\/burn-in.exe_dos\" target=\"_blank\">https:\/\/archive.org\/details\/burn-in.exe_dos<\/a><\/p>\n<p>Developed in <b>Pascal<\/b> and <b>8086 Assembley<\/b> using <b>Borland Turbo Pascal<\/b><\/p>\n<p>Burn-In soak tests important components within a <b>PC<\/b> such as the <b>CPU<\/b>, <b>Memory<\/b>, <b>Graphics<\/b>, <b>Audio card<\/b>, <b>Hard Drive<\/b> and <b>CD-Rom<\/b> by playing two <b>video<\/b> files simultaneously one from the <b>Hard<\/b> Drive and one from the <b>CD-Rom<\/b>. This software is <b>DOS<\/b> based so it does not require Windows to be installed, ideal for <b>soak testing<\/b> a PC without an Operating System.<\/p>\n<p>Simply boot from one of our Fix Disk which can be downloaded from <a href=\"http:\/\/www.fixdisks.com\" target=\"_blank\">http:\/\/www.fixdisks.com<\/a><\/p>\n<p><b>Skills<\/b>: <i>Borland Turbo Pascal<\/i><\/p>\n<p><a href=\"https:\/\/secure.zonktechnology.com\/legacy\/content\/mp4\/Burn-In.ia.mp4\" target=\"_blank\">Demo Video<\/a><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/secure.zonktechnology.com\/legacy\/default.asp?page=BurnIn\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/BurnIn.jpeg\" alt=\"\" width=\"150\" height=\"100\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Legacy Dos App Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Tooldisk<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Jul 1996 &#8211; Present<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Also available to download from <b>Archive.Org<\/b> @ <a href=\"https:\/\/archive.org\/details\/TOOLDISK\" target=\"_blank\">https:\/\/archive.org\/details\/TOOLDISK<\/a><\/p>\n<p>Developed in <b>Pascal<\/b> and <b>8086 Assembley<\/b> using <b>Borland Turbo Pascal<\/b><\/p>\n<p>Tooldisk is like a digital <b>Archaeologist\u2019s<\/b> toolkit for exploring old <b>floppy disks<\/b>!<\/p>\n<p>This is a <b>DOS based application<\/b> which allows the user to <b>analyse<\/b>, <b>modify<\/b> and <b>recover<\/b> data from most <b>MS-DOS<\/b> or <b>Unix 1.44Mb Floppy Disks<\/b>, sector by sector. Tooldisk is packed with features such as a powerful string <b>search facility<\/b> allowing a text document to be found by simply typing in part of a sentence, data found can then be restored by simply marking the beginning and end <b>sector<\/b> and saving it to a <b>hard disk<\/b>. Tooldisk also comes with a Floppy Disk data <b>eraser feature<\/b>.<\/p>\n<p>Simply boot from one of our Fix Disk which can be downloaded from <a href=\"http:\/\/www.fixdisks.com\" target=\"_blank\">http:\/\/www.fixdisks.com<\/a><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/secure.zonktechnology.com\/legacy\/default.asp?page=Tooldisk\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Tooldisk.jpeg\" alt=\"\" width=\"150\" height=\"100\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Legacy Dos App Link<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/TheOpenUniversity.jpeg\" alt=\"\" width=\"65\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;OU Sense \/ Scratch<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with The Open University<br \/>\n<i>&nbsp;&nbsp;&nbsp;Oct 2015 &#8211; Jan 2021<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Collection of Scratch and Sense programming exercises.<\/p>\n<p><b>Links<\/b>&#8230;<\/p>\n<p><a href=\"https:\/\/github.com\/Code-Munkeys\/Sense\" target=\"_blank\">GitHub Sense<\/a><br \/>\n<a href=\"https:\/\/github.com\/Code-Munkeys\/Scratch\" target=\"_blank\">GitHub Scratch<\/a><\/p>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Simplyhealth.jpeg\" alt=\"\" width=\"85\" height=\"85\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Mobile Sante\u0301 (A member\u2019s guide) Prototype and Proof of Concept<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Simplyhealth<br \/>\n<i>&nbsp;&nbsp;&nbsp;Feb 2012 &#8211; Feb 2014<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Designed and developed in a <b>Windows<\/b> \/ <b>Mac<\/b> \/ <b>iOS<\/b> \/ <b>Cloud<\/b> and <b>SQL<\/b> Development environment using <b>Windows Azure<\/b>, <b>AWS<\/b>, <b>Visual Studio 2012<\/b>, <b>MS SQL Server<\/b> \/ <b>Reporting Services 2012<\/b>, <b>DOT NET Framework<\/b> 4.5, <b>Xcode Objective-C<\/b> (iOS6), <b>TestFlight<\/b>, <b>Dreamweaver<\/b> CS6, <b>PhoneGap<\/b> 2.7, <b>Hybrid<\/b>, <b>jQuery Mobile<\/b> and <b>Html5<\/b>.<\/p>\n<p><b>Skills<\/b>: <i>Xcode \u00b7 jQuery \u00b7 iOS \u00b7 Microsoft SQL Server \u00b7 .NET \u00b7 SQL \u00b7 T-SQL \u00b7 Windows Azure \u00b7 Visual Studio \u00b7 HTML5 \u00b7 Objective-C<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/secure.ayestaran.co.uk\/franzayestaran\/MobileSante.pdf\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Sante-1.jpeg\" alt=\"\" width=\"75\" height=\"100\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Mobile App<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/WestHertsCollege2.jpeg\" alt=\"\" width=\"85\" height=\"85\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Dreamweaver Website<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with West Herts College<br \/>\n<i>&nbsp;&nbsp;&nbsp;Sep 2010 &#8211; Mar 2011<\/i><\/h4>\n<\/div>\n<\/div>\n<p>This is the final course in the series and is a <b>Level 3 course<\/b>. The course is extremely intensive and follows on from the Web Site Design Course. I developed the website in order to document every stage of the course.<\/p>\n<p><b>Skills<\/b>: <i>CSS \u00b7 HTML \u00b7 Linux \u00b7 JavaScript \u00b7 MySQL \u00b7 Apache<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"http:\/\/dreamweaver.website\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/DreamweaverWebsite.jpeg\" alt=\"\" width=\"100\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Website<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Track Days<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Sep 2004 &#8211; Jun 2007<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Used to test the GPS Telemetry Recorder<\/p>\n<p>Also available to download from <b>Archive.Org<\/b> @ <a href=\"https:\/\/archive.org\/details\/GpsTelemetryRecorder\" target=\"_blank\">https:\/\/archive.org\/details\/GpsTelemetryRecorder<\/a><\/p>\n<p>Developed bespoke <b>GPS<\/b> software for the purpose of logging <b>real-time telemetry<\/b> that is streamed direct from a GPS. The <b>Datastream<\/b> received from the GPS can be saved to an <b>NMEA<\/b> File or placed into a <b>Database<\/b> hosted by <b>SQL Server<\/b>. The processed data can be displayed to a <b>Web Page<\/b> enabling a live feed to <b>Users<\/b> on the <b>Internet<\/b><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/secure.ayestaran.co.uk\/motorcycletelemetry\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/MotorcycleTelemetry.png\" alt=\"\" width=\"100\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Website<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Archive.Org<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Jan 1992 &#8211; Jan 2005<\/i><\/h4>\n<\/div>\n<\/div>\n<p>A collection of 10 published software applications.<\/p>\n<p><b>Skills<\/b>: <i>Borland Turbo Pascal \u00b7 Pascal  \u00b7 MS-DOS \u00b7 Visual Basic \u00b7 Turbo C++ \u00b7 Windows CE<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/archive.org\/search?query=franz+ayestaran\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/ArchiveDotOrg.jpeg\" alt=\"\" width=\"100\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Internet Archive: Digital Library of Free &#038; Borrowable Texts, Movies, Music &#038; Wayback Machine<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Fix Disks<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Feb 1996 &#8211; Feb 1999<\/i><\/h4>\n<\/div>\n<\/div>\n<p>A collection of DOS based utilities.<\/p>\n<p><b>Skills<\/b>: <i>Borland Turbo Pascal \u00b7 Pascal<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"http:\/\/fixdisks.com\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/FixDisks.jpeg\" alt=\"\" width=\"100\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Website<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Anim<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Sep 1992 &#8211; Sep 1992<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Anim is a DOS based application developed using <b>Borland Turbo C<\/b> which allows the user to <b>create<\/b>, <b>edit<\/b>, <b>save<\/b>, <b>load<\/b> and animate a set of nine 50&#215;50 pixel 16 colour <b>icons<\/b> \/ <b>sprites<\/b> (45KB in size) which in turn can be imported into another project.<\/p>\n<p><b>Skills<\/b>: <i>Borland Turbo C \u00b7 C (Programming Language)<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/archive.org\/details\/anim.exe\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Anim.jpeg\" alt=\"\" width=\"100\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Available on Archive.Org<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;GUITXTED<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Mar 1992 &#8211; Mar 1992<\/i><\/h4>\n<\/div>\n<\/div>\n<p>GUITXTED is a simple <b>DOS<\/b> based <b>text editor<\/b> with a <b>graphic user interface<\/b>.<\/p>\n<p><b>Skills<\/b>: <i>Borland Turbo Pascal \u00b7 Pascal<\/i><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/archive.org\/details\/GUITXTED.EXE\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/GUITXTED.png\" alt=\"\" width=\"100\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Available on Archive.Org<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Super Scroller<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Nov 1990 &#8211; Nov 1990<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Commodore Amiga<\/p>\n<p>Super Scroller<\/p>\n<p>Created by Franz Ayestaran &#8211; November 1990<\/p>\n<p>Developed in <b>68000<\/b> on the <b>A2000 Model B<\/b> using <b>DevPac 3.02<\/b> in <b>Workbench 1.3<\/b><\/p>\n<p>An assembly code routine that scrolls up and down a set of <b>Red<\/b> \/ <b>Green<\/b> \/ <b>Blue<\/b> \/ <b>Grey<\/b> gradient colour bars using the background colour register vertical beam position.<\/p>\n<p><b>Skills<\/b>: <i>DevPac \u00b7 68000  \u00b7 AmigaOS<\/i><\/p>\n<p><a href=\"https:\/\/youtu.be\/XT2AX8xN2zI\" target=\"_blank\">YouTube Video Demo<\/a><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/github.com\/Code-Munkeys\/68000\/tree\/main\/Amiga\/SuperScroller\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/SuperScroller.jpeg\" alt=\"\" width=\"100\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Available on GitHub<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Profile-1.jpeg\" alt=\"\" width=\"100\" height=\"100\">\n<\/div>\n<div class=\"text\">\n<h3><b>&nbsp;&nbsp;&nbsp;Spritewise<\/b><\/h3>\n<h4>&nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran<br \/>\n<i>&nbsp;&nbsp;&nbsp;Sep 1985 &#8211; Sep 1985<\/i><\/h4>\n<\/div>\n<\/div>\n<p>Developed in <b>Basic<\/b> on the <b>BBC Micro<\/b><\/p>\n<p>Enables the <b>user<\/b> to create user defined <b>sprites<\/b> and store them to memory and a <b>5.25&#8243; floppy disk<\/b>.<\/p>\n<div style=\"display: flex; align-items: center;\">\n<div class=\"image\">\n\t\t<a href=\"https:\/\/github.com\/Code-Munkeys\/BBC-Micro\/tree\/master\/Spritewise\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"border-radius: 5%;\" src=\"https:\/\/franz.ayestaran.dev\/wp-content\/uploads\/2025\/05\/Spritewise.jpeg\" alt=\"\" width=\"100\" height=\"75\"><\/a><\/div>\n<div class=\"text\">\n<h4><b>&nbsp;&nbsp;&nbsp;Available on GitHub<\/b><\/h4>\n<\/div>\n<\/div>\n<hr style=\"border: 2px solid #2cbf77; border-radius: 5px;\">\n<p><!-- ************************************************************************************************* --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp;&nbsp;LLM Training Dashboard (AI-Augmented Software Engineering) &nbsp;&nbsp;&nbsp;Associated with Franz Ayestaran &nbsp;&nbsp;&nbsp;May 2026 &#8211; Present https:\/\/dashboard.llmtraining.dev https:\/\/ollamacloud.dev Hosted on an Apple M2 Pro system (Darwin 25.5.0, arm64 architecture) featuring a 10\u2011core CPU @ 3.5 GHz, 16 GB unified memory, and Metal\u2011accelerated Apple M2 GPU with up to 16 GB VRAM shared bandwidth. The LLM Training Dashboard [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-66","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/franz.ayestaran.dev\/index.php?rest_route=\/wp\/v2\/pages\/66","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/franz.ayestaran.dev\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/franz.ayestaran.dev\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/franz.ayestaran.dev\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/franz.ayestaran.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=66"}],"version-history":[{"count":508,"href":"https:\/\/franz.ayestaran.dev\/index.php?rest_route=\/wp\/v2\/pages\/66\/revisions"}],"predecessor-version":[{"id":1388,"href":"https:\/\/franz.ayestaran.dev\/index.php?rest_route=\/wp\/v2\/pages\/66\/revisions\/1388"}],"wp:attachment":[{"href":"https:\/\/franz.ayestaran.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=66"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}