Meefik's Blog

Freedom and Open Source

E-paper TTY for CrowPanel ESP32-S3

04 Aug 2026 | diy

I got a CrowPanel ESP32-S3 — it’s a 5.79” e-paper display with the ESP32-S3 built in, USB-C powered, all in one board. The screen is big enough to be useful and small enough to sit on my desk without being obnoxious.

The obvious thing to do with an e-paper display that holds its image with zero power is write something to it and leave it alone. So I wrote papertty: firmware that listens on USB serial and renders whatever text you pipe to it. Basically a physical tty backed by paper.

The display runs at 272×792 in B&W — two SSD1683 panels stitched together via SPI. Firmware is Arduino/C++, built with PlatformIO. Nothing exotic.

Source on GitHub. There’s also a demo video if you want to see it actually working instead of trusting my word for it.

Peerix Talk: P2P video app in 13 evenings

20 Jul 2026 | ai-agent webrtc javascript

I wanted to build a P2P video chat app. Nothing fancy at first — just something that works and doesn’t rely on some company’s servers in the middle.

I gave myself 30 evenings (because this was strictly an after-work project), which felt generous for a side thing. It turned out I could’ve been more ambitious: with a local LLM as my pair programmer inside Zed, I shipped it in 13 days.

Here’s how that went down, what the AI actually helped with (and what it didn’t), and why I bother running models locally at all.

Peerix Talk app

You can try Peerix Talk or look at the source on GitHub.

Using AI agents to reverse engineer web APIs

04 Jul 2026 | ai-agent llm

I’ve been experimenting with local large language models (LLMs) and AI coding agents to handle increasingly complex automation tasks. In this post, I walk through a real-world example: using my locally run Zed Agent connected to Ollama to research the Bluesky AT Protocol, build a reusable skill, and automate following people based on specific criteria — all without writing any code myself.

Set up self-hosted LLMs for local development

18 Jun 2026 | amdgpu llm benchmark linux

I’ve been gradually adding local LLMs to my daily workflow, and now I’ve got a setup that runs AI agents right inside Zed Editor for coding. This post walks through the whole stack — from GPU acceleration to editor integration — so you can set something similar up for yourself.

local-dev

LLM performance on AMD GPU with ROCm 7.x vs 6.x

31 May 2026 | amdgpu llm benchmark

In this post, I compare the performance of large language models (LLMs) on the AMD Radeon AI PRO R9700 using Ollama with different ROCm versions. The R9700 is a powerful GPU designed for professional workloads, including machine learning and AI applications. In my previous post, LLM performance on AMD Radeon AI PRO R9700, I tested LLM performance with ROCm 6.4. Now, let’s see how ROCm 7.1 compares.

chart

Peerix: WebRTC development made simple

08 May 2026 | webrtc javascript

Today, I’m excited to introduce Peerix, a JavaScript/TypeScript library designed to simplify WebRTC development. Peerix abstracts away the complexities of WebRTC, allowing developers to focus on building their applications without worrying about the underlying signaling and peer connection management. With Peerix, you can easily create peer-to-peer applications for video conferencing, file sharing, gaming, and more. Whether you’re a seasoned WebRTC developer or just getting started, Peerix provides a straightforward API to help you get up and running quickly. Check out the comprehensive documentation and start building your next WebRTC application with Peerix today!

Peerix

Time Warp Scan on pure JavaScript

30 Dec 2025 | javascript

The New Year 🎄 is almost here, and what better way to celebrate than with a fun coding project? Today, I’m excited to share a simple Time Warp Scan implementation using pure JavaScript and HTML5 Canvas. Have fun, and happy New Year! May your coding be productive.

Time Warp Scan

AI Podcast from scratch with open-source tools

10 Dec 2025 | comfyui

The pace of AI development is exhilarating, with new models and capabilities emerging constantly. Recently, I upgraded my PC with a new AMD GPU and have been exploring its power with local Large Language Model (LLM) tasks. Today, I’m taking on a far more complex challenge.

I set out to create an entire five-minute AI-generated podcast using only open-source models and tools. The entire process ran on my computer, completely bypassing expensive, privacy-compromising cloud services. The goal was to test the absolute limits of quality and feasibility for a fully self-hosted media production.

The result? The “Humanless Podcast”. Take a look at what came out of this experiment (click to play).

Humanless-Podcast

I will now walk you through the entire, eight-step process of creating a podcast like this, from the initial script to the final video.

LLM performance on AMD Radeon AI PRO R9700

15 Nov 2025 | amdgpu llm benchmark

Recently, I acquired an AMD Radeon AI PRO R9700 to enhance my machine learning and development setup. It is a powerful GPU designed for professional workloads, including machine learning and AI applications. In this post, we explore the performance of large language models (LLMs) on the R9700, highlighting its capabilities and benchmarks.

chart

Serverless WebRTC conferencing with E2E encryption

05 Oct 2025 | webrtc javascript

Building reliable, privacy-respecting peer-to-peer conferencing can be surprisingly simple when you split responsibilities cleanly: media transport (WebRTC) and signaling (a tiny transport for exchanging SDP and ICE). I built a minimal library to demonstrate that split and to enable serverless workflows using whatever signaling channel you prefer — from in-memory drivers for demos to NATS-based pub/sub for distributed apps.

This post describes the library’s purpose, core design, how to use it, and a practical example of a NATS signaling driver with end-to-end encryption using the browser Web Crypto API.

demo

Just try it out: live demo | source code