HN user

aktau

770 karma

I could jammer on about what I've done and like to do, but the most important thing is: I like to learn. When I learn, I have fun. When I have fun, I'm motivated. When I'm motivated, I tend to churn out decent stuff.

www.aktau.be at least has my resume and a blog if that's your thing.

Posts3
Comments264
View on HN

I think Neovim itself has been stabilizing quite a bit in terms of upgrade breakage.

A common reason for breakage is/was:

  - Neovim changes some API (deprecating, ...).
  - User upgrades Neovim and theres some incompability, OR user upgrade plugin and that plugin assumes a much newer version of Neovim. (I've often seen Neovim plugins "mandate" either the latest stable Neovim or even HEAD).
But:
  1. Neovim has been including some popular plugins (or at least their functionality domain) in the past few years. This obviates the need for plugin-for-$THING, and reduces breakage.
  2. ISTM that the pace of (new) plugin development in the Neovim-sphere has slowed down.
The latest example of #1 is vim.pack, which is a plugin manager similar to vim-plug, mini.deps (vim.pack is based on mini.deps), lazy et cetera.

I can remember removing vim-commentary (from tpope) a while ago because Neovim included something like it in the main distribution. Granted, that specific plugin never broke because it uses the stable viml API.

Rayforce 1 month ago

Rayforce is a pure C17 zero-dependency embeddable engine where columnar analytics and graph traversals share a single operation DAG, pass through a multi-pass optimizer, and execute as fused morsel-driven bytecode. No malloc.

Sounds great. I hadn't seen an (explicitly) C17 project before. I wonder which features of it they use. I can only find very scant references in the depot (E.g.: https://github.com/RayforceDB/rayforce/blob/6c4b1eddad0ea728...).

Anyone know?

I clicked around in the kernel section and the other commenters highlighting the simplicity weren't lying. It's beautiful in its simplicity.

Seeing the screenshots I was kind of expecting this was a pre-emptive multi-tasking OS (forgetting what I read in the submission).

Things that thus surprised me on a cursory look:

  - noticed krn_main() ends with `while (1);` [1]. I would've expected a "schedule" call or something. I assume there's no real busy loop burning CPU, maybe it's never meant to reach this code?
  - I'm reminded of the "bare metal OS" when I see one of the apps call `krn_\*` functions directly [2].
[1]: https://github.com/luke8086/gentleos32/blob/main/kernel/main...

[2] https://github.com/luke8086/gentleos32/blob/ea691f14635c023d...

Spot on. Heaven forbid it turns into a C++ (I'm not a Rust practitioner but from the outside it seems to accrete features pretty quickly as well).

The ease of grokking Go (both reading and writing) are big advantages, and facilitated by the "small" feature set of Go.

I have a feeling that after enough slop has entered the system, the AI will also have difficulty debugging/understanding it.

My questions are: will the AI get to be above our level at creating grokkable source code before it comes unmanageable? And even if not: will the models' ability to understand and modify slop outpace it's ability to create it?

For our jobs, I hope neither is true. But we'll see. Even in the best case we'll have a lot of cleaning up to do.

As of writing this, I have not seen anyone describe a process that "scales" agent-driven development in a large company. There is, however, evidence from the past that it is possible. I would point to Microsoft in the 1990s, which did not have mandated review-before-commit practices. <...>. This is regarded as "old-fashioned" "cowboy" style development <...>. But it did work. It created some of Microsoft's most long-lived successful products, like the win32 API.

Little appears to be written about this period of Microsoft history, if you were there I would love to hear or read about your experiences.

I, too, would love to hear about this. And which projects (including the win32 API) were actually the result of no code review. Also, what the (observed) prerequisites were for this to work.

I remember when we still had tcc in Neovim CI. I think it got removed eventually for being too much of a burden to maintain.

How are slimcc/kefir different/easier to drop in?

This reminds me of a great adventure. A long time ago I was travelling through Brazil, in the Amazonas state. I was in Porto Velho and needed to get to Manaus quickly to catch a flight. The boat that would take us there (as I had found in the Lonely Planet) was present on the quay. But the captain didn't feel like going. If I remember correctly, he was waiting for more people. We needed an alternative route quickly.

The captain told us that if we took the bus to Humaitá (a smaller provincial city), we could take a smaller boat that would take us to Manaus. But he warned us that the boat only goes once in three days, and that it would leave soon. The last bus to Humaitá would also leave from Porto Velho promptly.

Despite this flimsy instruction, we didn't see any alternative. So we went. With great luck, we caught the bus and made it to Humaitá (I still have a picture of the boat river transfer the bus took: https://bashify.io/i/CdNcLf).

Our time in Humaitá was surreal. When asked about a boat to Manaus. Everyone told us a different story. There was no harbour (hydroviaria) personal. One person told us the boat to Manaus was named "Caçote". Another person said the boat was named something else. Then someone said it had stopped ferrying years ago. No, we heard from someone else, it would come in 5 hours! Yet another one said it was tomorrow. Someone else felt sorry for us because it had just left. I felt like I was in a (difficult) point and click adventure. There weren't a lot of people in town close to the river, so we ran into the same people from time to time. They would often give different answers to the previous time.

No one was willing to tell us they didn't know. Not a single person out of the 20+ we must have talked to.

In the end, a boat arrived. It went in the direction of Manaus. The captain said that he would only go up to Auxiliadora, and that was still a long way from Manaus. Once again without alternatives (going back to Porto Velho would surely mean we'd miss the flight), we chanced it. In the hopes that getting closer was worth it.

When we arrived at Auxiliadora, it was the smallest inhabited place I had ever been to. Perhaps about 13 houses. Some fishermen. No passenger boat would come for days, they told us. Not to take us to Manaus, neither to take us back. The fishermen had boats, I tried to offer them money so they would take us further. But their day was at an end and they wanted to relax, regardless of what I offered them (we were on a tight budget, but I was desperate enough to offer a significant chunk of a monthly wage, no dice).

Then we found out that on the boat with us, a woman had come who was in a similar predicament as us. She was Brazilian, living in MT and wanting to visit family in Manicoré (which was bigger, and closer to Manaus). Exasperated, she ended up convincing her family to come and pick her up with a speedboat. We hitched a ride. We were very thankful.

When we arrived in Manicoré, I felt like exploring the place. It looked so different from anywhere else I had been, like something out of a movie. But I couldn't. The docks were little more than a collection of wooden jettys (trapiche) that ran everywhere in criss-cross fashion. In order to even get to the quayside we would have to pass through many other boats. In the first one we went through, the captain walked past and I asked him whether he knew of a boat going to Manaus. He signalled where to put my bags. We were leaving.

We reached Manaus in the nick of time.

I love this story, and that time. These anecdotes definitely triggered my memory.

I tried btrfs on three different occasions. Three times it managed to corrupt itself. I'll admit I was too enthousiastic the first time, trying it less than a year after it appeared in major distros. But the latter two are unforgiveable (I had to reinstall my mom's laptop).

I've been using ZFS for my NAS-like thing since then. It's been rock solid ().

(): I know about the block cloning bug, and the encryption bug. Luckily I avoided those (I don't tend to enable new features like block cloning, and I didn't have an encrypted dataset at the time). Still, all in all it's been really good in comparison to btrfs.

What were your (main) problems with Kodi? AFAIK it is written in C++ with Python plugins. Electron would be (on the face) a downgrade yes. But how is a Lua app much smoother?

(My personal pet peeve is that Kodi still doesn't know how to minimize CPU consumption when one is doing nothing on the UI. It should just stop rendering. This means I have to turn Kodi off on my HTPC+server setup to stop it from pushing my CPU in a higher power consumption mode.)

Migrating to the EU 4 months ago

Agree on mullvad, buy giftcard on amazon.

I've heard this before. Is this just to add another hop in the chain to make it harder for someone to track the user down? Apart from someone needing to order Amazon to pony up the details ("Which credit card was this Amazon item bought with?")

Is there another layer of privacy I'm missing?

Any LLM-based code review tooling I've tried has been lackluster (most comments not too helpful). Prose review is usually better.

So we run dozens of parallel CLI agents that can review the code in excruciating detail. This has completely replaced human code review for anything that isn't functional correctness but is near the same order of magnitude of price. Much better than humans and beats every commercial tool.

Sure, you could make multiple LLM invocations (different temporature, different prompts, ...). But how does one separate the good comments from the bad comments? Another meta-LLM? [1] Do you know of anyone who summarizes the approach?

[1]: I suppose you could shard that out for as much compute you want to spend, with one LLM invocation judging/collating the results of (say) 10 child reviewers.

Ghidra by NSA 5 months ago

Can't wait! Do you have any idea how far along this is? Is it likely to be months, quarters, years?

(Funny expression, that. I'll wait, of course. It'll be a happy day when this works again and I can slowly make progress RE'ing again.)

Ghidra by NSA 5 months ago

Thanks for the note.

Your corruption frequency anecdote matches mine. I don't have the mental werewithal to deal with that. I won't go back to radare2 until they change their project file stability somehow.

Ghidra by NSA 5 months ago

+1

I once tried learning how to RE with radare2 but got very frustrated by frequent project file corruption (meaning radare2 could no longer open it). The way these project files work(ed?) in radare2 at the time was that it just saved all the commands you executed, instead of the state. This was brittle, in my experience.

I don't have a lot of free time, so I have to leave projects for long periods of time, not being able to restart from a previous checkpoints meant I never actually got further.

IIUC, one of the first things Rizin did was focus on saving the actual state, and backwards/forwards-compatibility. This fact alone made me switch to Rizin. To its credit, my 3-year old project file still works!

Now for the downside: there is apparently a gap in Windows (32-bit) PE support, causing stack variables to be poorly discovered: https://github.com/rizinorg/rizin/issues/4608. I tested this on radare2, which does not have this bug. I'm hoping this gets fixed in Rizin at some point, at which point I'll continue my RE adventure. Or maybe I should give an AI reverse engineer a try... (https://news.ycombinator.com/item?id=46846101).

From the GitHub page:

LiteBox is a sandboxing library OS that drastically cuts down the interface to the host, thereby reducing attack surface. It focuses on easy interop of various "North" shims and "South" platforms. LiteBox is designed for usage in both kernel and non-kernel scenarios.

LiteBox exposes a Rust-y nix/rustix-inspired "North" interface when it is provided a Platform interface at its "South". These interfaces allow for a wide variety of use-cases, easily allowing for connection between any of the North--South pairs.

Example use cases include:

  - Running unmodified Linux programs on Windows
  - Sandboxing Linux applications on Linux
  - Run programs on top of SEV SNP
  - Running OP-TEE programs on Linux
  - Running on LVBS

This is great. I'd love to do something similar for Ground Control (2000, https://en.wikipedia.org/wiki/Ground_Control_(video_game)).

Do you have a writeup of how you did it? Both (regular) tooling (radare2? rizin? IDA? ...) and how the LLM did (or did not) use it?

In the little spare time I have, I've been able to reverse engineer the "compressed" file format (ended up being basically a XOR'ed zlib-compressed TAR-like archive), but not much else. I have not used LLMs to help me.

I changed read/write_file to put contents in the state and presented in the system prompt, same for the agents.md, now working on evals to show how much better this is, because anecdotally, it kicks ass.

Can you detail this a bit more? Do you put the actual contents of the file in the system prompt? Forever?

I still have some screenshots in my GitHub repository of what my ArchLinux with AwesomeWM (X11) looked like in 2009.

Those screenshots also contain the RSS, as luck would have it.

34MiB when on the desktop (clean), running X.org, AwesomeWM and xcompmgr (for compositing). Screenshot: https://github.com/aktau/awesome/blob/master/screenshots/200...

57MiB with a couple of applications open. From memory: urxvt running htop, thunar (XFCE file manager) and the Mirage image viewer (which is Python, not otherwise known for efficiency). Screenshot: https://github.com/aktau/awesome/blob/master/screenshots/200...

Nowadays, even with a tiling WM that's supposed to be lightweight (say: Sway), the minimum appears to be well over 300MiB (see https://www.reddit.com/r/linux/comments/1njecy5/wayland_comp...). GNOME 49 takes up around 1GiB last time I tried it (NixOS). Interestingly https://www.reddit.com/r/swaywm/comments/oghner/how_does_the... from 5 years ago mentions Sway only using 115MiB. What happened?

Theories I have:

  - 32-bit to 64-bit means all points are double the size. That would account for something.
  - Wayland vs X11. I should compare Sway versus X.org+i3.
  - General library and system daemon bloat.

They were using tori primitives for the chain mail, and curve primitives for the clothing. (I.e., the clothing was actually woven out of curve primitives for the threads.)

That sounds mind-blowing. Is this documented anywhere?