← Back to home

Blog

Short but useful notes from day to day

Vibes Pixel World

NeurAlch

Vibes - Pixel World

Vibes Pixel World Screenshot

In Nov 2025, I spent part of my weekend trying to build a tiny voxel world editor, just for fun, kinda like Minecraft but without the game part.

It was a good experiment on vibe coding, did not look much at the code, learned a few things about Claude Code, Voxel Art, etc.

Code is at https://github.com/NeurAlch/vibes-pixel-world.

Some features, summarized by Codex:

  • Voxel world builder with add/remove blocks, undo, fill, extrude, repaint, and placement grid tools
  • Multiple camera modes: orbit, orthographic pixel view, and first-person walk
  • Asset library with in-app asset editing, saving, renaming, categorizing, and previewing
  • Color palette system with built-in collections, custom palettes, picker input, and live swatch selection
  • Trait system for voxel effects like light and fire, with editable light/flicker settings
  • Ruler and measurement tools with lock and clear controls
  • Visual effects controls for pixelation, trip effect, sunlight, exposure, and atmosphere
  • Local persistence through the Express API for world, assets, and color collections

The amazing thing of vibe coding stuff for fun, is that you can do little tools like this without investing too much time and effort.

Of course, another side project that never sees the light of day, but learned a lot about coding with AI.

Vibes Pixel World

Vibe coding personal apps - Random Notes

NeurAlch

Vibe Coding Personal Apps - Random Notes

It used to take me many days of my personal time to code something personal, usually involving things like:

  • Think about what I need
  • Create the boilerplate
  • Think about the architecture, design, features, etc
  • Create the app, a basic PoC
  • Iterate, add features, improve UX, etc

Didn’t need to be perfect but still a lot of coding and iterations.

Now with a few hours of vibe coding, I get a tool exactly to my taste, same thing but faster, tho:

  • I haven’t looked at the code, don’t care about quality
  • It stores things on JSON files that I git track
  • I had to accept part of what the AI decided, since I did not prompt every little detail
  • It looks 80% how I want it, and it works

I know I would not ship this to millions of users, but it is perfect for my needs, and I can iterate as much as I want.

Here is a simple example of one of those vibe coded personal apps, where I wanted to be able to do habit tracking with range (positive, negative):

Habits App Screenshot

A few things I have learned on this experience with vibe coding personal apps:

  • Start with the agent creating a boilerplate with the tech/setup you like
  • Ask it from the start to create documentation on coding style, patterns, tech stack, etc
  • You can try an idea in a few minutes/hours, and then trash it if you want
  • You need to be very careful about some common problems with AI agents:
    • Git for everything, be sure you can tell the agent to revert, and always commit
    • Make sure your instructions mention being careful with existing data, and have a way to get it back
    • Usually a single coding agent per tool/feature is best, the code is the documentation

Now, as a developer that was used to using my brain for hard problems all the time, with vibe coding like this, where you don’t really care about the details or the implementation, you start to feel like you’re getting a bit lazy and even dumb from time to time.

This might be both good and bad.

  • You lose some of your coding practice time, what you don’t practice, you might forget
  • You start to wonder sometimes if this is actually faster, or you are just being lazy
  • You stop learning new things in detail, no longer an expert, just the bird’s eye view of things
  • You become a tourist of the codebase, instead of the usual full graph in your brain of how the codebase works
  • You start caring more about UX, design, and other non-technical things, since you’re not the one implementing fully

So, I realize now with AI there are multiple ways to code, depending on the type of task/project, coding is no longer a single process.

  • Learning new technical stuff can now be done interactively with a coding agent
  • Doing production-ready code makes the agent become your second hand, and sometimes you the baby sitter
  • You have agents you can delegate things to, but you need to have processes/instructions depending on the task you’re delegating to them
  • Documentation becomes important, the agents don’t have your memory, they start fresh every time
  • Documentation might be different for humans and agents, not the same needs, not the same level of detail

So, I used to code the same way for almost everything, the only difference was usually the level of quality, personal vs production.

Now, I have completely different processes for everything.

And it is fun.

Call me Pablo

NeurAlch

If you add to your AGENTS.md or CLAUDE.md file the instructions to call you by a certain name, like:

Call me Pablo.

You’ll easily notice when the agent memory/context is degraded, as it will stop calling you by that name.

Wallpaper-driven theme switcher

NeurAlch

Wallpaper-driven theme switcher

I created a small Fish alias ,tw ( theme-switch --wallpaper). It launches an fzf picker inside Kitty, previews every image in ~/Wallpapers, and lets me lock in the mood based on the image I choose.

Behind the scenes the script hands the chosen file to pywal, grabs the generated 16-color palette, and feeds it to a helper that rewrites all my theme snippets (Hyprland, Waybar, Kitty, Walker, btop, mako, swayosd, etc.).

The fresh palette is saved as a new theme directory, the wallpaper is set via hyprpaper, and the regular theme-switch routine copies everything into place before reloading.

,tw  # pick wallpaper → extract palette → theme everything → reload

fzf wallpaper picker with matching desktop theme

Notes

  • I generate my Wallpaper images with MidJourney
  • I started using Kitty because of the image support (and ligatures).
  • The inspiration came from Aether (for Omarchy) tool.

Understanding code faster with color

NeurAlch

Understanding code faster with color

It all started when I had like 100 ToDo items on my ToDo.md file.

I wanted my eyes to ignore the ones that are already completed, and see more prominently the ones left.

So I did something like this, mutted the ones done already to the point that I can barely see them, and made more obvious the ones left to do.

Markdown

Markdown buffer highlighting

Neovim checkbox highlights

Here is the tiny snippet living in my after/ftplugin/markdown.lua to give todo lists their color pop:

-- Drop this in after/ftplugin/markdown.lua
vim.api.nvim_set_hl(0, "TodoUnchecked", { fg = "#ff6984" })
vim.api.nvim_set_hl(0, "TodoChecked", { fg = "#30502f", strikethrough = true })
vim.fn.matchadd("TodoUnchecked", "^.*\\[ \\].*$")
vim.fn.matchadd("TodoChecked", "^.*\\[x\\].*$")

TSX/TS

Then I realized the same technique can be used for things like try/catch, where I want to make it obvious that this is important (red).

Then there is making it easier to read HTML/JSX, a bunch of nested JSX/HTML tags? Why not mute the closing ones like </Tag>? This makes it pretty easy to read, feels a bit like Python indentation (maybe?).

A hundred className=? Let us also mute that noise…

Is a condition positive or negative? Like != is not the same as ==, so why not use different colors? Same for boolean true/false.

TSX buffer highlighting

Python

I tried a few things with Python as well, still a work in progress.

Python buffer highlighting

Conclusion

This experiment turned out a success, I managed to speed up my reading/understanding time.

Still improving but so far, I love it.