Hacker Newsnew | past | comments | ask | show | jobs | submit | gcommer's commentslogin

For feature parity, the old PC will require USB OTG, HDMI input, wiring for ATX control, and a software stack.


Sipeed makes a PCIe KVM card for around $80 that drops into standard PC cases.

I'd assume it runs off the 5v standby power when the primary ATX supply is sleeping. =3

https://github.com/sipeed/NanoKVM?tab=readme-ov-file


This is why I recently went with a PiKVM. Pricier and clunkier but much more open and transparent.


AlphaPhoenix mentions in the description that he wants to try and image an interference pattern, and it seems possible.

Though it wouldn't really be showing you the quantum effect; that's only proven with individual photons at a time. This technique sends a "big" pulse of light relying on some of it being diffusely reflected to the camera at each oscilloscope timestep.

Truly sending individual photons and measuring them is likely impractical as you'd have to wait for a huge time collecting data for each pixel, just hoping the photons happens to bounce directly into the photomultiplier tube.


The article never claims tariffs going into effect caused the Q1 issues.


Agreed. To be more precise: I think the solution is small, community-run servers. This allows large, consistent groups of players to play together regularly with a much higher percentage of admins who can handle cheaters manually.

I also maintain that human judgement, can still catch things anti-cheat software is yet incapable of. Example: it doesn't matter how well hidden your aimbot is, I still notice cheaters when their accuracy is wildly out of proportion with their strategic understanding of the game.


> To be more precise: I think the solution is small, community-run servers.

That was the normal way to do things. Essentially all modern games go out of their way to prevent you from doing this.


Yep, and that's what I stick to today. I just worry how much longer until the remaining games that support this die out...


It also seems similar to mastodon communities. Get too toxic and your server is so isolated you can’t bother people. Get too sensitive, and you block so many servers you can’t interact with anyone. Of course you could just have a server that’s for your little group(intentionally isolated) and that’s fine too.


Even better: never use process.exit(). Set process.exitCode instead.

https://nodejs.org/api/process.html#processexitcode


Or just throw an error.

See also `process.on('exit', ...)`; you can conditionally set process.exitCode in it (only if there was no other failure) if you want.


I know solo projects always have an infinite list of "nice to haves". But personally I never skimp on vendoring dependencies.

In my experience, not vendoring has _always_ led to breakages that are hard to debug and fix.

Meanwhile, vendoring is quite easy nowadays. Every reasonable package manager, and even npm, can do this near-trivially.


the argument is always "the pr that pulls in the dependency is gross to review with dependency updates" -- and there are ways to mitigate that. I vendor dependencies. My customers want stability and that means a bit more process in managing dependencies. Easy win.


Avoiding side effects does not require inventing a brand new purely functional language programming language.


That’s true to an extent. It’s possible to define nix packages in impure languages, but those languages are still compiling down to package definitions (.drv files) that are purely declarative and are executed in an environment that forbids any side effects.

So it’s more a question of whether it’s a nicer experience to wrap up a pure core in some impure outer layer, or just make the whole thing pure.

Nix the language is imo pretty nice for what it does, and lots of other config languages seem to have ended up in similar kind of “json with functions” part of the design space (e.g. dhall, jsonnet). My personal view is that purity in the nix language helps more than it hurts, and that the big design fuckup wasn’t writing a custom DSL, but writing a custom DSL without static types.


Is your issue with the fact the language is functional, or that it's a DSL specific to Nix?


> inventing a brand new purely functional language programming language.

ISTM that if you dislike that, then there's GUIX.

https://guix.gnu.org/

Very briefly, AFAICT, it's "Nix but using Scheme".


or garn (https://garn.io/) which is a typescript interface to nix.


Tinc is incredible, it has worked flawlessly for me for 6+ years with exactly 0 maintenance.

As trustworthy as it is, I am sadly on the hunt to replace it. Compared to wireguard, the throughput ain't great, and it takes way too much CPU on my low power nodes. I would pay good money for "tinc, but with wireguard transport" -- there's of course projects purporting to do this but I haven't found one I trust yet.


There's another dead comment saying the same thing, but take a look at Nebula. I set it up over a year ago and haven't really thought about it much since - it just works. The open source version doesn't have any fancy GUIs or anything but it's not very hard to deploy. Covers every OS that you'd probably care about too.

https://github.com/slackhq/nebula


I haven't contributed to tinc in a while and I haven't contributed a transport mechanism, but I do know it is modular and supports more than TUN/TAP (for example PPP) -- so knowing this and having worked with the code-base in general I would be surprised if adding wireguard as a transport was more than a weekend project to get something working (with the drawbacks I mentioned here [0]).

[0] https://news.ycombinator.com/item?id=19304624


I would donate a few beers and pizzas to such an effort.


To be clear I wasn't volunteering just encouraging anyone who wanted that outcome to just try it, it's probably easier than one might think


Would Tailscale be an effective replacement for Tinc? It's built on top of Wireguard and works really well.


WebVM runs x86 binaries in WASM on any browser w/ ("[CheerpX:] an x86-to-WebAssembly JIT compiler, a virtual block-based file system, and a Linux syscall emulator") and for external sockets there's Tailscale networking. https://webvm.io/

IIUC that means an SSH (and/or MoSH Mobile Shell) client in a WASM WebVM in a browser tab could connect to a (tailscale (wg)) VPN mesh? (And JupyterLite+WebVM could ssh over an in-browser VPN mesh)

You'd probably need to compile a userspace wireguard implementation with a fork of the WebVM Dockerfile, or is that redundant because tailscale already wg's the sockets?: https://github.com/leaningtech/webvm/blob/main/dockerfiles/d...


Tailscale is using userspace Go implementation of wireguard, right?


Yes, with the wireguard implementation being very deeply intertwined with the rest of the VPN implementation, resulting in sometimes higher speeds than in-kernel wireguard implementation.


I recently switched from Tinc to Wireguard (4 machines) due to simpler configuration and better support for road warriors. Transition was quite painless.


When you say 4 machines, do you mean a mesh between 4 machines? And it's not hub-and-spoke? I'm looking for a solution like that but because my portable devices can be anywhere in the world I had to use a hub-and-spoke setup where there is one central VPS that they can all connect through.


You can do a full non-hub mesh with Wireguard if 1) you can find a NAT hole punching method that works (usually can), and 2) you have some means of passing peer information between them, which also means you need to use a means to get at your external IP and port. If you don't have a reliable way of getting the external IP and port for all of them, if one of them supports port forwarding, just a basic dynamic DNS provider to get one of the dynamic external IPs is enough - you can then get the rest by hitting the first one.

Note that "some means" of exchanging data here really is any way of communicating at all. Post an encoded string to a Mastodon server? Send you an e-mail that's automatically picked up?


Also if 3) if you have the energy to write and maintain some stateful thingy that manages this dynamic peer information you need to pass around. And while doable, a hack in bash won't cut it if you want reliability and the occasional introspection when things go wrong.

It's a no for me.


You could try https://nordvpn.com/meshnet/ - it's wireguard, cross platform and meshnet handles everything automatically for you. Also meshnet is free so if you don't want to use vpn you won't have to pay anything.


A hack in whatever language works just fine, and depending on your setup you may not need any hacks at all - e.g. of you have dynamic DNS and port forwarding set up for one of your peers. It's not a beginner option, but it's an option that is simple for most common setups if you know what you're doing.


It's full mesh with 3 fixed servers and one machine with a dynamic IP. Just configured all peerings in WG instead of Tinc. I don't need Tinc's mesh routing, so WG is sufficient for me.


You should give nebula a try. I've recently switched my private VPN setup from wireguard to nebula and am looking into using it for work. It has some really nice features (for our use case), so ymmv. But so far it's been fantastic and very easy to use.

https://github.com/slackhq/nebula


It is a weird example. But that transform does not work generally. Consider if you want to stop when insertIntoMouth() returns a particular value. Or if there is some filter() step, so that you don't know that `n` input items will map to `n` output items.

The difference here is push vs pull (also called eager vs lazy). It is often easier to write pull computations that only do the work that is actually needed.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: