HN user

quyse

100 karma

https://www.linkedin.com/in/quyse/

https://github.com/quyse

meet.hn/city/35.6768601,139.7638947/Tokyo

Posts2
Comments23
View on HN

I had Windows on a Lenovo laptop, and Windows update installed and/or re-enabled Lenovo system services almost every time (those included things like popups helpfully telling you that you pressed CapsLock and crap like this). I ran debloating scripts, tried fiddling with policies, etc, but Windows Update would inevitably bring those services back.

Another thing is Intel drivers. There's official Intel driver assistant software which installs latest drivers for Intel things (graphics, network, and so on). Only for Windows to re-install their "stable" outdated graphics driver next time it sees it. Again, I couldn't stop it. How hard is it for Windows to see that the driver already installed is newer already? Why even Intel cannot talk to Microsoft and decide between themselves a solution for this?

A reverse contest would probably be more challenging. Write initial instructions for an AI agent to never send funds. If nobody manages to convince it to send funds, say within a week, you win.

For added complexity, the agent must approve transfer if a user is an admin (as determined by callable function isAdmin), so the agent actually has to make a decision, rather then blindly decline all the time.

I mean, how hard it can be to make an AI reliably doing an equivalent of this code?

    if(isAdmin()) approveTransfer(); else declineTransfer();

Currently resolution is hardcoded, but sure, can be done. Also need to figure out things like changing language/keyboard layout or using IME, to be able to type text properly. Sending mouse cursor picture from server to client may be nice too, in case a game uses hardware cursor and changes it's appearance, like some RTS games - currently mouse cursor is just being baked into video frames. Many possible improvements!

Not yet, but I'll probably open source it eventually! Still need to clean things up a lot, and implement missing functionality, for example I haven't even bothered to implement audio capture yet, because I wanted to try video first

I've been working on a cloud gaming service (like Stadia). Wanted to see how far I can get it done using open source, without ready-to-use solutions like Parsec/Moonlight/Sunshine.

It works by running a game in Linux (I use NixOS btw) under Wayland (sway), capturing the frames via Pipewire in form of DMAbufs and passing them to ffmpeg's VA-API encoder (so frames don't leave GPU memory and are encoded on GPU right away), and finally sending encoded packets through WebRTC media stream to a web client. Inputs from a client are sent back to the server via WebRTC data channel and injected into Wayland.

Running the prototype over local network displays zero perceivable latency. (Of course when playing on a remote AWS server the latency is visible as expected). Pleased with the result so far, although it's my first experience with Pipewire, VA-API, and WebRTC, so my implementation is probably far from optimal.

Overall, very impressed by WebRTC - such a powerful thing right in every browser. Continued to be amazed by NixOS - my AWS AMI is NixOS-based and can be built and rebuilt with granular caching, with a single `nix build` command. Also Terraform/OpenTofu - just makes it all possible deploy-wise. So much good stuff exists!

I don't think that's their intention. Elastic wouldn't be able to integrate Amazon's patches back into their codebase without losing the ability to change the license in the future. Even more, since it's AGPL, they'd have to get rid of their other licenses immediately.

I've implemented recently just the same thing, but for SVG -> PNG conversion. I found that SVG rendering support is crap in every conversion tool and library I've tried. Apparently even Chrome has some basic features missing, when doing text on path for example. So far Selenium + headless Firefox performs the best ¯\_(ツ)_/¯

It's not that good usually, e.g. PostgreSQL writes data in pages (8 KB by default), and changing 10K random rows in the 50M rows table can be quite close to the worst case of 1 changed page per changed row, so 8x of your estimate. Also need to multiply x2 to account for WAL writes. Also indexes. It's not hard to hit a throughput limit, especially with HDDs or networked storage. Although local SSDs are crazy fast indeed.

`--config filename` allows this. `--config -` for stdin. Not only urls, but any config options

  echo '--url https://google.com/' | curl --config -

Congrats on launch!

Although my immediate thought was - DRM is just wrong. It will only punish legitimate players and will be cracked quickly anyway. Indie games do not need DRM.

Also I'm generally wary of subscription services. For any sort of "serious" game I would prefer buying, so to not depend on a subscription where the set of available games may change at a whim. However one interesting possibility may be a partnership with a platform like itch.io. They have literally thousands of games, and a lot of them are quite original, but I'm generally not ready to pay for them - as a lot of them are in development/not finished/bad quality/obviously overpriced. Subscription which gives access to all (or most of) the games of itch.io may actually make a lot of sense, encouraging players to try much more games. Just a thought.

Good luck!

What does it actually do?

From the front page I expected maybe some web interface for doing various tasks, such as Nix package management or setting up Let's Encrypt, etc, but judging from the docs, everything should be done via standard Nix/NixOS commands in command line. So, I'm sorry, what service Shipnix actually provides, apart from initial setup of the server with NixOS and SSH keys, that would justify paying monthly? At least it's not clear from the docs.

Does it mean Google, AWS, DigitalOcean, Cloudflare, Akamai, and everybody else (except Hetzner) are now outlawed in Germany? Because, as I said, I cannot ask for consent before serving the initial HTML, unless someone develops a magical IP-less protocol for delivering consent. I'm not sure if even Hetzner server is OK, it's still a third party even if Germany-based.

I've also switched from Arch (has been on it for ~10 years) to NixOS (~1 year so far), and fully agree it's amazing.

I've been thinking how interesting it would be to create a user-friendly Linux distribution on top of standard NixOS (similar to what Manjaro is to Arch), which would not require learning Nix language or tinkering with the configs. I mean, system configuration/choosing packages/drivers/kernels should not really require a user to write in Nix language - the sane choices can mostly be represented by a set of GUI checkboxes. There also could be GUI utilities for other Nix goodness, such as creating nix-shells with necessary dependencies available, declaring wrappers for proprietary software, or building temporary VMs. So, I would say, the user absolutely does not need to know a lot about Nix to fully appreciate robustness of NixOS way, and in principle, with the right tools/GUIs it can be very approachable for even non-technical users - it's just that user friendliness seemingly has not been a priority so far.

Location: Russia

Remote: Yes

Willing to relocate: Yes

Technologies: C++, Haskell, Nix/NixOS, Docker, 3D Graphics (OpenGL/DirectX), Javascript/node.js/React, SQL, clouds/dedicated servers

Linkedin: https://www.linkedin.com/in/quyse/

Github: https://github.com/quyse

Email: hn@quyse.net

I'm hands-on generalist developer with ~10 year experience. Worked in gamedev (graphics/engine/network, industry and indie), co-founded blockchain analytics startup in backend/infra/devops role. Self-learning new stuff as needed, specializing into whatever areas required.

Not afraid of algorithms (participated in competitive programming) and so would love to work on science- or algorithms-packed project. May also be a good fit for wear-many-hats tech co-founding role / early employee of a small startup.

I participate in development of the cross-platform indie video game written in C++ called Insatia [1]. We switched our CI server to building almost all the binaries using Nix. With Nix we have proper Clang with libc++/etc for latest C++ features, cross-compiling Clang (for building Windows binaries from Linux), static linking of any 3rd party libraries (useful for portable builds), Wine-based environment for building Xbox binaries (sounds crazy, but yes, it is faster and more stable in Linux than in Windows VM), and all sorts of hacks and tricks, all laid out in .nix files in a quite comprehensible, self-documented way. Now, given a clean Linux machine with only Nix installed and our game repo checked out, I can run a single nix-build command to build our game for Windows, Linux and Xbox. It will take quite a bit of time (hours) and disk space (tens of Gb), because it builds custom compilers and temporary VMs, but it will be cached in Nix store and only has to be done once.

Before that I used giant Docker image with all sorts of build tools installed/built, plus persistent VMs which had to be maintained manually, and Nix made it so much easier. Nixpkgs provides a good foundation - it has almost all software you may need and all the utilities to modify it or add new software. Need to patch or switch to custom version some obscure dependency of a compiler building another compiler building a library you use? Override a derivation, and all the dependent stuff will be rebuilt automatically. For building software Nix can be seen as a kind of super-Docker - Nix store allows for more granular caching than just layers, so incremental improvements can be done much faster. Essentially Nix turns files and packages into values in a programming language, so instead of hacky bash scripts trying to imperatively maintain a file dump, you just compose immutable packages by writing expressions.

That said, Nix is really hard to understand at first, comparable to Haskell/monad tutorials. I remember I made a few unsuccessful attempts at it over a ~6 month period, every time becoming more desperate, and then it finally clicked after careful reading of Nix pills [2] for a few consecutive days. To me, the most interesting thing to discover was that while Nix/nixpkgs do necessarily use some "hard" concepts like fixed point, it is in fact quite "old-school" and mostly about Unix, executables, linking, string templating, contains a lot of bash scripts, etc, so it's not really another Haskell. In fact, traditional building of C/C++ software with autotools is supported in Nixpkgs better than building modern stuff like Rust or Go, due to reliance of the latter on own package managers.

[1] https://insatia.kozinaka.com/

[2] https://nixos.org/guides/nix-pills/index.html

It seems the catch is the same as with Wasabi. It says everywhere on the site that egress is free and there's no hidden fees. Except for this FAQ entry [1]:

Pricing for Polycloud is only $0.004 per GB per month. There are no other fees as long as you do not egress more than 100% of your data during the month. If you do egress more than 100% of the amount of data you have stored then you will only be charged $0.01 per GB for any overages.

Looks like a hidden fee to me. Note that even the Pricing page [2] does not mention it, and the calculator does not allow to enter egress volume for calculation.

[1] https://crowdstorage.com/faq/#what-is-the-pricing-for-polycl... [2] https://crowdstorage.com/products/polycloud/pricing/

Is it actually required to have employees wake up and replace that specific failed drive to restore full capacity of a tome? I would expect an automatic process - disable and remove failed drive completely from a tome, add SOME free reserve drive at SOME rack in the datacenter to the tome, and start populating it immediately. And originally failed drive can be replaced afterwards without hurry.