You record a coding tutorial
Screen recording running, you're explaining code, referring to docs on another monitor - looking back and forth.
Developer portfolio

Backend heavy full stack engineer crafting scalable systems and the infrastructure behind bold digital experiences.
Featured build Event-driven video editor - Go microservicesA smart video editor that runs in the background while you record. Logs mic and keyboard activity in real time, then uses that activity log to cut dead air after you upload the recording. Built as a full event-driven distributed microservices system in Go.
Screen recording running, you're explaining code, referring to docs on another monitor - looking back and forth.
Every time you look away, pause to think, or wait for something to load - silence and stillness builds up in the recording.
You spend hours scrubbing through footage cutting gaps. The ratio of editing time to recording time is brutal.
Before you hit record, start Voidcut. It runs silently - no UI in the way.
Every mic event and keyboard/mouse event is timestamped and streamed to the ActivityLogger via NATS.
When recording ends, upload the video file. Voidcut already has your activity log ready.
After upload, AnalysisService computes keep/cut intervals and EditingService runs FFmpeg. Download the edited video when processing is complete.
Exactly what happens from the moment you start recording, through video upload and processing, to the moment your edited video is ready.
voidcut start - launches mic listener goroutine and input listener goroutine concurrently. Connects to NATS.
Voidcut is already listening. Every time you speak or type, an event fires.
Events carry: session_id, type (mic|keyboard), timestamp, duration. Published to activity.events topic.
Subscribes to activity.events. Writes each event to PostgreSQL with microsecond precision timestamps.
SIGINT triggers graceful shutdown. Remaining events are flushed before exit, leaving the activity log ready for the later video upload.
POST /api/v1/jobs with video file and session_id. API Gateway routes to VideoService.
Validates video, stores to disk, creates job record in PostgreSQL with status: pending. Publishes job.created to NATS.
Reads all activity events for session_id. Merges overlapping intervals. Adds 0.5s padding on each side. Inverts to get cut list. Caches result in Redis.
AnalysisService calls EditingService.Edit(job_id, cut_intervals) via gRPC. EditingService builds filter_complex, runs FFmpeg subprocess, stores output.
job.done event published. NotificationService fires desktop notification. GET /api/v1/jobs/:id/download returns edited video.