Selected work & experiments

Every build starts
with a question.

From production AI to the mathematics underneath. Explore the problem, what I built, and what came out of it.

14 projects

Featured projectData Science/Analytics

Loan analysis

Pythonscikit-learnXGBoostPandas
Random Forest model accuracy
97.40%
#1 feature in Random Forest and XGBoost
Income
LogReg after log transform + scaling
+1.49 pp
Problem
Which customer attributes relate to personal-loan uptake, and how do classification approaches compare?
My work
Analyzed customer data and compared classification models, delivering a notebook, model artifacts and a written report.
Result
Random Forest recorded 97.40% accuracy. Tree-based feature importance ranked Income first in both Random Forest (56.34%) and XGBoost (39.72%). For Logistic Regression, applying a log1p transform with RobustScaler increased recorded accuracy from 88.72% to 90.21%, a +1.49 percentage-point improvement.
Featured projectML Engineering

Makemore

PythonPyTorchNeural Network ImplementationPaper ReadingNatural Language ProcessingDeep Learning
parameters built and trained from scratch
10M+
character context window
256
Problem
Understanding a language model requires more than calling an API. I wanted to follow the mathematics from a bigram baseline to a working GPT.
My work
Built a character-level GPT from scratch using PyTorch, implementing attention, training and Indonesian poetry generation.
Result
Delivered a configurable GPT module with six Transformer blocks, six attention heads per block and a 256-character context window, plus training/inference scripts and generated poetry examples.
Featured projectAI Engineering

Dio the Chatbot

LangChainRAGRetrievalEmbeddingsTypeScriptNext.jsHybrid SearchQdrantBM25Redis
to understand Hans quickly
1 chat
Problem
A recruiter should find relevant evidence without reading every portfolio page.
My work
A conversational RAG guide that answers questions across Hans’s projects, experience and source material.
Result
An interactive guide that lets visitors ask about Hans’s work and get source-backed answers without reading every portfolio page.
Data Science/Analytics

Monelytics

PythonPandasscikit-learnNumPyMatplotlibSeabornStreamlitMachine LearningDeep LearningData VisualizationTeamworkCommunication
analysis coverage
4 banks
team modeling scope
9 approaches
Problem
Comparing forecasting approaches requires a consistent data pipeline and evaluation rather than a single prediction.
My work
Led EDA, preprocessing, feature engineering and LSTM implementation for a team stock-analysis application.
Result
Compared nine approaches for four Indonesian banks. The team delivered five modeling notebooks, four bank-specific LSTM files and a Streamlit application with RMSE/MAE comparisons.
ML Engineering

Whisper fine-tuning

PyTorchHugging Face TransformersPythonHugging FaceSpeech RecognitionFine-TuningDeep LearningNatural Language Processing
relative WER reduction
25.62%
German evaluation utterances
16,082
Problem
How does adapting a small speech model to a specific language change recognition?
My work
Adapted Whisper-Tiny to German speech, with reproducible training, evaluation and published model weights.
Result
The V2 notebook records word error rate falling from 43.49% to 32.35% across 16,082 German utterances: 11.14 percentage points, or 25.62% relative reduction. Published German and French model variants with training logs.
ML Engineering

ResNet on CIFAR-10

PythonPyTorchConvolutional Neural NetworksImage ClassificationData AugmentationPaper ReadingComputer VisionDeep Learning
reported test accuracy
87.92%
gain across configurations
~12.92 pp
Problem
Understanding residual networks means testing how architecture and augmentation affect image classification.
My work
Built a configurable image classifier and compared architecture and augmentation choices on CIFAR-10.
Result
Reported 87.92% test accuracy on 10-class CIFAR-10, approximately 12.92 percentage points above the earlier ~75% configuration. Delivered training, evaluation, checkpoint and resume workflows.
Others

Narrative Nest

ReactSDXL LightningTypeScriptTailwindCSSGradioUI/UX DesignFront-End DevelopmentTeamworkCommunication
storyboard capacity
9 frames
generation configuration
8 steps
Problem
Filmmakers need a quick way to turn written scene ideas into storyboard frames.
My work
Led UI/UX, React frontend and AI integration for a shared-prompt storyboard creator.
Result
Delivered a nine-frame storyboard interface using 8-step SDXL-Lightning generation, with shared/per-frame prompts, editable shot notes and Firestore-backed generated-image records.
ML Engineering

NeuroCraft

PyTorchFlaskReactTypeScriptPythonTailwindCSSNeural NetworkDeep Learning
MNIST and Fashion-MNIST
2 datasets
network layer choices
5 controls
Problem
Beginners need to experiment with neural-network layers without building an entire training application.
My work
Built a visual interface for configuring, training and exporting small neural networks.
Result
Exposed two image datasets and five layer controls, backed by a Flask/PyTorch training API with CPU/CUDA selection and timestamped model export.
ML Engineering

MNIST from scratch

NumPyPyTorchPythonNeural Network ImplementationPaper ReadingDeep Learning
recorded validation accuracy
90.08%
trainable parameters
7,960
Problem
I wanted to understand the operations that turn handwritten pixels into a prediction.
My work
Implemented the mathematics of a digit classifier, from initialization to manual backpropagation.
Result
The later PyTorch tensor notebook records 90.08% validation accuracy on 16,800 images with 7,960 trainable parameters. Delivered original NumPy and GPU-capable tensor implementations.
Data Science/Analytics

World Cup semifinal analysis

PythonPandasMatplotlibData analysis
comparison scope
4 teams
cleaned analysis outputs
3 datasets
Problem
A semifinal preview needs to connect team workload, attacking performance and player statistics into a readable comparison.
My work
Translated match and player statistics into a comparative semifinal-preview analysis.
Result
Compared four national teams and delivered three notebooks, three cleaned datasets, two exported charts and an editable presentation.
Others

LookSharp

GeminiCodexCursorNext.jsTypeScriptIndexedDBPrisma

AI-assisted build · Codex + Cursor

eyewear reference inputs
3 paths
default image upload limit
10 MB
Problem
Trying eyewear online needs a useful preview without losing the identity and context of the original portrait.
My work
Built a multimodal eyewear try-on app that connects image generation, validated uploads and a persistent gallery.
Result
Delivered three eyewear reference paths: catalog selection, custom upload and image URL. Added a 10 MB default upload cap, generation timing and an IndexedDB gallery with save/delete operations.
ML Engineering

Micrograd, rebuilt

Python
Problem
Automatic differentiation can feel like a black box when a framework does all the work.
My work
Rebuilding the Micrograd library from scratch to understand the underlying math and operations of a simple deep learning library. Implemented forward and backward propagation, gradient descent, and backpropagation using only pure Python Syntax.
Result
A pure-Python implementation of forward propagation, backpropagation, and gradient descent.
Others

IDRXY

TypeScriptCodexCursorNext.jsSupabaseData visualization

AI-assisted build · Codex + Cursor

index + reference currencies
9 + 12
snapshot cache duration
60 sec
Problem
Rupiah strength is often judged only against the US dollar. A basket-based view, similar in approach to DXY, helps show how the Rupiah moves against multiple currencies.
My work
Implemented a weighted Rupiah index dashboard with timestamped snapshots and explicit handling of missing chart data.
Result
Delivered a nine-currency weighted index and 12 additional FX references, with Supabase snapshot retrieval, 1,000-row pagination and a 60-second data cache.
Others

Krakatoa

Three.jsCodexCursorNext.jsReactTypeScriptPython

AI-assisted build · Codex + Cursor

interactive 3D atlas
9 chapters
reviewed automated suite
13 tests
Problem
Volcanic history, terrain and monitoring data are difficult to understand when scattered across disconnected sources.
My work
Built an interactive 3D field guide with public-data feeds, historical terrain states and resilient parsers.
Result
Delivered nine chapters, five historical states and six wind levels. Two APIs integrate three public-data sources; 13 automated tests and the reviewed test/build CI run passed.
🤗