<?xml version='1.0' encoding='utf-8'?>
<rss version="2.0"><channel><title>Victor's Notes</title><description>Writing about product design, technology, and experiments.</description><link>https://victor.pixeletes.com</link><item><title>SketchJam: code with humans, for fun</title><link>https://victor.pixeletes.com/posts/SketchJam.html</link><guid>https://victor.pixeletes.com/posts/SketchJam.html</guid><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate><description>&lt;p&gt;I love creative coding. This is the way I got hooked into programming, with &lt;a href="https://processing.org"&gt;Processing&lt;/a&gt; and &lt;a href="https://www.arduino.cc"&gt;Arduino&lt;/a&gt;, and what got me was &lt;strong&gt;how short the loop is&lt;/strong&gt;. You write a few lines, you look at the screen, something moved.&lt;/p&gt;
&lt;p&gt;Small iterations and you see the result immediately. I think &lt;em&gt;the shorter the loop between coding and seeing the result, the more satisfying it is&lt;/em&gt;. I did lots of creative coding projects over the years, and I even made a creative coding app for Android, &lt;a href="https://phonk.app/"&gt;PHONK&lt;/a&gt; out of frustrations with the early Android build process.&lt;/p&gt;
&lt;h2&gt;SketchJam&lt;/h2&gt;
&lt;p&gt;So I wanted to make something for exactly that: &lt;strong&gt;writing code by hand, with other humans&lt;/strong&gt;, for no other reason than the fun of it.&lt;/p&gt;
&lt;p&gt;The result is &lt;strong&gt;SketchJam&lt;/strong&gt;, a sort of &lt;a href="https://en.wikipedia.org/wiki/Exquisite_corpse"&gt;cadavre exquis&lt;/a&gt; played with code. Everybody starts from the same seed &lt;a href="https://p5js.org"&gt;p5.js&lt;/a&gt; sketch, and you pass the pen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;One player types at a time&lt;/strong&gt;, with everybody else watching the code change live.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Each turn has a clock and a character budget.&lt;/strong&gt; When they run out, the sketch locks as it is.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;There is no revert.&lt;/strong&gt; Whatever you leave behind is what the next player has to work with.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;video src="https://victor.pixeletes.com/assets/notes/SketchJam/game-session.mp4" autoplay loop muted playsinline preload="metadata"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;I played it with people, and watching a small sketch morph into something nobody planned, turn after turn, is the whole reward. The clock and the character budget add &lt;strong&gt;just enough pressure to keep everybody leaning in&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://victor.pixeletes.com/assets/notes/SketchJam/turn.webp" alt="Your turn: the clock running, the edit budget counting down, the room watching" /&gt;&lt;/p&gt;
&lt;p&gt;At the end you can scrub the replay from the seed to the final frame, and a finished game can seed a new one, so &lt;strong&gt;games end up having ancestry&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://victor.pixeletes.com/assets/notes/SketchJam/home.webp" alt="The lobby: open games to join, and the wall of finished sketches" /&gt;&lt;/p&gt;
&lt;p&gt;More than the game itself, that is what I am chasing here: &lt;strong&gt;making programming fun&lt;/strong&gt;, so we humans can reconnect with coding as the art form it also is. Now that the machines write most of the serious code, maybe this is exactly the moment to get back to the playful side of it.&lt;/p&gt;
</description></item><item><title>My own everything app</title><link>https://victor.pixeletes.com/posts/Hub.html</link><guid>https://victor.pixeletes.com/posts/Hub.html</guid><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate><description>&lt;p&gt;This one started as a continuation of &lt;a href="https://victor.pixeletes.com/posts/Grocery%20Shopping.html"&gt;Grocery Shopping&lt;/a&gt;. That little app worked so well for us that I started thinking, &lt;em&gt;why not expand it with more small modules and replace some of the other apps I use every day?&lt;/em&gt; Also I love self hosting and the whole homelab thing, so the idea of having all of that running on my own servers was very attractive.&lt;/p&gt;
&lt;h2&gt;The shape of it&lt;/h2&gt;
&lt;p&gt;So I made a &lt;strong&gt;modular personal hub&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;One small kernel, written in &lt;a href="https://www.python.org"&gt;Python&lt;/a&gt;&lt;/strong&gt;, that lives on my server, with everything stored in a single &lt;a href="https://www.sqlite.org"&gt;SQLite&lt;/a&gt; file.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Three surfaces&lt;/strong&gt;: the TUI, the mobile app, and the webapp &lt;em&gt;(I love TUIs, mostly for ergonomics reasons, as I wrote in &lt;a href="https://victor.pixeletes.com/posts/On%20computer%20ergonomics.html"&gt;On computer ergonomics&lt;/a&gt;)&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sixteen modules&lt;/strong&gt;: RSS, todo, wiki, groceries, habits, thoughts, and so on. Which is not as impressive as it sounds, since the LLMs do most of the work nowadays.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Very modular and extendable&lt;/strong&gt;: a new module plugs into the kernel and shows up on every surface.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An optional agent&lt;/strong&gt;, that can talk with me and operate the modules.&lt;/li&gt;
&lt;/ul&gt;
&lt;img class="bare" src="https://victor.pixeletes.com/assets/notes/Hub/tui.png" alt="The TUI, with the modules as a menu"&gt;
&lt;h2&gt;An agent on top, not instead&lt;/h2&gt;
&lt;p&gt;I did not want this to be &lt;em&gt;just&lt;/em&gt; an agent, and that is on purpose. I still believe that for many tasks &lt;strong&gt;a consistent, predictable UI is much better than a conversation&lt;/strong&gt;: ticking off the groceries in the supermarket, or skimming the feeds, should always look the same and be one tap away. So every module got its own small UI first, and the agent came much later, on top of them.&lt;/p&gt;
&lt;img class="bare" src="https://victor.pixeletes.com/assets/notes/Hub/phone-screens.webp" alt="The phone surfaces: the day view, the wiki, and the shopping list"&gt;
&lt;p&gt;The agent works in two ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;On its own, in Chat&lt;/strong&gt;, where via tool calling it can reach into all the other modules. This is where it gets really fun: I can say &lt;em&gt;&amp;quot;create a wiki entry about Wanza Mian (a noodle dish from Chongqing), and add the ingredients to the grocery shopping module&amp;quot;&lt;/em&gt; and it just does it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inside the modules&lt;/strong&gt;, doing the small things: summarizing an RSS item, reorganizing the grocery list, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here it is during a study check-in, pinning my Learning Japanese wiki page to the conversation as a bubble:&lt;/p&gt;
&lt;img class="bare" src="https://victor.pixeletes.com/assets/notes/Hub/chat.webp" alt="The wiki page pinned as a bubble, and the bubble opened over the conversation"&gt;
&lt;h2&gt;Building it&lt;/h2&gt;
&lt;p&gt;I think the most important thing was &lt;strong&gt;getting the initial architecture right&lt;/strong&gt;, so things can be built without constant fighting. Contracts between the kernel and the modules are very important, and tests too: they make sure new code does not break the previous things. That was already important before, but in the LLM era even more, because &lt;strong&gt;it is another layer of trust&lt;/strong&gt; we can add on top of the generated code.&lt;/p&gt;
&lt;p&gt;Another thing I practice is not blindly generating code and using it. I try to keep an updated mental model of the code, so I always tell the LLMs to &lt;strong&gt;keep a technical manual and a user manual updated&lt;/strong&gt;. Skimming through the technical manual is a great way to know what is going on under the hood.&lt;/p&gt;
</description></item><item><title>Yet another agent board</title><link>https://victor.pixeletes.com/posts/Forgejo%20Overview.html</link><guid>https://victor.pixeletes.com/posts/Forgejo%20Overview.html</guid><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><description>&lt;p&gt;My personal projects live as repos in my &lt;a href="https://forgejo.org"&gt;Forgejo&lt;/a&gt; instance, and &lt;strong&gt;&lt;a href="https://victor.pixeletes.com/posts/Forgejo%20with%20agents.html"&gt;blipblip&lt;/a&gt;&lt;/strong&gt;, my agent, works on them through issues, moving each one through my status labels (&lt;code&gt;status/research&lt;/code&gt;, &lt;code&gt;status/doing&lt;/code&gt;, &lt;code&gt;status/review&lt;/code&gt;, closed). The problem is that the Forgejo UI is made for visiting one repo at a time: no way to see everything that is in flight at once, and no good way to work on several projects at the same time. So I made a new frontend: &lt;strong&gt;one page where I can see all the projects at once, and from where I can tell blipblip to work on them&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://victor.pixeletes.com/assets/notes/Forgejo%20Overview/forgejo-overview.webp" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;How it works:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Every issue is on the board&lt;/strong&gt;, in the column of its status label, so I can see where everything is at a glance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I can write comments&lt;/strong&gt;, reading and answering any thread without leaving the board.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I can review the PRs&lt;/strong&gt;, see their diffs, and merge them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I can give blipblip recurrent tasks&lt;/strong&gt; on a cron, like checking for improvements, finding dead code, or proposing refactors. Whatever it does comes back as normal issues and PRs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is purely a frontend talking to the Forgejo API directly: there is no database, and Forgejo stays the only source of truth. Since I reach the board over &lt;a href="https://tailscale.com"&gt;Tailscale&lt;/a&gt;, &lt;strong&gt;it works the same from my phone as from my laptop&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The code is not public, but I'm happy to share it if somebody is interested.&lt;/p&gt;
</description></item><item><title>Bespoke design tools</title><link>https://victor.pixeletes.com/posts/Bespoke%20design%20tools.html</link><guid>https://victor.pixeletes.com/posts/Bespoke%20design%20tools.html</guid><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate><description>&lt;p&gt;I started to make a very simple computer game, and then I wanted to process the assets rapidly. I wanted to give it an aesthetic of &lt;strong&gt;collage&lt;/strong&gt;, so I wanted to grab a lot of images from the internet and quickly cut them out.&lt;/p&gt;
&lt;p&gt;I could have done the cutouts using some open source image editing program like &lt;a href="https://krita.org"&gt;Krita&lt;/a&gt;, but instead I thought it would be interesting to create a bespoke application for this specific workflow. So I quickly vibe coded a tool where I can drop an image and, using a SAM-like model, segment anything in the image. Just with a couple of clicks, I can have my collage cutout ready in my game asset folder.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://victor.pixeletes.com/assets/notes/Bespoke%20design%20tools/bespoke-cutout.webp" alt="" /&gt;&lt;/p&gt;
&lt;h2&gt;Why bother, when general purpose tools exist&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;I can tailor the tool to the specific need&lt;/strong&gt; I have at that moment, and only to that need.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I do not own Photoshop.&lt;/strong&gt; More boring, but very real, and the other tools I could use do not have the things I want, like the segmentation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I can be much more experimental&lt;/strong&gt;, and make things that traditional tools cannot do. This is the one I enjoy the most.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That third reason is why the little cutout tool did not stay little. Once the segmentation was working I added a library to keep the cutouts, and from there it kept growing into a small suite of modules: &lt;strong&gt;Shaders&lt;/strong&gt;, &lt;strong&gt;Fracture&lt;/strong&gt;, and &lt;strong&gt;Icons&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://victor.pixeletes.com/assets/notes/Bespoke%20design%20tools/beskpoke-fracture.webp" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;And LLMs keep improving. I can imagine a future where they are so fast that software for a very specific task can be created almost instantly, and &lt;strong&gt;we get to solve our problems in a very tailored way&lt;/strong&gt;, with tools as specific as the problems themselves.&lt;/p&gt;
</description></item><item><title>Forgejo with agents</title><link>https://victor.pixeletes.com/posts/Forgejo%20with%20agents.html</link><guid>https://victor.pixeletes.com/posts/Forgejo%20with%20agents.html</guid><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><description>&lt;p&gt;So for a couple of months I've been using &lt;a href="https://forgejo.org"&gt;Forgejo&lt;/a&gt; to keep my personal projects and it has been &lt;em&gt;really really fantastic&lt;/em&gt;. It is super quick, super easy to set up, and I don't know, maybe this is not very tangible, but &lt;strong&gt;it feels great to host your own infra&lt;/strong&gt; sometimes.&lt;/p&gt;
&lt;h2&gt;Giving a machine to an agent&lt;/h2&gt;
&lt;p&gt;Since I'm using &lt;a href="https://www.proxmox.com"&gt;Proxmox&lt;/a&gt;, and in Proxmox it is very easy to make virtual machines, I thought that it could be interesting also to create &lt;strong&gt;a container that is owned fully by an agent&lt;/strong&gt;. So I made a &lt;a href="https://www.debian.org"&gt;Debian&lt;/a&gt; machine and I gave full root access to my agent, and I also gave an account to this agent to use Forgejo.&lt;/p&gt;
&lt;p&gt;I set up a global hook, so every single time that I mention my agent, it can pick up the task or the question I'm making, everything via project issues. My agent has some small rules to know how to operate in the machine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It has &lt;strong&gt;full access to the machine&lt;/strong&gt;, and can install and uninstall things as it needs.&lt;/li&gt;
&lt;li&gt;It knows &lt;strong&gt;where to put the projects&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;It knows &lt;strong&gt;how to launch them&lt;/strong&gt;, inside a &lt;a href="https://github.com/tmux/tmux"&gt;tmux&lt;/a&gt; session. This is interesting, because if I need to know what the output of a certain project is, I can always SSH very quickly and see the output of the command.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The workflow&lt;/h2&gt;
&lt;p&gt;My workflow is very basic now:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;I create an issue&lt;/strong&gt; where I make an inquiry to my bot, saying hey, could you research about this, or could you fix this, or could you implement this feature.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The bot researches, implements or assesses&lt;/strong&gt;, depending on the task, and then writes the response in the same issue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;For the cases that are very clear it opens a PR&lt;/strong&gt; that I can supervise and give my yes or no.&lt;/li&gt;
&lt;/ol&gt;
&lt;img class="bare" src="https://victor.pixeletes.com/assets/notes/Forgejo%20with%20agents/workflow.webp" alt="An issue, the pull request blipblip opened for it, and the result it produced"&gt;
&lt;p&gt;This workflow has been great because now I can be at any place and, via the Forgejo mobile UI, &lt;strong&gt;interact with my agent without having my personal laptop turned on&lt;/strong&gt;.&lt;/p&gt;
</description></item><item><title>Grocery Shopping</title><link>https://victor.pixeletes.com/posts/Grocery%20Shopping.html</link><guid>https://victor.pixeletes.com/posts/Grocery%20Shopping.html</guid><pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate><description>&lt;p&gt;One day I realized that I was having an issue every single time I went to the supermarket. My partner and I, we share the grocery shopping list in a messaging app, and most of the times we have a very long and unorganized list of items that are &lt;strong&gt;not grouped by sections&lt;/strong&gt; or anything.&lt;/p&gt;
&lt;p&gt;So I had this issue where, for example, in the list it said &lt;em&gt;yogurt&lt;/em&gt;. So I picked the yogurt. Then I went to pick the lettuce in another section, then realized, oh I forgot to buy milk. Then I went back to the dairy section, and then realized again, oh I have to go back to the veggie section because I forgot tomatoes, and so on and so forth.&lt;/p&gt;
&lt;p&gt;Another thing is that, because in a chat &lt;strong&gt;you don't have anything to click&lt;/strong&gt;, many times I end up forgetting to buy certain items or even buying them duplicated.&lt;/p&gt;
&lt;p&gt;So then I realized, hey, wait a minute. &lt;em&gt;I know how to vibe code.&lt;/em&gt; I can make an app very quickly that &amp;quot;solves&amp;quot; this issue.&lt;/p&gt;
&lt;p&gt;So rapidly I made a quick web app where we can add items for the grocery store, and then have a button that &lt;strong&gt;automatically sorts the items per section&lt;/strong&gt; in the supermarket. To be honest, it has been great since then.&lt;/p&gt;
&lt;p&gt;&lt;video src="https://victor.pixeletes.com/assets/notes/Grocery%20Shopping/grocery.mp4" autoplay loop muted playsinline preload="metadata"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;And this is, I think, the part that I really like about this new way of AI assisted code, where &lt;strong&gt;we can develop ideas so quickly&lt;/strong&gt; that I would never have done it otherwise because of lack of time. Could I have used some already existing app for this? Am I solving a problem, or making it even more complicated? I don't know. But this is a new era, and &lt;strong&gt;we can build our own DIY apps in no time&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Related watching: &lt;a href="https://www.youtube.com/watch?v=qo5m92-9_QI"&gt;Home-cooked Software and Barefoot Programmers: Maggie Appleton, Local-First Conf&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>LLMs and design systems</title><link>https://victor.pixeletes.com/posts/LLMs%20and%20design%20systems.html</link><guid>https://victor.pixeletes.com/posts/LLMs%20and%20design%20systems.html</guid><pubDate>Sat, 18 Oct 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;Before, when I made a web app, my process was always the same. I started with pen and paper or &lt;a href="https://www.figma.com"&gt;Figma&lt;/a&gt;, doing a very rough sketch of what I wanted to do. Once I had the idea, I moved to a high fidelity prototype, using (or creating) a proper design system. Later I translated it into code, with something like &lt;a href="https://storybook.js.org"&gt;Storybook&lt;/a&gt; as a centralized repository of all the components, which worked for me also as a source of truth. &lt;strong&gt;That was my process for years.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;What Figma is for now&lt;/h2&gt;
&lt;p&gt;I still use Figma, but I use it for something else now. I use it to work in the 2D visual space, because &lt;em&gt;that is a different type of thinking&lt;/em&gt;. What I do there is lay things out, or make a very lo-fi prototype of what I want, just to see it.&lt;/p&gt;
&lt;p&gt;Then I screenshot that sketch and I pass it to the agent, which is &lt;strong&gt;constrained by the components that already exist in the project&lt;/strong&gt;, and it composes the view.&lt;/p&gt;
&lt;img class="bare" src="https://victor.pixeletes.com/assets/notes/LLMs%20and%20design%20systems/sketch-to-result.webp" alt="A hand-drawn wireframe, and below it the view the agent composed from it"&gt;
&lt;h2&gt;Storybook, replaced by the app itself&lt;/h2&gt;
&lt;p&gt;And at some point I realized that for the size of the projects I do, Storybook is not necessary anymore. The catalogue is still exactly the thing I want, but &lt;strong&gt;the agent can build one for me inside the app&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In one of my projects that catalogue has more than a hundred stories, with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Groups, a filter and deep links&lt;/li&gt;
&lt;li&gt;Keyboard navigation&lt;/li&gt;
&lt;li&gt;Switchers for the viewport and the background&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It has most of the things I found useful in Storybook and &lt;strong&gt;none of the setup&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;There is also a small &lt;strong&gt;audit script&lt;/strong&gt; that goes through the project looking for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Components that are not registered&lt;/li&gt;
&lt;li&gt;Stories that are fake&lt;/li&gt;
&lt;li&gt;Raw HTML sitting in a view where a component should be&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is what stops the agent from writing its own markup instead of reaching for what is already there. &lt;em&gt;A set of rules only works if something can check it.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://victor.pixeletes.com/assets/notes/LLMs%20and%20design%20systems/llmparty-design-system.webp" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;As long as the agent has a good component library and a good set of rules, &lt;strong&gt;a lo-fi sketch is enough for it to compose a high quality interface&lt;/strong&gt;.&lt;/p&gt;
</description></item><item><title>LLM Party</title><link>https://victor.pixeletes.com/posts/LLM%20Party.html</link><guid>https://victor.pixeletes.com/posts/LLM%20Party.html</guid><pubDate>Mon, 12 May 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://llmparty.pixeletes.com"&gt;LLMParty&lt;/a&gt;&lt;/strong&gt; is a collection of small experiments I've been doing to better understand the capabilities of LLM models, and also how to work with them.&lt;/p&gt;
&lt;p&gt;&lt;video src="https://victor.pixeletes.com/assets/notes/LLM%20Party/llmparty.mp4" autoplay loop muted playsinline preload="metadata"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;It did not start with a plan, just some initial curiosities that triggered it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;What knowledge do they have?&lt;/strong&gt; If I give them a GPS coordinate, will they know where the place is?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How far do the vision capabilities go?&lt;/strong&gt; How much can they understand if I draw?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Can I generate retro games in one prompt?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What is this thing called tool calling&lt;/strong&gt; that everybody was chatting about at the beginning?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So for me, LLM Party was the sandbox to experiment with all these things that people were chatting about on the internet, and also to learn how to develop new workflows to use my computer and to use them also in my work.&lt;/p&gt;
&lt;h2&gt;It changed how I build&lt;/h2&gt;
&lt;p&gt;I started to code the project by hand, but immediately I embraced the proto-agentic coding with &lt;a href="https://aider.chat"&gt;Aider&lt;/a&gt;, one of the first harnesses that appeared. It was a great experience, and then immediately I thought, &lt;em&gt;wow, this is the future!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://victor.pixeletes.com/assets/notes/LLM%20Party/llmparty-sketchoff.webp" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;It also changed my way of designing, my workflow and my process. I realized that yeah, I couldn't work the same as before. In many cases I realized I didn't have to use &lt;a href="https://www.figma.com"&gt;Figma&lt;/a&gt; anymore to fully prototype what I wanted to do. &lt;strong&gt;I could iterate faster in code rather than on a white canvas&lt;/strong&gt;. The white canvas was amazing for me to sketch out the idea, then copy paste the image to the agent and see it build. So that was great to see.&lt;/p&gt;
&lt;p&gt;Some of the experiments are a bit subversive, so they play a bit with the idea of what the models &lt;em&gt;can&lt;/em&gt; do, &lt;em&gt;should&lt;/em&gt; do, or &lt;em&gt;shouldn't&lt;/em&gt; do. Also, like, how are we gonna end up?&lt;/p&gt;
&lt;p&gt;&lt;img src="https://victor.pixeletes.com/assets/notes/LLM%20Party/llmparty-universal-ui.webp" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;I think better than explaining the project, &lt;strong&gt;&lt;a href="https://llmparty.pixeletes.com"&gt;I invite you to have a look&lt;/a&gt;&lt;/strong&gt;. I hope you can enjoy it!&lt;/p&gt;
</description></item><item><title>On computer ergonomics</title><link>https://victor.pixeletes.com/posts/On%20computer%20ergonomics.html</link><guid>https://victor.pixeletes.com/posts/On%20computer%20ergonomics.html</guid><pubDate>Mon, 02 Sep 2024 00:00:00 GMT</pubDate><description>&lt;p&gt;I remember those long nights coding and designing with an old Thinkpad. My wrists were like contortionists in a circus, stretching all the fingers to reach all the shortcuts in &lt;a href="https://www.figma.com"&gt;Figma&lt;/a&gt;, &lt;a href="https://www.jetbrains.com"&gt;JetBrains&lt;/a&gt; or &lt;a href="https://www.vim.org"&gt;VIM&lt;/a&gt;. &lt;em&gt;Around that time I did not know I could swap the ESC and CAPS LOCK keys in most operating systems&lt;/em&gt; 😅&lt;/p&gt;
&lt;p&gt;One day I sat at my desk, opened my laptop and started to type. The pain on my wrists was considerable so I barely touched the keyboard for some days.&lt;/p&gt;
&lt;h2&gt;Keyboard first&lt;/h2&gt;
&lt;p&gt;A friend of mine told me about the &lt;a href="https://i3wm.org"&gt;i3 window manager&lt;/a&gt;, and how he reduced the movement of his wrists since he could navigate the computer mainly with keystrokes. It took me some months to have a setup I liked but &lt;strong&gt;wow, it was amazing!&lt;/strong&gt; I moved lots of pieces of my workflow to be more keyboard centric, less jumping to the mouse, less suffering for my wrists.&lt;/p&gt;
&lt;p&gt;&lt;video src="https://victor.pixeletes.com/assets/notes/On%20computer%20ergonomics/tiling.mp4" autoplay loop muted playsinline preload="metadata"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;There was an improvement but not enough. I still had recurrent pain, so I continued my search. I still used a mouse and touchpad since around that time I used Figma quite a lot. I got a vertical mouse and it helped, but &lt;strong&gt;the keyboard was the elephant in the room&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;Down the keyboard rabbit hole&lt;/h2&gt;
&lt;p&gt;I bought a mechanical keyboard, nothing fancy, the clickety-clack feeling was great though. Then I realized &lt;em&gt;how expansive the keyboard world is&lt;/em&gt;. So many possibilities of customization and variations!&lt;/p&gt;
&lt;p&gt;I learned about split keyboards and I got a &lt;strong&gt;&lt;a href="https://ultimatehackingkeyboard.com"&gt;UHK Keyboard&lt;/a&gt;&lt;/strong&gt; with the trackpoint module. Took me a bit to get used to it. &lt;em&gt;(It did not help that I got the version without key labels 😂.)&lt;/em&gt; Nowadays it is my favorite keyboard ever. It is a pleasure to use and each time I work outside home I dearly miss it.&lt;/p&gt;
&lt;p&gt;&lt;video src="https://victor.pixeletes.com/assets/notes/On%20computer%20ergonomics/keyboard.mp4" autoplay loop muted playsinline preload="metadata"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;My wrists are fine now. It took a window manager, a vertical mouse and a split keyboard to get here, but they are fine.&lt;/p&gt;
&lt;p&gt;Now I'm on a quest to find a portable split keyboard, but I find it difficult, they are quite bulky so not great to carry on. I also wish the laptop manufacturers would rethink a bit ergonomics but I guess they don't really care :)&lt;/p&gt;
</description></item></channel></rss>