Software Engineer — Rust · PHP · Python
Muhammad Iqbal Afif
An ordinary software engineer who like complicated a thing.
// now
I love playing with Rust & Claude Code these days.
Also fond of learning a new thing.
Stack
// selected work
All 14 →tet
Tet is a terminal-based snippet and command manager built in Rust with the help of Ratatui. The project was created to solve a very simple but annoying problem: remembering long command-line commands that are rarely used but still important during daily development work.Instead of repeatedly searching through notes, shell history, or documentation, Tet allows commands to be stored and executed using short and memorable aliases. This makes repetitive workflows much faster and reduces the mental overhead of remembering long commands, server IP addresses, SSH options, or deployment scripts.For example, instead of typing a long SSH command manually every time:ssh [email protected] -p xxxxWe can simply run:tet ssh-server1Commands can also be grouped by project or category, making organisation easier for larger workflows:tet project-1 sshThe CLI also provides a simple way to browse and inspect available commands using:tet listThe project focuses on convenience, speed, and developer ergonomics while also serving as an exploration into building terminal user interfaces in Rust using Ratatui. It combines a lightweight CLI workflow with a structured command management system that makes everyday terminal usage much more efficient.
Read more →Fortyone
Back in the good old days, I used to play the 41 rummy card game with my friends all the time. It was always full of laughter, chaos, and fun moments that made the game memorable. Nowadays, those moments mostly live in memory, and that nostalgia inspired me to recreate the experience as an online multiplayer game.Of course, playing online can never fully replace sitting together with friends in real life, throwing cards around, and doing silly things during the game. Still, I wanted to capture at least a small part of that experience through this project.This project was quite challenging for me, especially because I was still relatively new to Rust when I started building it. Besides implementing the game rules and multiplayer logic, one of the hardest parts was dealing with concurrency, implementing WebSockets, and shared game state management. Rust forced me to think carefully about ownership, lifetimes, and thread safety in ways that were very different from languages like Python.Even though it is “just” a simple card game, building it taught me a lot about real-time systems, asynchronous programming, and multiplayer architecture. We only used Redis to store the game data.In the end, this project became more than just a game for me. It was both a technical learning journey and a nostalgic attempt to bring back a small piece of those old memories. Tech Stack:RustYewAxumRedisDocker
Read more →Yei
Yei is a reusable component library built for the Yew framework. The project was heavily inspired by shadcn/ui and its philosophy of giving developers ownership over their components instead of hiding everything behind a packaged dependency. The name “Yei” itself comes from “Yew UI” — honestly, just a fun little name I came up with.The project uses Tailwind CSS as its styling foundation and focuses on creating modern, reusable UI components for Rust frontend applications built with Yew.I started this project because every time I created a new Yew application, I found myself rebuilding the same UI components over and over again — buttons, accordions, input forms, and other common interface elements. Beyond just the UI itself, handling callbacks, props, state management, and rendering logic in Yew could become repetitive very quickly.Instead of rewriting the same boilerplate for every project, I decided to create a small reusable component system that I could use across multiple applications.The concept is very similar to shadcn/ui:Developers own the generated component codeComponents can be copied directly from GitHub or generated using a CLIGenerated files are fully customizableNo heavy abstraction layer hiding implementation detailsThis approach makes the library flexible and developer-friendly, especially for Rust developers who prefer explicit control over their codebase rather than relying entirely on opaque third-party packages.The project also became a way for me to explore component architecture in Yew, improve ergonomics for Rust frontend development, and experiment with building a more enjoyable developer experience around the Yew ecosystem.
Read more →Websocket Playground
WebSocket Playground is a lightweight web application built for testing and debugging WebSocket servers in a more convenient way. The project was created to simplify the process of inspecting real-time WebSocket communication without needing to rely on browser developer tools.The application supports both raw text messages and structured JSON data, making it flexible for different types of WebSocket APIs and event-driven systems. One of the main focuses of the project was creating a clean and easy-to-use interface for monitoring live communication between the client and server.To make debugging easier, the app includes:Real-time event loggingStructured message inspectionSeparate tabs for connection events and detailed dataSupport for both raw and JSON-based communicationThis project was also an exploration into real-time frontend architecture, WebSocket communication handling, and building developer tooling focused on usability and debugging experience.
Read more →// memoir
// find me