
5
5
Malaysia
1 year of experience
Hi, I'm Thoha, a Year 1, Semester 2 student pursuing a Bachelor of Engineering Technology (Robotics) with Honours at UniKL MFI. I'm still early in my degree, but I'm trying to grab every opportunity I can to get real experience outside the classroom. Hackathons, certifications, side projects, anything that lets me build and learn by doing instead of just sitting through theory. Robotics is my main focus, but AI and software have pulled me in too, and I like figuring out how the two connect. The AMD Developer Hackathon: Act II is part of that. I'm competing in Track 2 (Video Captioning Agent), building a pipeline that watches video clips and generates styled captions using the Fireworks AI platform. It's honestly been a solid crash course in Docker, debugging containerized apps, and working with LLM APIs, stuff I hadn't really touched before this. Still early in the journey, but always looking to learn, build, and pick up a few certificates along the way. Feel free to connect

Most code review checks what a function does. It rarely checks what happens when that function fails. A try/except block that silently swallows an error looks identical to one that works correctly, until a request hangs forever, data goes missing, or an operation reports success when it actually failed. These "silent failure" bugs are dangerous precisely because they don't look wrong in a diff. They only misbehave under conditions nobody tested for, which is exactly why they survive code review and ship to production. SilentGuard addresses this gap directly. We used IBM Bob IDE to audit a real Flask task-management API against a defined checklist of silent-failure patterns: bare except blocks, exceptions caught but never logged, missing timeouts on network calls, unchecked database write results, and responses that report success even when an operation failed. Using Bob's Agent mode, we asked Bob to scan the full codebase against these seven specific patterns and report findings ranked by severity, with file locations, explanations of production risk, and suggested fixes. Bob identified 8 distinct issues, including 3 high-severity bugs. One example: a create-task endpoint used a bare except: pass, meaning any error, a missing field, malformed JSON, or a database failure, was silently discarded, and the caller received an empty success response with no indication anything went wrong. We then had Bob apply fixes for all 8 issues directly in the code. This included adding proper input validation, replacing print()-based logging with real application logging, adding timeouts to outbound network calls, and correcting HTTP responses so failures are now reported honestly instead of masked as success. All fixes were reviewed and approved before being committed. Target users are development teams who want a fast, repeatable way to catch a category of bug that standard code review consistently misses, particularly teams maintaining production APIs where undetected failures translate directly into data loss, hung requests, or corrupted state. A developer interacts with SilentGuard by pointing Bob at their codebase with the same defined checklist, reviewing the ranked findings, and approving fixes the same way we did. What makes this approach distinct is the specificity of the lens given to Bob. Rather than a generic "review this code" prompt, SilentGuard defines exactly what a silent failure looks like across seven concrete patterns, which produces findings that are consistent, explainable, and directly actionable, not vague suggestions. This turns Bob's agentic capabilities into something closer to a specialized linter with judgment: it
27 Sep 2026

SO-101 Bimanual VLA Manipulation - AI Infra Summit Hackathon A from-scratch dual-arm SO-101 MuJoCo scene with a working drawer, four tableware objects (plate, cup, spoon, fork), and a scripted bimanual task controller. Built on the lerobot_mujoco_sim template, using the existing Mink IK solver. Results Drawer opening: 10/10 across 10 runs. The left arm reaches across, grips the handle, pulls the drawer open 12 cm, releases, and retracts. Tableware: partial. Cup picks and places in many runs but grip is unreliable. Spoon and fork are contacted but not reliably lifted. Plate not attempted (flat disk, no viable grasp). ### OpenVINO benchmark (Intel i9-11900H, 32GB, no NPU) Placeholder CNN at 1x3x224x224, 100 iters after 10 warmups: CPU: 0.221 ms mean / 4519 fps GPU: 0.614 ms mean / 1629 fps CPU beats iGPU because the network is tiny and GPU launch overhead dominates. ### What was built - Dual-arm scene with namespaced body/joint/site files - Sliding drawer with custom handle geometry - DualArmEnv wrapper driving both arms via mj_name2id + mj_step - Imperative bimanual task script with stall detection, solver reseed, live object lookups - OpenVINO benchmark (ONNX to IR conversion, per-device latency/throughput) Technical notes - MuJoCo 3.13.0 fails on relative mesh paths through include chains; fixed with absolute paths - Compiler angle=radian in included files applies globally; fixed with explicit quaternions - Arm actuator forcerange default +/-3.35 Nm too weak for loaded drawer; raised to +/-30 Nm - OpenVINO telemetry has an SSL crash on Windows Python 3.11.9; worked around by disabling it and targeting devices explicitly - PyTorch ONNX exports can carry external .data files; the ONNX internal filename must match Limitations Only drawer-open is reliable. Cup is partial. Spoon/fork don't lift. Plate skipped. No trained VLA policy. The LeRobot data pipeline is wired up but no SmolVLA/ACT fine-tune ran.
16 Sep 2026

UniTrader is an autonomous AI trading agent that combines LLM-powered decision making with robust risk controls. It uses a Proposer-Critic architecture where one LLM generates trade ideas and another LLM evaluates them for risk. The system scans symbols, generates trade proposals, and executes trades on Alpaca paper trading. Key features include a circuit breaker for daily loss limits, a kill switch for manual halts, and a decision journal that logs every trading decision with full reasoning from both models. The dashboard shows live portfolio metrics, dynamic charts, and a review queue for human oversight. Built with Streamlit, Supabase, and yfinance.
4 Sep 2026

Menatap is an AI-powered travel planning app that turns a destination and a handful of preferences, like budget, interests, and pace, into a complete, ready-to-use itinerary generated in seconds. Each plan is broken down day by day, with timed stops, estimated costs, short descriptions of why each stop is worth visiting, and an interactive map showing the full route at a glance. Beyond solo trips, Menatap also supports group planning: an organizer can create a shared trip room and invite friends with a single link, no account required, and each member sets their own preferences, which the AI blends together when proposing stops. Instead of coordinating a trip through endless group chats, everyone can vote on proposed stops and leave quick notes, so the group actually converges on a plan rather than just talking about one. The result is a faster, more personalized, and more collaborative way to plan travel, built for the lablab.ai NativeBuilder Hackathon.
10 Aug 2026

Video Caption Agent is an AI powered tool that watches video clips and generates captions in four distinct styles: formal, sarcastic, humorous_tech, and humorous_non_tech. Built for the AMD Developer Hackathon: Act II Track 2, this agent uses Fireworks AI's minimax-m3 model to understand video content through native video input. The pipeline follows a two-stage approach: 1. Video Understanding: The model watches the video directly and produces a detailed factual description of the setting, subjects, actions, and mood. 2. Style Generation: The description is rewritten into each requested caption style in a single API call, with intelligent key normalization to handle variations in model output. Key optimizations include: - Single-pass generation requiring only 2 API calls per video - Automatic handling of common misspellings without retries - Graceful failure handling that continues processing remaining tasks The agent processes videos in a Docker container, reading tasks from /input/tasks.json and writing results to /output/results.json, making it easily deployable and scalable. Features: - Supports four caption styles: formal, sarcastic, tech-humour, non-tech humour - Handles videos up to 2 minutes in length - Native video understanding without frame extraction - Fast processing with optimized API calls - Robust error handling and fallback mechanisms The project demonstrates efficient use of multimodal AI models for video understanding and creative text generation, all packaged in a production-ready container.
13 Jul 2026