Welcome

I’m Pavel, a software engineer passionate about exploring new technologies and sharing what I learn. Please, have a seat and let’s talk about programming, microcontrollers, and other cool stuff.

From hours to minutes: Automating cluster deployments with AIStor MCP server

As a MinIO Curriculum Engineer, I spend a lot of time creating demos and learning environments for customers. These environments need to be realistic, comprehensive, and ready to showcase MinIO AIStor’s capabilities in real-world scenarios. But here’s the thing - setting up a proper demo environment manually can take hours of low-value, repetitive work. Let me show you what happened when I decided to automate this process using Claude Code and our AIStor MCP server. If you’ve been following this series, you know that the AIStor MCP server allows us to use natural human language to perform administrative tasks on our object stores. Instead of running standard command-line tools (and remembering all the arguments and flags), I can simply ask the MCP server, “create a policy” or “create a user” and explain what I want in human language. ...

2025-11-04 · 9 min · 1757 words · Pavel Anni

Model Context Protocol (MCP) Server for AIStor: How it works

In the previous blog posts of this series, we discussed the user-level and admin-level functions of the Model Context Protocol (MCP) server for MinIO AIStor. In the first blog, we learned how to review the bucket’s contents, analyze objects, and tag them for future processing. In the second blog, we also learned how to use admin commands and get information about the cluster. All that was done using human-language commands and simply chatting with the cluster. ...

2025-04-30 · 6 min · 1128 words · Pavel Anni

Model Context Protocol (MCP) Server for AIStor: administration functions

In the previous blog of this series, we discussed the basic user-level functions of the Model Context Protocol (MCP) server for MinIO AIStor. We learned how to review a bucket’s contents, analyze objects, and tag them for future processing using human-language commands and simply chatting with the cluster via an LLM such as Anthropic Claude. In this blog, we’ll learn how to use the same approach to supplement AIStor administrative functions, such as getting information about the cluster’s status and health, analyzing data distribution, and other tasks. ...

2025-04-09 · 5 min · 1000 words · Pavel Anni

Introducing Model Context Protocol (MCP) Server for MinIO AIStor

GenAI is entering the agentic phase, with software agents collaborating with humans and other agents to reason and achieve complex goals. Agents are already demonstrating incredible intelligence and are very helpful with question answering, but as with humans, they need the ability to discover and access software applications and other services to actually perform useful work. The creators of such services, for example, Snowflake for data warehousing and Salesforce for CRM, are in the best position to expose their capabilities for agentic use. These agents also need direct access to the large and fast-growing volumes of multi-modal enterprise data, data which is increasingly aggregated in high-scale and high-performance AI storage such as AIStor. But the GenAI industry needs standards to make all of this feasible. ...

2025-03-28 · 7 min · 1338 words · Pavel Anni

Four stages of AI-assisted software development

No, this article will not be about “denial, anger, bargaining, … etc.” Hmmm… that might be a good topic too, but I digress. Stage 1. Scripts in the ChatGPT window When it all started, I remember showing my friends how ChatGPT can write simple Python functions only by getting the function description in the chat window. The first reaction was, “Well, I don’t see any magic. I can do it myself without any AI!” ...

2025-03-02 · 11 min · 2285 words · Pavel Anni

Curl vs. requests

Here is an interesting development of the Geekhouse project. I wanted to add a simple 16x2 LCD display to the server. I connected the display to the I2C pins and added the code to serve the appropriate URL (/lcd?text=...). I started testing it with cURL and realized that I had to use the --url-query flag to pass any text with spaces, like this: curl -X POST --url-query 'text="Hello world"' http://192.168.1.130/lcd It worked fine with the curl command, and the text was displayed on the LCD. ...

2024-12-30 · 2 min · 385 words · Pavel Anni

From Alexa to LLM: The Geekhouse Story

Previously It all started several years ago when I thought “Can I use Alexa to manage physical devices?” I created a simple demo project to show it to my amateur radio friends. You would say, “Alexa, turn my antenna 90 degrees,” and my model antenna would magically turn. It was a fun weekend project that used a Raspberry Pi, a stepper motor, and a miniature model antenna. I published it on YouTube, if you’re curious. ...

2024-12-23 · 9 min · 1846 words · Pavel Anni

Project: Geekhouse

Overview Geekhouse is a smart dollhouse project that combines IoT devices with Large Language Models to create a natural language interface for controlling physical devices. Users can control LEDs, motors, and sensors using commands in any language, which are automatically translated into REST API calls by an LLM. Features Natural language control of physical devices Multilingual support (demonstrated with English, Russian, Spanish) HATEOAS-compliant REST API for device discovery Real-time sensor monitoring Support for various actuators: LEDs (multiple colors and locations) DC motors Servo motors Human-friendly responses from sensors Technical Stack Hardware Raspberry Pi Pico W (main controller) Keyestudio Smart House Kit components: Light sensors Rain sensors LED arrays DC motors Servo motors Software MicroPython with Microdot framework for REST API Python client application Anthropic Claude (Haiku-3.5) for natural language processing HATEOAS-based API architecture Implementation Details REST API Design The API follows HATEOAS principles, providing self-documenting endpoints: ...

2024-12-10 · 2 min · 348 words · Pavel Anni

Control panel: A TinyGo Adventure

You know how it all started? I was browsing Amazon one day (as you do) and came across this set of color 7-segment LED displays. Instantly, I thought of building colorful time displays with knobs to control them. This project combines two of my favorite things — tech tinkering and fun. I used two Raspberry Pi Picos, some 7-segment LED displays, rotary encoders, and (of course) Go! And before you ask — yes, it does something cool, and no, I haven’t explored all its possibilities just yet. ...

2024-10-07 · 6 min · 1163 words · Pavel Anni

Project: Time Control Panel

Overview A hardware project that creates a multi-functional time control panel using modern microcontrollers and Go programming language. The system uses two Raspberry Pi Picos to manage different time displays, complete with sound effects and persistent memory. Features Three time displays (Target, Current, Previous) Real-time clock functionality Rotary encoder input for time setting Sound effects via DFPlayer Mini Persistent memory for time settings Inter-controller communication via UART Time travel simulation with visual and audio feedback Technical Stack Hardware 2× Raspberry Pi Pico 7-segment LED displays with TM1637 chip Rotary encoders for time setting DFPlayer Mini for audio playback SD card for sound storage Software TinyGo compiler for microcontrollers Go standard library features: Goroutines for concurrent operations Channels for event handling Time and date manipulation UART communication protocol Flash memory operations Implementation Details Multi-Controller Architecture Left Pico: Handles target time setting and display Right Pico: Manages current time and previous time UART communication for time synchronization Time Management RFC3339 time format for inter-controller communication Real-time clock implementation Persistent storage in flash memory Gray code implementation for rotary encoders Sound Integration MP3 playback via DFPlayer Mini Sound effects triggered by time travel events UART commands for audio control Current Status Core functionality working Time setting and display operational Sound effects implemented Flash memory persistence working Future Plans Add GPS integration for actual speed detection Implement speed-based trigger for time travel Create DIY kit version Add Pomodoro timer mode Develop chess clock functionality Improve sound effect timing Similar projects I found several similar projects using LED displays for time and various method to set the date/time. ...

2024-10-07 · 2 min · 349 words · Pavel Anni