HNHacker News
TopNewBestAskShowJobs

Ciantic

1,510 karma · joined March 11, 2015

https://ciantic.iki.fi/
submissionscomments
Ciantic··on Xfwl4 – The Roadmap for a Xfce Wayland Compositor
I've used Smithay's Rust client toolkit for a few months now. For making apps it is still sometimes have unsafe wrappers disguised as safe. It has a lot of internals wrapped in Arc<>, but in my tests, the methods are not safe to call from different threads anyhow, you will get weird crashes if done so.

I will seek to dive-in to how Wayland API actually works, because I'd really like to know what not to do, when the wrappers used 'wrong' can crash.

Ciantic··on Oh My Zsh adds bloat
I have these plugins: git, zsh-autosuggestions

    /usr/bin/time -f "%e seconds" zsh -i -c exit
    0.06 seconds
This is acceptable, maybe the zsh-autocomplete is the problem for author or something else?

I originally switched to ZSH + Oh My Shell because it opens so fast. Ideally plugins would initialize asynchronously but it's not very easy with shell scripts I think.

Ciantic··on Amazon will allow ePub and PDF downloads for DRM-free eBooks
I have Kobo, but their decision to enable secure boot in newer models, and consequently pushing out FOSS choices as operating systems makes me think I won't get another Kobo. Yes the Nickel menu works still with secure boot enabled devices. I like to think that devices I buy might have different use-case in future, and secure-boot enabled devices seriously harm that.
Ciantic··on Show HN: Orbit a systems level programming language that compiles .sh to LLVM
> designed to replace legacy shell scripting ... as arguments are passed as a structured array, not a raw string to be parsed by a shell

I find shell scripters prefer ubiquity and readability over raw performance. And making it mandatory to give arguments as arrays worsens the readabilty. However having both options would be good, your example doesn't actually require the shell escaping so it could have simpler way.

Here is equivalent in Deno for instance

    #!/usr/bin/env -S deno run --allow-all
    import $ from "jsr:@david/dax"; 
    const command = $`grep -r keyword .`.pipe($`wc -l`);
    const result = await command;
Deno (via library) and Bun both have $ that can also handle escaping, e.g.

    const dirName = "Dir with spaces";
    await $`mkdir ${dirName}`; // executes as: mkdir 'Dir with spaces'
I don't think syntax is your biggest hurdle though, biggest hurdle is that Bash is so common, Powershell was supposed to be better shell scripting, yet it takes nowhere outside Windows space.
Ciantic··on People keep flocking to Linux, not just to escape Windows
Given that I've been using actively this just month, my opinion is bit biased.I run myself basically Fedora 43 KDE version: https://www.fedoraproject.org/kde/

However, for folks who don't want to install some random packages, maybe Atomic version of the distro is better: https://fedoraproject.org/atomic-desktops/kinoite/

Atomic Linux desktops has the neat feature for ability to "rollback" if installation fails. A lot like with ChromeOS, the updates are done in atomic fashion and the flipped over to new version.

Normal Linux distributions are more mutable, atomic are lot more immutable.

Ciantic··on People keep flocking to Linux, not just to escape Windows
I switched to Linux in the past month.

First, I installed GNOME based Fedora 43, that was a mistake. I got it working "somewhat" like Windows, with Dash to Panel etc. widgets, but stability was not there after all the hacks.

Then I figured I try KDE Plasma, and this is so close to Windows that I made the switch permanent. Even little things like double-clicking on top, or bottom resize handle vertically maximizes the window, like in Windows.

KDE is not just better than Windows, but it is way more configurable out of the box. I really like window rules, which allows to set window locations, always on top settings for specific Chrome PWAs or other windows. KDE Settings panel is light years ahead of Windows, it has all the settings in one place, kind of like the old Control Panel.

There is rough spots, but not that many... I did end up buying AMD GPU, as with Nvidia GPU I had bunch of bugs.

I wanted to switch to Linux for a long time now because Windows Subsystem for Linux just wasn't good enough, it was mediocre. All the development happens with tools that have bash scripts as a glue. Windows was a hindrance at this point for me.

Right now I'm trying to learn to write small native Wayland GUI apps that use minimalish amount of memory, this is a bit tricky compared to Win32, but with new toolkit libraries pretty doable.

Ciantic··on Electron vs. Tauri
Yeah, I switched to Linux and my single Tauri app was not cooperating.

They do have an effort to use Chromium Embedded Framework for rendering the webview, it's potentially much more stable in Linux. [1] It is nowhere near finished but you can run the cefsimple example, and it rendered me a window in Wayland.

CEF is also bundled in many distros, like Fedora 43, so if it can be linked with Linux distros version of CEF, then the binary stays smaller.

[1]: https://github.com/tauri-apps/cef-rs/tree/dev/examples

Ciantic··on The Cities Skylines Paradox: how the sequel stumbled
> The Paradox Mods platform will remain the only officially supported mod hub, so deep code mods akin to CS1’s may never return.

I've written a mod to CS2 and CS1 (granted not a big mods but few small ones), Paradox mod store doesn't limit you in depth of the code mods. What you are limited by is churn in the internals of the game engine, as most mods use monkey patching techniques that then break.

What I wished CS2 modding had some official way to monkey patch, so they could somehow try to detect incompatible monkey patching when people have 100s of mods installed. Suppose two mods modify WaterSystem, it would show the user both mods and locations they've attached at. It would help debug things down.

Many gamers blame original game devs for broken game even though it was fault of the mods they've installed. For us who knows programming, that is ridiculous because these mods are monkey patching at so deep level... but that is probably reason many games don't have official modding as it weighs down their reputation.

Ciantic··on Cloudflare outage on November 18, 2025 post mortem
> It may be that forcing handling at every call tends to makes code verbose

Rust has a lot of helpers to make it less verbose, even that error they demonstrate could've been written in some form `...code()?` with `?` helper that would have propagated the error forwards.

However I do acknowledge that writing Error types is boring sometimes so people don't bother to change their error types and just unwrap. But even my dinghy little apps for my personal use I do simple serach `unwrap` and make sure I have as few as possible.

Ciantic··on Switching from GPG to Age
I want to know as well, I just read gpgme-json page posted, but it doesn't include anything about WebAuthn (aka passkeys).

Can you use GPG-agent for non-resident passkey challenges?

I also have Yubikey setup, but haven't thought of this.

Ciantic··on Steam Frame
What the, this link also crashes KDE Plasma, when opening this link with Google Chrome. I had to reboot two times, just clicking this frame link.

Both times, first journalctl entry in the crash time is:

[drm:__nv_drm_gem_nvkms_map [nvidia_drm]] ERROR [nvidia-drm] [GPU ID 0x00000100] Failed to map NvKmsKapiMemory 0x0000000070a84e8b

Then KWIN dump etc.

Reminding me to buy AMD next.

Ciantic··on Tauri binding for Python through Pyo3
"a thin wrapper over the system webview"

That is very complicated if you take into account also Linux, Windows, iOS, MacOS, Android support, and related utilities like tray icon, etc. There are other efforts, too, but they are also wrappers. Like this C/C++ implementation https://github.com/webview/webview that targets only desktop operating systems.

Ciantic··on Working pipe operator today in pure JavaScript
First example doesn't work though:

    const greeting = pipe('hello')
       | upper
       | ex('!!!')

    await greeting.run() // → "HELLO!!!"
If you look at the tests file, it needs to be written like this to make it work:

    let greeting;
    (greeting = pipe('hello')) | upper | ex('!!!');
    await greeting.run();
Which is not anymore as ergonomic.
Ciantic··on Kirigami-inspired parachute falls on target
Can one nest those kirigami structures on top of each other? Imagine if you had a smaller-diameter version right on top of it. It would open up inside the outer one, increasing the surface area. The bottle example didn't seem convincing in and of itself in the videos, but the small egg and LEGO figure had what looked like somewhat functional.
Ciantic··on Which table format do LLMs understand best?
This is a bit silly way to use LLMs to process tabular data. In reality, you'd ask it to write functions and execute them. First you'd ask it to create a type definition from the table, then ask it to create functions to process the data.

"Write a function to find years of experience by name? Return just the number, e.g. '12'."

It works much better, and it can single-shot many of the processing requirements just from type definitions it can infer from the data.

This way it's easier to stick to tabular formats that have easy reading libraries, like with TypeScript/JavaScript JSON, and with Python, maybe CSV...

Ciantic··on Immich mobile app sync V2
It apparently doesn't support that: https://github.com/immich-app/immich/discussions/4341

This article just highlights how hard it is to make optional offline applications. I feel like there should be a database-level solution to all this synchronizing.

Postgres can't run on a phone, so that's not a candidate for fully-synced database.

Ciantic··on Thundering herd problem: Preventing the stampede
I've stumbled on this twice now, usually you can use just CDN caching, but I once solved it with redis locks, and once with simply filling the cache periodically in the background.

If you can, it's easier to have every client fetch from cache, and then a cron job e.g., every second, refresh the cache.

In CDN feature to prevent this is "Collapse Forwarding"

Ciantic··on Luau – Fast, small, safe, gradually typed scripting language derived from Lua
That is one way.

What I meant was transpiling Luau (in memory or cached to disk) -> TypeScript -> typecheck with tsc -> take error outputs and line numbers -> transform back to Luau code via sourcemaps etc. This is potentially way easier than making your own checker for another structurally typed language.

User only sees Luau script in their editor, but it gets checked by TSC in the background.

Roblox might is such a big maker that they can re-invent the whole structural typing themselves, so they don't need to do that.

Ciantic··on Luau – Fast, small, safe, gradually typed scripting language derived from Lua
Typed Lua is something I've always wanted, but writing a very comprehensive type-checker and LSP for another dynamic language is pretty difficult. All dynamic languages have similar problems to those TypeScript encountered, as most dynamic languages have a sort of structural typing in the form of dictionaries or objects.

I do wonder if we could reuse TypeScript in other dynamic languages.

Transform Luau to a subset of TypeScript, check with tsc, transform errors and results back to Luau. In the same way, one could reuse a TypeScript language server. This way of utilising TypeScript's engine could jump-start many other type checkers for other dynamic languages.

Ciantic··on Nicu's test website made with SVG (2007)
It does come up in normal results for me, I don't need to go to the images section, the page has keyword for testing lmtbk4mh, see result https://www.google.com/search?q=lmtbk4mh
Ciantic··on The HackberryPi CM5 handheld computer
It seems to be a really hard problem. Deep sleep even with Raspberry Pi Zero and Pico product lines has been problematic. I hoped they would make Pico 2 deep sleep better, but it still needs external deep sleep RTC like DS3231 to make it truly useful.
Ciantic··on Serverless Horrors
I've used Azure with spending limits. They do work, they shut down things, and the lights go off. [1], Only some external resources you are unlikely to use don't follow spending limits, but when you create such resources, they are clearly marked as external.

That's one positive side of Azure.

[1]: https://learn.microsoft.com/en-us/azure/cost-management-

Ciantic··on Bookmarks.txt is a concept of keeping URLs in plain text files
I have my own Chrome/Firefox extension that shows bookmarks in the new tab page ordered by recency with a search field on top, it's pretty good for me. Every time I open a new tab, I see the latest bookmarks I've added. Granted, I don't usually bother to browse older ones, but at least I see ~15 new ones on (desktop monitor) every day.

Also, I sometimes add a snippet of text from the content to the title of the bookmark, making it easier to search afterwards.

Ciantic··on Google will allow only apps from verified developers to be installed on Android
I have no answer, I'm asking the same question. Who can raise serious funds like 1 billion to do it? I'm guessing for FOSS/Linux crowd to get fully behind, it can't be a company, but a person like Linus Torvalds. Given that browsers are becoming a platform themselves for major apps, maybe it can lower the bar in the future for smaller vendors to create a feasible market.
Ciantic··on Google will allow only apps from verified developers to be installed on Android
You highlighted the problem I was stating: Effort is scattered among small players. I would love for SailfishOS to win, but crowdfunding is hard with random Thingamabob companies; it needs name recognition behind it.

For the new ecosystem to win, it needs to have its own user base for companies building apps to recognize it. Even with SailfishOS, the banking apps still require Android compatibility layer, which is slowly eroded with Play Services and Play integrity check disabling those one by one in the coming years.

Ciantic··on Google will allow only apps from verified developers to be installed on Android
> "GNU/Linux" touch version that has a serious ecosystem

That is a very hard problem, unless someone with serious name recognition like Linus Torvalds starts to lead that kind of effort, or a big company like Microsoft suddenly decides that putting 1 billion towards GNU/Linux would be in their interest. With small efforts, it will remain scattered.

Crowdfunding has a lot of power if there is name recognition behind the effort. Star Citizen has already gathered $800 million with mostly enthusiasm and a good start. Who is there to lead the effort for GNU/Linux phone development?

Ciantic··on Google will allow only apps from verified developers to be installed on Android
There is also https://sailfishos.org/ and they've got hardware too.

FOSS/Linux has had many attempts at phones, but they need one good leader to do it, which is very hard unless someone with name recognition gets everyone to work on one project.

Ciantic··on Google will allow only apps from verified developers to be installed on Android
I hope something like SailfishOS [1] could take off. They do have Android support, and maybe even by pressure, they could get banking apps working in the EU via that.

[1]: https://sailfishos.org/

Ciantic··on Standard Thermal: Energy Storage 500x Cheaper Than Batteries
Finland has an operational "sand battery", which primary purpose is heating. That was discussed in HN few months ago [1].

When it comes to this article, I doubt the 500x cheaper statement, we would see these already everywhere if that were the case.

[1]: https://news.ycombinator.com/item?id=44295132

Ciantic··on Type-machine
I'm looking at https://roc-lang.org Maybe once it matures, it could have the strengths of TypeScript and Haskell.
← PreviousPage 2 of 15Next →