<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Vit Salomon's Thoughts</title><link>http://blog.salomon.cloud/posts/</link><description>Recent posts: Posts</description><language>en-us</language><lastBuildDate>Tue, 08 Sep 2026 21:57:36 +0200</lastBuildDate><atom:link href="http://blog.salomon.cloud/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Inventing Begins</title><link>http://blog.salomon.cloud/posts/inventing-begins/</link><pubDate>Tue, 08 Sep 2026 21:57:36 +0200</pubDate><guid>http://blog.salomon.cloud/posts/inventing-begins/</guid><description>&lt;p&gt;Funny, today we had a discussion at work about how agents need to be kept on short leash or they will start inventing&#10;more than what is being asked. In the morning I tasked Grok with &lt;code&gt;Prepare the MediaPool module&lt;/code&gt; but I didn&amp;rsquo;t have time&#10;to review its work until evening.&lt;/p&gt;&#10;&lt;p&gt;MediaPool is a module that we have defined in the architecture including what it should do. But we have never discussed&#10;the internal structures. Well, they were crystal clear to me and probably every developer who has done some media players&#10;before but not to Grok.&lt;/p&gt;&#10;&lt;p&gt;It pulled features and responsibilities of other modules and put them into this simple MediaPool. But the fix was simple.&#10;I just emphasized that MediaPool should only create / own / destroy media elements and that timing info belongs to Timeline.&#10;It figured out that I meant that those things should be removed, double checked with me on that and then updated the PR.&lt;/p&gt;&#10;&lt;h2 id="one-more-thing"&gt;One more thing&lt;/h2&gt;&#10;&lt;p&gt;Yesterday, I spoke about our rule for patch files. Today Grok pulled another trick and created stacked patch with all commits'&#10;changes instead of current state vs master. So we had to update this rule and specify it. :facepalm:&lt;/p&gt;&#10;&lt;p&gt;Did the pink new toy glasses break already on day 3?&lt;/p&gt;&#10;</description></item><item><title>First Code and Updating Contribution Guidelines</title><link>http://blog.salomon.cloud/posts/first-code-and-updating-contribution-guidelines/</link><pubDate>Mon, 07 Sep 2026 22:43:43 +0200</pubDate><guid>http://blog.salomon.cloud/posts/first-code-and-updating-contribution-guidelines/</guid><description>&lt;p&gt;Well enough of experimenting, planning and stalling. Today was a day to actually ask for a first proper code.&#10;I started with the easiest of the components of the repository and it worked quite well. I had only a few comments&#10;to make to match the code style to something that I would actually write.&lt;/p&gt;&#10;&lt;p&gt;One of the things I wanted to change was also an import order. But instead of explaining that and potentially&#10;having to spend some context memory on those rules there are already tools that are better for that than LLMs.&#10;For those still wondering, &lt;code&gt;prettier-plugin-organize-imports&lt;/code&gt; is the answer here. So after merging first real&#10;code PR. It was just a minute or two to let Grok add the plugin, format the code and approve that PR.&lt;/p&gt;&#10;&lt;h2 id="raising-the-bar"&gt;Raising the bar&lt;/h2&gt;&#10;&lt;p&gt;Well, the easy part was done and to be fair even though the code matched my expectations I&amp;rsquo;d be disappointed&#10;if it didn&amp;rsquo;t. It was a clear spec and basically nothing to get wrong. Even if given to a less experienced&#10;dev.&lt;/p&gt;&#10;&lt;p&gt;Next up was a testing/debugging app. The architecture mentioned its purpose and we have the main component&amp;rsquo;s&#10;interface defined. But there were no other pointers given in the codebase. My prompt was:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Create the test app using React and Redux. Use Tokyo Night color palette and make it TUI like in look and feel.&#10;At the top there should be a container element for the videos, below that controls - use plain text for buttons&#10;and state of the playback. It&amp;rsquo;s a debugging app so raw data are preferrable, just nicely presented.&#10;At the bottom there should be a form for the initial configuration.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;This took some time before Grok produced the code. The resulting PR was longer than what I prefer to review usually.&#10;But about a third of it were styles for that TUI effect that I wanted so it was my issue to deal with this long PR.&lt;/p&gt;&#10;&lt;p&gt;Not so surprisingly there were quite a few changes that I wanted to change including a complete refactor of certain part.&#10;In total, I asked for 12-15 changes. Sorry, I forgot to note down the exact number.&#10;This time however I didn&amp;rsquo;t want Grok to just blindly follow my comments so instead of stating &amp;ldquo;PR review done&amp;rdquo; I prompted:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;I finished my review. Read my comments, ask about those that are not clear to you and challenge me on those that you&#10;don&amp;rsquo;t agree with. Don&amp;rsquo;t start with implementing changes yet.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;The response was genuinely nice to hear. Seven to ten of those comments Grok marked as &amp;ldquo;Yeah, makes sense.&amp;rdquo; But there were&#10;five that I was challenged on. For each Grok provided a sound reason on why it thinks my request is not good and also provided&#10;a few alternatives that we could do. Once I gave Grok my decisions on those the second round of PR was prepared.&lt;/p&gt;&#10;&lt;p&gt;This is actually why I prefer to use Grok over other LLMs. First, it&amp;rsquo;s not glazing me for each prompt and it is not afraid&#10;to challenge my decisions and tell me why it thinks they suck.&lt;/p&gt;&#10;&lt;p&gt;I reviewed the new commit changes, verifying that it matches my requested changes and then I went to test the application.&#10;It looked correct, for functional part that will call the library we kept TODO stubs. So it was mostly about checking the UI.&#10;I noticed a graphical issue with some panel title getting clipped. And I could&amp;rsquo;t help but investigate. I probably could&#10;have asked Grok to try investigate and make changes but my goal is not to fully vibe code something that will somehow work.&#10;My goal is to create an app that will match my coding standards and the resulting code will be indistinguishable from my own&#10;writing. So if the bubble pops eventually and we loose all these tools, the code I&amp;rsquo;m left with is still understandable and&#10;maintainable. I found the issue within five minutes and asked Grok about it directly. And a small commit later the PR was ready&#10;for merge.&lt;/p&gt;&#10;&lt;h2 id="changing-contribution-guidelines"&gt;Changing Contribution Guidelines&lt;/h2&gt;&#10;&lt;p&gt;As the last change of the day I asked Grok to add a few changes to the Contribution Guidelines to improve our PR review process.&#10;The newly added points were:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Add a timestamp to the patch file name. This way I can compare what changed easily and I keep the reference to my original comments.&lt;/li&gt;&#10;&lt;li&gt;Apart from inline comments I may add a general feedback at the top of the patch file.&lt;/li&gt;&#10;&lt;li&gt;Once I finish the PR, read the comments, ask about unclear ones, challenge me on those you don&amp;rsquo;t agree with and do not start implementing&#10;changes until we agres in our discussion.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I really enjoyed that challenge part in the last PR so I want to keep it. It feels a lot more like an actual PR discussion between author&#10;and reviewer, many good ideas came from those so why would I want to avoid them.&lt;/p&gt;&#10;</description></item><item><title>Building an Open Source Library With an Agent</title><link>http://blog.salomon.cloud/posts/building-an-open-source-library-with-an-agent/</link><pubDate>Sun, 06 Sep 2026 15:31:08 +0200</pubDate><guid>http://blog.salomon.cloud/posts/building-an-open-source-library-with-an-agent/</guid><description>&lt;p&gt;For quite a few years now I&amp;rsquo;ve been carrying a concept of a library for synchronized playback in my head.&#10;But unfortunately I never had time to sit down and start creating. There&amp;rsquo;s always been something of higher&#10;priority, not enough energy or just real-life happenings.&lt;/p&gt;&#10;&lt;p&gt;But people seem to use agents to vibe code their apps and put them into various stores. I don&amp;rsquo;t know how&#10;much code those apps contain generated vs. hand-written. What&amp;rsquo;s the quality of that code, how is it with&#10;maintainability&amp;hellip; Even linux core now accepts some amount of generated code.&lt;/p&gt;&#10;&lt;p&gt;So I got an idea, why not to try to create that library that I wanted for so long and learn to work with&#10;agentic workflows and LLM generated code at the same time? And document it as well :-)&lt;/p&gt;&#10;&lt;h2 id="the-beginning"&gt;The Beginning&lt;/h2&gt;&#10;&lt;p&gt;On purpose, I didn&amp;rsquo;t start with looking into how you manage your work with agent and how others approach it.&#10;I decided to go for it blind. I had a very little experience from the same day using agent for a task&#10;(see my post about my linux journey) and I used web chat interface for various LLMs before.&lt;/p&gt;&#10;&lt;p&gt;I created a folder, an empty repository, added my prettier config and started writing a markdown file&#10;of what I want to build, how it should work and I ended up with about 50 lines of unstructrured points.&lt;/p&gt;&#10;&lt;p&gt;Then I spawned my Grok (version 4.6) and asked it to read through it. And ask me questions about things&#10;it didn&amp;rsquo;t understand or where it saw some gaps. Ten minutes later I received 32 questions that all made sense.&#10;So I put those questions into a new document (QaA) and started writing responses to all of them. I got&#10;quite surprised how deep some of those questions were. I took some time answering those but mostly I knew&#10;how to deal with various of those situations that Grok presented.&lt;/p&gt;&#10;&lt;p&gt;With all the questions answered I prompted it to read both documents again and re-iterate and present&#10;another set of questions where decisions weren&amp;rsquo;t clear or we have gaps in the spec. Ten minutes later&#10;25 even deeper technical questions were waiting for me. I&amp;rsquo;ve read through them but since I was already&#10;two hours into the progress, I decided to take a break before answering them to avoid focus tunnel and&#10;also to think how I want to cooperate with Grok on contributions to the repository. Walk in the nature&#10;is perfect for things like these.&lt;/p&gt;&#10;&lt;h2 id="old-fashioned-approach"&gt;Old Fashioned Approach&lt;/h2&gt;&#10;&lt;p&gt;Full of energy and new ideas I sat down, wrote responses to those 25 questions from earlier and also&#10;added AGENTS file and CONTRIBUTING guidelines for Grok. The main rules are:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;never commit to master&lt;/li&gt;&#10;&lt;li&gt;never push to remote&lt;/li&gt;&#10;&lt;li&gt;never publish anything to npm&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;For work I have setup and explained it an old fashioned approach. It makes changes in a branch with&#10;conventional naming based on the task I give it. Once it&amp;rsquo;s done it creates a &amp;ldquo;pull request&amp;rdquo; by presenting&#10;me with a patch file. I then review the changes and leave inline comments in that patch file, plus&#10;general feedback at the top and return the steering wheel back to Grok. It is then supposed to implement&#10;my requested changes and once ready present me with a new patch file. Oh how I wish I could write&#10;inline comments like this using GitHub CLI. I still need to rethink this approach so I could keep history&#10;of previous comments because I loose them for now. Fortunately, the most amount changes I have requested&#10;were three so I just checked the last commit Grok created with my requested changes.&lt;/p&gt;&#10;&lt;p&gt;Once, I finished setting these new rules up and I tasked Grok to read them and start following them.&#10;It&amp;rsquo;s first task was to compile the initial ideas document and two QaA files into a structured architecture&#10;file. Which grew to whopping 450 lines from the initial 50. There was also a part of the architecture&#10;that Grok wanted to do but I didn&amp;rsquo;t like his proposal and we decided to keep it for later.&lt;/p&gt;&#10;&lt;h2 id="day-2"&gt;Day 2&lt;/h2&gt;&#10;&lt;p&gt;I didn&amp;rsquo;t get much sleep, mostly because my brain just kept thinking about that feature we didn&amp;rsquo;t specify.&#10;Anyone&amp;rsquo;s elses brain also refuses to shut down in the night and even though I was pretty tired, it kept me&#10;awake. Later in the day I wrote about 30 points for that feature and how it should interact with rest of&#10;the system. It also required some changes to the interface and followed with two rounds of ask me and I shall&#10;clarify. After that, Grod was tasked incorporate this new behavior into the architecture. Followed by a PR&#10;that set up the skeleton for packages that we agreed upon.&lt;/p&gt;&#10;&lt;p&gt;As it sits now, there&amp;rsquo;s a 550 line of architecture documentation and the most basic skeleton of a monorepo.&#10;I still have to see a proper code that it will generate but for now I&amp;rsquo;m pleasantly surprised. My plan is&#10;that all the generated code will have to meet my criteria for high standards. I won&amp;rsquo;t be satisfied with a huge&#10;code that somehow works and no-one understands it properly. Let&amp;rsquo;s see what the next days of actual coding&#10;will bring.&lt;/p&gt;&#10;</description></item></channel></rss>