HNHacker News
TopNewBestAskShowJobs

Kaliboy

107 karma · joined February 19, 2026

submissionscomments
Kaliboy··on Elixir v1.20: Now a gradually typed language
I finally found uses for Prolog haha. For years I would have been able to write exactly your comment.

One use is a spellcheck. Though some bits are in Rust cause backtracking would be too slow.

Another is a game I'm making, the server is in Elixir, and I use erlog to basically program the NPCs in prolog. The game generates events and they are processed into facts if they are perceived by the character.

And with that I can have the system generate goals based on stuff like "I havent seen X at the market for 3 days whilst beforehand I saw X every day. Let me go check on X."

I didn't know Erlang started as a Prolog program basically, but it shows cause they fit together like a match made in heaven.

Kaliboy··on Elixir v1.20: Now a gradually typed language
Phoenix does have that. ViewModels. I don't think its required to use though, but we always do.
Kaliboy··on Uber's $1,500/month AI limit is a useful signal for AI tool pricing
I sometimes let Claude Opus create plans, DeepSeek v4 pro implements and writes tests. Claude reviews and corrects.

Saves like $2-3 per session. Same quality code.

Kaliboy··on Elixir v1.20: Now a gradually typed language
Honestly just build it using the tutorials and sound mind and you're like 80% there.

This may sound crazy but when any interpreter boots up, but I feel it especially with BEAM, that needs to be your "let there be Light" moment. That's your world, that state is yours and only your will decides what changes.

So yes you can call all functions in your module, that's indeed how it works. But that's your module and that function mutates your world.

Just like you filter what people tell you based on your knowledge, you do the same here.

Most of my methods start with guard clauses.

`return if condition_not_met`

Don't touch my state if I don't agree with what you want me to do.

In Ruby it's essential cause that's how we get RuntimeErrors all over the place. In Elixir it's way easier to do, with pattern matching. And easier since state is what enters the function and will be what leaves.

If you keep this in mind you should inherently write safe code, because in protecting your domain through guards you basically close the door for exploitation by unknown means.

I'll give you one example I just thought of. Where I work we run Rails since the time before time, and as such had a lot of technical debt.

Around Rails 5 or 6 what we call `ActionController::Parameters` had a breaking change. Basically this module processes parameters received from HTTP requests.

Beforehand it just wrapped all it got and handed it over to us. But now it expected us to tell it what to expect. And if didn't find what it expected it blew up with a bang!

Horrible for our hundreds of controllers with `controllers * 4` html templates where all the form keys were hidden.

We either had to add the conventiely available `permit!` call, or find the form keys for all the forms, and add `permit(:name, :address,...)`. A shitload of work before AI.

I ended up monkey patching Rails to generate the lists for us instead of crashing. And for the point of this entire story...

The defaults of most frameworks are very safe, but they require the most verbosity so the framework knows what to expect and to guard it. But there always exists easier and faster ways to the same goal, but it's generally a trade. You get ease, you sacrifice some security.

Don't get in that habit and you'll be fine. And spend a lot of time thinking what could go wrong and guard against them.

Kaliboy··on Preparing for KDE Plasma's Last X11-Supported Release
I upgraded to the latest PopOS with Cosmic running on Wayland.

Honestly everything just worked, but using it made me so nauseous. There was some latency somewhere, never figured it out. Running Cinnamon on X11 now. I did read some suggestions to improve latency but I have PTSD so it's going to take a while before I try Wayland again.

Kaliboy··on Codex just found a "workaround" of not having sudo on my PC
Let's hope the M at least has a root password.

But you are right, that would be nasty. In my time the LAMP tutorials used the distribution packages so they always had sensible defaults.

Kaliboy··on Codex just found a "workaround" of not having sudo on my PC
Inertia I guess... We try. I managed to remove it everywhere in our stack in CI and such but in dev everyone is used to docker build.

And I don't have the energy for the team meeting to discuss a change.

And honestly docker compose has been ridiculously stable for us. 2+ services on seperate servers behind haproxy has been as stable as our Kubernetes Cluster for a fraction of the (intellectual) cost.

Kaliboy··on Codex just found a "workaround" of not having sudo on my PC
But there it's a feature.
Kaliboy··on MCP is dead?
Ah I see, makes sense.

Would pair well with direnv to set the right keys per project.

Kaliboy··on MCP is dead?
Did you consider that maybe he has different information than you do, and thus he holds a different opinion?

I for one love MCP. It's way faster in my experience than skills / shell. And I like how (with Claude Code) I can setup the MCP in the web interface, use it in the chat and the CLI.

Plus the flow to add an MCP via the browser is achievable to any user.

And one thing I don't understand of skills is this. I have an MCP for my life organisation app that authorizes via OAuth. The flow is fully via the browser so I can use the app session and its stored somewhere in claude.ai. How does authentication work with skills?

Kaliboy··on That Methyl Methacrylate Tank
You sure? I got a manual that has lined up with expectations thus far.
Kaliboy··on Netherlands blocks US takeover of vital digital supplier
Honestly they have good separation of concerns in the Dutch government. And running the stack doesn't automatically mean hosting the services, there's enough local expertise in the Netherlands to run that.

A few years ago I had the mispleasure of working for the island government of Bonaire, and they kinda run the same systems as they do in the mainland, being a sort of municipality.

Since all gemeentes in the Netherlands are basically independently run but have to communicate with each other for DigiD but also the GBA (ID system) and loads of other stuff, they invented a standard. It's a SOAP based monstrosity called StUF, and you better spell it like that.

I can't find much about StUF in English, but there is this about the succesor where they lament on how engrained StUF still is.

https://www.conduction.nl/commonground/

It wouldn't surprise me that migration to common ground is what they are refering too. StUF knowledge is not widespread due to the level of vendor lock in. There's not many vendors and outside GovIT nobody cares about StUF.

Kaliboy··on A sleep-like consolidation mechanism for LLMs
This is very interesting to me, I've been sleeping a lot lately.

I'm autistic and just went through massive changes that basically keep locking up my brain and I freeze.

I learned that sleeping helps, even if just 20 minutes. It helps that I can fall asleep "while awake". It's as if I relinquish control of responding to stimuli, which instantly brings so much rest to my mind. It is odd trying to move a limb and the brain basically responds with noop. But it works.

Afterwards I can generally make a decision and perform it.

So in a sense it seems similar to what you describe the model would have to do. I forget short term concerns that overwhelm and refocus on the long term goal.

Kaliboy··on Show HN: Audiomass – a free, open-source multitrack audio editor for the web
Have you tried Ardour? It's like a superset of Audacity.
Kaliboy··on Regex Chess: A 2-ply minimax chess engine in 84,688 regular expressions
Yeah I know, but I thought I was doing purely theoretical excercises.

And we always changed the regex NFA to an equivalent DFA and that was the implementation.

So somehow I managed to internalize the idea that an NFA is purely theoretical and can't be built.

Kaliboy··on Kv4p HT – A homebrew 1W radio (VHF or UHF) that plugs into an Android phone
Those cheap baofeng's are illegal to use where I live on most of the spectrum they can operate on. Illegal to press the talk button anyway.

So maybe the 1w is also a regulatory issue.

Kaliboy··on Regex Chess: A 2-ply minimax chess engine in 84,688 regular expressions
This is amazing. I'm at loss for words.

During my CS years I remember being fascinated by NFA's, as opposed to boring single universe DFA's.

For some reason I internalized that I would never see something like an NFA implemented beyond text books.

Then came Carlini.

Kaliboy··on Butterflies are in decline across North America, a look at the Western Monarch
I'm not American, grew up on a Caribbean island. When I was little milkweed was everywhere, including our yard. Consequently monarch butterflies were everywhere.

But we fought the milkweeds cause nobody wanted them in their yard cause before long it's all you had.

We won the war but we don't have as many monarch butterflies anymore.

Here it had nothing to do with pesticides, we just destroyed their lifecycle.

Kaliboy··on My audio interface has SSH enabled by default
I recently vibe coded a jack mixer in Rust. It can ingest and relay audio via LAN. I have around 40 ms latency, 50-60 ms if relaying via wifi.

It would solve the issue in a similar way. One pc runs the mixer. The mixer has an input channel for local mic.

Other PC broadcasts their mic to the mixer, which comes in as 'channel 2'.

You can even have music playing on your local PC, either the mixer or broadcaster creates a local sink.

It's all then mixed in the mixer, there's 3 outputs. You could say use the main out to send to discord.

And the monitor line would be used to output Discord audio, which can then be relayed to the other PC for realtime listening.

Kaliboy··on The seven programming ur-languages (2022)
Same, our professor was okay, but he introduced a new system for the course that year, Weblab. I see it still exists and I have no doubt it works flawless now but every exam except the last ones was a mess.

And regarding the screwdriver, I fully agree. Especially with AI I can use the right tool for any job, despite me not being able to use it directly.

Kaliboy··on The seven programming ur-languages (2022)
Hi there! Which year was that? I followed the course in 2012/2013. Bummer it's gone.

We almost won the tournament, we lost cause we overestimated the enemy.

We programmed our agents to assume that if they have our flag they're bringing it to their base, thus we sent all agents there to await their arrival.

And so they waited while our opponents ran in circles with our flag at the center or the map.

I tried many things in Prolog but ordinary languages often proved to be more suitable.

I recently vibe coded spellcheck.boneiru.online which is fully based on Prolog.

I realized a spellchecker is a perfect use case, since I basically need to check ortography which is a set of facts.

In terms of GOAL the text input would be the perception, and I then resolved whether the goal (correct text) is achievable.

The facts are all valid words in the language and the rules I got from an ortography book.

Kaliboy··on The seven programming ur-languages (2022)
No this GOAL: https://en.wikipedia.org/wiki/GOAL_agent_programming_languag...
Kaliboy··on The seven programming ur-languages (2022)
My favorite subject when studying CompSci (TU Delft) was called "Concepts of programming languages". We learned C, Scala (for functional) and Javascript (prototypes).

It made learning Elixir years later much easier.

We also had a course that basically summed up to programming agents to play Unreal Tournament in a language called GOAL which was based on Prolog.

For years I've wanted to use Prolog but could not figure out how. I ended up making a spellcheck to allow LLM's to iterate over and fix the dismal Papiamentu they generate.

Kaliboy··on Brunost: The Nynorsk Programming Language
After spending way too much time thinking about how I would program in a language I never heard about I realized that as a native Dutch speaker Nynorsk is fairly readable.

I'm sold.

Kaliboy··on Ada, its design, and the language that built the languages
I absolutely love this article.

When I was a young lad, must have been 20 I came across some programming books, including programming in Ada.

I read so much of it but never wrote a line of code in it, despite trying. Couldn't get the build environment to work.

But the idea of contracts in that way seemed so logical. I didn't understand the difference this article underpins though. I learned Java and thought interfaces were the same.

Great article, great language.

Kaliboy··on Someone bought 30 WordPress plugins and planted a backdoor in all of them
Node is on another level though.

It's cause they have no standard library.

Kaliboy··on LÖVE: 2D Game Framework for Lua
Lua will forever hold a special place in my heart. It was the first programming language that I actually managed to learn, instead of just attempting to learn it.

It was chosen around 2008 or so to be the scripting language in Multi Theft Auto: San Andreas.

We build entire worlds in Lua, there were many gamemodes, but my favorite was Roleplay.

Good old carefree times.

Kaliboy··on Lisette a little language inspired by Rust that compiles to Go
Horrible news for me, I quite like the idea and syntax, but it also reminds me of my wife which I am currently divorcing.

Not sure I'd like the constant reminder.

Kaliboy··on Samsung Magician disk utility takes 18 steps and two reboots to uninstall
Maybe I don't understand your point, but why is Waylabd in your list?
Kaliboy··on Tailscale's new macOS home
Did we read the same article? It literally drove them to create a new application.
← PreviousPage 2 of 3Next →