Projects
BitNet on GPT
An attempt to implement the bitnet paper on the GPT. Built on top of NanoGPT in pyTorch. It also contains implementation of The Era of 1-bit LLMs: All Large Language Models are in 1.58 Bits.
I’ve not been able to train it on a large scale yet!!.
Mini ROS
This is a lightweight reimplementation of core ROS concepts, focusing on roscore and topic-based communication for subscribing and publishing. Built entirely in Go without external libraries, it mimics essential ROS behavior in a minimalistic way. The roscore server manages message exchanges between nodes, while topics enable asynchronous communication.
This aims to mimic the essential behavior of ROS in a minimalistic way, making it easier to understand the underlying mechanisms while maintaining flexibility and performance due to Go’s concurrency model.
miniCPU
A minimal 8-bit accumulator-based CPU implemented in Verilog for Tiny Tapeout. Submitted to the sky26b shuttle (1×1 tile).
It features a compact custom ISA and runs a small hardcoded program that produces a classic Knight Rider bidirectional LED scanner on the 8 outputs — useful for visual bring-up. Designed for a 100 kHz clock with an internal divider so the pattern runs at human-visible speed.
See docs/info.md for the ISA, diagrams, and Cocotb test instructions. The design uses the standard tt_um_* Tiny Tapeout interface.
NAT WSL
A from-scratch NAT / port-forwarding tool in Go for WSL. It exposes services running inside a WSL distro directly on the host’s network IP using explicit, configurable port mappings — instead of relying on Windows’ default NAT behavior.
The goal was to gain hands-on understanding of networking fundamentals (NAT-PMP / PCP) while having simple, declarative control over which ports are forwarded.
Reference: RFC 6886 - Port Control Protocol.
Nebula
Drone control and automation system developed in 2025 by the CGM MaTek Nebula Team (sponsored by Çemberlitaş Gençlik Merkezi) for the Teknofest 2025 IHA competition.
Nebula consists of a PySide6 Ground Control Station, a Jetson edge server running YOLO-based detection and monocular GPS coordinate estimation, ArduPilot/MAVLink control, and a lightweight custom ZeroMQ Pub/Sub layer (chosen over ROS). It includes full Gazebo simulation support.
Full documentation and architecture notes at nebula.amarjay.com. Demo video.
Note: Post-competition, no longer maintained.
My LazyVim Config
A perfectly curated Neovim config. Built with Neovim, LazyVim and Mason.
AI on Web
Running AI models on Web.
Using Onnx-runtime-web to run BERT for sentimental analysis on the web.
This repository contains a simple implementation of ONNX (Open Neural Network Exchange) using the microsoft/xtremedistil-l6-h256-uncased model. The ONNX model is located in the onnx/model.py file, and we’ve also provided the exported classifier model in both onnx/classifier.onnx and onnx/classifier_int8.onnx formats.
Model Information
- Model Used: microsoft/xtremedistil-l6-h256-uncased
- ONNX Model Location:
onnx/model.py - Exported Classifier Models:
onnx/classifier.onnxandonnx/classifier_int8.onnx - Colab Notebook: notebook
transformer
Just another implementation of the transformer model as introduced in the paper Attention is all you need, this is a step-by-step process to building a transformer.
A tutorial project for understanding how the transformer works
trBPE: A Byte Pair Encoder tailored for Turkish
The current landscape of Large Language Models (LLMs) predominantly caters to the English language. This bias can be attributed to extensive training on English datasets and the efficacy of tokenization. Notably, OpenAI tokenizer for GPT-4’s excels in contextualizing tokens based on syllabic divisions, enhancing comprehension and generation capabilities.
However, for foreign languages like Turkish, this advantage diminishes due to tokenization randomness. To address this, a repository was created to develop a BPE tokenizer tailored to Turkish, using rich Turkish language datasets.
This was used by KomRade in the competition...
In an attempt to replicate methods outlined in this paper, with exceptions:
- Non-agglutinative pieces are preceded by a space, and agglutinative pieces aren’t
#prefixed. - Tokenization is case-insensitive.
Video Compress
A simple web app to convert videos from H.264 to H.265 encoding, significantly reducing file size while maintaining quality.
Why H.265?
H.265 (HEVC) is the successor to H.264 (AVC). It offers better compression, allowing for smaller file sizes or higher quality at the same bitrate. This project uses FFmpeg to convert videos from H.264 to H.265.