HNHacker News
TopNewBestAskShowJobs

any1

298 karma · joined April 18, 2015

submissionscomments
any1··on State of multi-player Wayland
As the author of wayvnc, I would say that I'm pretty well aware of what VNC can and cannot do. The RFB protocol (VNC) has improved over time like other protocols.

1. Wrong. There are many extensions that improve upon authentication and encryption.

2. This mostly depends on the implementation, and not necessarily the protocol and/or its extensions.

3. This would require deep integration with the window system on both sides, so I doubt that this is even a thing with RFB on Linux. There certainly aren't any wayland protocols to do this.

4. No one has ever asked me to implement any of that with the exception of audio, but there is also an extension for that.

any1··on State of multi-player Wayland
> This is obviously not a great solution, and VNC in general feels like ancient technology

It's not obvious to me. This looks like software ageism. :)

There are at least 2 things that could be done to improve performance in the author's setup:

  1. Use the --gpu flag which enables dmabuf capture and h264 encoding via vaapi. 
  2. Connect using a dedicated VNC client like TigerVNC. This reduces latency by roughly 50 ms.
For more details on 2. see second paragraph in the following blog post https://andri.yngvason.is/measuring-latencies.html

That being said, noVNC has gained hardware decoding of h264 via WebCodecs since the writing of that blog post, so performance will have improved some. It's unlikely that the 50 ms latency has gone down, but it might be worth measuring again since browsers may opt to render video through a dedicated overlay plane that bypasses regular rendering. However, it would be silly not to synchronise frame presentation between overlays.

any1··on Ask HN: How many of you hold an amateur radio license in your country?
I did a course on antennae and wave propagation as part of my university studies. The professor told us that with just a bit of extra studying we'd be able to qualify for the license, given that we already knew the engineering and physics side of things. I got the license, but never did anything with it.
any1··on BMW Group to deploy humanoid robots in production in Germany for the first time
That reminds me.

I worked for a company where we punched in using an iButton (it's a pretty neat 1-wire thing that fits on a key chain).

The punch clock system was logged and then at the end of the month, they printed out a single A4 sheet for every employee for us to make corrections and sign. Of course, someone had the unenviable job of going over all those and applying the corrections.

We also had to write down hours spent on different projects in a completely different system that wasn't at all integrated with the punch clock system.

At some point in the last couple of years that I worked there, they switched to Workday. That was not an improvement.

any1··on ASML staffing changes could result in a net reduction of around 1700 positions
I worked for a company that went through 2 cycles like this and I can report that it had zero effect on us engineers.

My impression was that people were constantly being promoted into management and at some point we just had too many managers and that's why it was done. Of course, when you know this, the question becomes: why allow things to get to this point in the first place?

any1··on Design Thinking Books (2024)
I was very disappointed when I learned that this wasn't about designing books that think.
any1··on Git Rebase for the Terrified
> Fundamentally, I do not debug off git history.

Are you saying that you've never used git bisect? If that's the case, I think you're missing out.

any1··on We replaced H.264 streaming with JPEG screenshots (and it worked better)
Yes, in fact, the protocol states that the client can queue up multiple requests. The purpose of this is to fill up the gap created by the RTT. It is actually quite elegant in its simplicity.

An extension was introduced for continuous updates that allows the server to push frames without receiving requests, so this isn't universally true for all RFB (VNC) software. This is implemented in TigerVNC and noVNC to name a few.

Of course, continuous updates have the buffer-bloat problem that we're all discussing, so they also implemented fairly complex congestion control on top of the whole thing.

Effectively, they just moved the role of congestion control over to the server from the client while making things slightly more complicated.

any1··on We replaced H.264 streaming with JPEG screenshots (and it worked better)
I have some experience with pushing video frames over TCP.

It appears that the writer has jumped to conclusions at every turn and it's usually the wrong one.

The reason that the simple "poll for jpeg" method works is that polling is actually a very crude congestion control mechanism. The sender only sends the next frame when the receiver has received the last frame and asks for more. The downside of this is that network latency affects the frame rate.

The frame rate issue with the polling method can be solved by sending multiple frame requests at a time, but only as many as will fit within one RTT, so the client needs to know the minimum RTT and the sender's maximum frame rate.

The RFB (VNC) protocol does this, by the way. Well, the thing about rtt_min and frame rate isn't in the spec though.

Now, I will not go though every wrong assumption, but as for this nonsense about P-frames and I-frames: With TCP, you only need one I-frame. The rest can be all P-frames. I don't understand how they came to the conclusion that sending only I-frames over TCP might help with their latency problem. Just turn off B-frames and you should be OK.

The actual problem with the latency was that they had frames piling up in buffers between the sender and the receiver. If you're pushing video frames over TCP, you need feedback. The server needs to know how fast it can send. Otherwise, you get pile-up and a bunch of latency. That's all there is to it.

The simplest, absolutely foolproof way to do this is to use TCP's own congestion control. Spin up a thread that does two things: encodes video frames and sends them out on the socket using a blocking send/write call. Set SO_SNDBUF on that socket to a value that's proportional to your maximum latency tolerance and the rough size of your video frames.

One final bit of advice: use ffmpeg (libavcodec, libavformat, etc). It's much simpler to actually understand what you're doing with that than some convoluted gstreamer pipeline.

any1··on Show HN: Cdecl-dump - represent C declarations visually
> It's the intended way to read/write declarations/expressions. As a consequence, asterisks ends up placed near the identifiers.

You know you don't always have to use things as they were intended?

> The confused ones will think it's a stylistic choice and won't understand any of this.

Well, I've written it both ways, and the compiler never seems to mind. :)

Maybe I should start putting space on both sides of the asterisk; seems like it would be a good way to annoy even more people.

any1··on FreeMDU: Open-source Miele appliance diagnostic tools
The blog post that I linked to answers your question.

I was able to get at the diagnostics menu (also explained in the blog), but I had to interrogate a service tech in order to learn how to trigger it (also mentioned in the blog).

The manual did not contain this information and I could not find it via Google.

Where did you sign up for the "paid service with a free trial"?

any1··on FreeMDU: Open-source Miele appliance diagnostic tools
This reminds me of my own troubles with my AEG washing machine.

Probably, the most important lesson (for someone who wants to fix their washing machine ASAP) that I learned from that was that there are non-userserviceable error codes and you need to perform an undocumented procedure on your machine to get those codes. I wrote about it in more detail here: https://andri.yngvason.is/repairing-the-washing-machine.html

I would have loved to have an open source diagnostics dongle for my AEG. Maybe next time I'll try and make one. :)

any1··on We rewrote the Ghostty GTK application
I've used valgrind proactively as long as I've been programming in C and C++.

The errors that are caught by valgrind (and asan) will very often not cause immediate crashes or any kind of obvious bugs. Instead, they cause intermittent bugs that are very hard to catch otherwise. They may even be security vulnerabilities.

Another good reason for using it proactively is that small memory leaks tend to sneak in over time. They might not cause any issues and most of them aren't accumulative. However, having all those leaks in there makes it much more difficult to find big leaks when they happen because you have to sift through all the insignificant ones before you can fix the one that's causing problems.

any1··on I saved a PNG image to a bird
Drawing into the spectrogram is a fun trick. I would really like to know how much data you can store in that bird using some digital modulation method such as FSK (frequency shift keying).

There could even be multiple carriers in the signal.

It would be even cooler if the bird were to preserve phase. Then you could use PSK!

any1··on PlasticList – Plastic Levels in Foods
I used to work for a company that makes equipment for the food processing industry.

Sometimes conveyor belts would be left running for days or even weeks in the test area. After a while, you would start to see very fine dust on and around the conveyor belts. This was finely ground POM plastic. On some occasions, there were actually heaps of that stuff forming beneath the conveyor belts.

In the factories, everything gets washed down with pressure washers at least once per day, so very little of this stuff goes into the food, but it definitely gets washed away out to sea.

I think that there is probably a wide-spread misunderstanding on how the micro-plastics enter the food. It does not seem very likely that it would come from the packaging or your tupperware (unless your tupperware is so old that it has actually started to disintegrate). It seems much likelier that the plastics were in the food before it was packaged.

any1··on Why are coffee stains darker at the edges?
This is exactly what I've done with my blog. See e.g. https://andri.yngvason.is/repairing-the-washing-machine.html
any1··on My washing machine refreshed my thinking on software estimation
Haha, yeah, you have to hound them on the phone to get them to show up and even then they're not going to show up on time or even at all.
any1··on My washing machine refreshed my thinking on software estimation
For the curious, this is the saga of when I had to fix my washing machine because a repair man used the wrong type of terminals when fixing it previously: https://andri.yngvason.is/repairing-the-washing-machine.html
any1··on My washing machine refreshed my thinking on software estimation
> Personally I would have bought the good drill BTW, it is expensive, but it is one of the most used tool

Yes, a good drill is a must-have for any home-owner. Anecdotally, I've owned a "prosumer grade" power drill ever since I bought my first apartment and I've used it a lot more than I originally anticipated. It's held up remarkably against a lot of use and abuse over a decade. Well, I've replaced the chuck and applied some epoxy to the plastic housing, but it still works. :)

Is it a good drill? I'd say that it's not great, but it's been good enough.

I've also bought some "consumer grade" tools and I would not recommend buying those even if you can buy it for cheaper than it costs to rent a proper tool. Sometimes, you get lucky with those tools, but most of the time, they are not worth the price of the box they come in. Often, the problem is that even though the tool doesn't exactly fall apart in your hands (this has happened to me), the precision of the result is just unworkable and you waste a bunch of time dealing with issues you otherwise wouldn't have.

Buy once, cry once. ;)

any1··on My washing machine refreshed my thinking on software estimation
> I'd happily pay for this work if I had any trust in the results.

This is exactly how I feel.

What's even worse is that when I hire contractors, I invariably have to clean up their mess and fix things myself so that they're up to my standards.

I've had a contractor do a job so poorly that it was more trouble to fix their mess than it would have been for me to do the thing myself from the start.

any1··on Remote shell to a Raspberry Pi at 39,000 ft
The initial handshake goes like this:

First TCP handshake:

  - Client SYN
  - Server SYN ACK
  - Client ACK
Then VNC handshake:

  - Server sends highest version that it supports
  - Client sends back the version that it wants to use
  - Server sends a list of authentication & encryption methods it supports
  - Client chooses from the list and sends its response
If no authentication is used:

  - Server sends a message to the client saying auth went ok
  - Client sends init message
  - Server replies with its own init message
  - Client sends pixel format and supported codecs and requests the first frame
  - Server sends frame
If the client chose authentication, more steps are added in between. E.g. if the client chose TLS this happens:

  - Server sends VEnCrypt version
  - Client sends VEnCrypt version
  - Server acks client's version and sends list of supported security subtypes
  - Client chooses a subtype and sends it
  - Server upgrades the connection to TLS which adds a couple of more round-trips (5 steps total for this item).
If, for example, each step takes 100 ms, you should have a total of 1.2 s without auth and 2.1 s with TLS.
any1··on Desktop Linux is an Untapped Gold Mine
Zealotry/enthusiasm tends to float to the top and is, perhaps, what you see on the surface when you look at any community.

However, I think that most users of open source software prefer it, not because of their political beliefs, but because of their curiosity. Open source software is made by the community for the community; not to entice outsiders or sell to any would-be customers. The main draw of open source software for a curious person is that they can look inside and tinker with it and they can modify it to conform to their needs.

Saying things like "I tried your software and it doesn't work for me" or "I left it and never looked back" (usually phrased in a less polite manner) doesn't really achieve anything constructive. An open source software developer isn't interested in that kind of "feedback". After all, they're not selling anything. They're just making software for their own needs and/or to satisfy their thirst for knowledge and understanding.

If you are not curious about the inner workings of software, then open source is not for you, and that's fine.

any1··on Raspberry Pi Connect
It would need to be tested and properly integrated with x11vnc. As the goal is to move away from X11, it doesn't seem likely that they would invest time into that.

Besides, if you have x11, you can still use RealVNC.

any1··on Raspberry Pi Connect
It's based on wayvnc and noVNC with WebRTC transport instead of Web Sockets. The WebRTC transport layer has not been made public.
any1··on Ask HN: What is the most useless project you have worked on?
I once worked for a multi-national food processing automation company.

We had an internal control system based on RT_PREEMPT Linux and busybox. This system was created before buildroot and yocto became a thing. It was compatible with the company's previous control system, which ran on bare-metal 68k. I was on the team that maintained and developed this Linux based system. This all ran on hardware that was developed and manufactured in-house.

The company had also acquired many smaller companies over the years, all of which came with their own way of doing things. Most used PLC, but not always from the same vendor, some even used elaborate mechanical clockwork.

The Linux based stuff was actually pretty good for gluing all this stuff together.

At some point, a consulting company came in, and shortly after that, the management decided that the company should focus on its "core competencies". So, they hired a guy to find a replacement for all the different control systems within the company: One system to rule them all. It was to replace all the software and the hardware.

We told them, that they should rather focus on creating and documenting common interfaces; replacing everything was very clearly an impossible task. They ignored this advice, entered a contract with a single PLC company and deprecated the system that I was working on along with everything else.

A few years later, they fired that guy they hired and the CTO, but in the meantime, we all kept working on the "deprecated" systems while the replacement was "just around the corner".

Anyway, whether they were going to proceed or not didn't really matter to me. It's all about the journey, not the destination. You can keep learning whether you're doing something useful or not. You can still craft software to the best of your abilities and take pride in the art. In fact, don't think of yourself as a software engineer. Think of yourself as a software artist!

any1··on Grindavik [video]
> At the moment it doesn't look like flight traffic will be affected.

Yes, in fact the opposite. Air traffic controllers in Iceland were planning a strike, and they've now postponed it because of the eruption, they claim.

Source: https://www.mbl.is/frettir/innlent/2023/12/18/aflysa_verkfal...

any1··on Grindavik [video]
It is most definitely closed. The only people in that area now are construction workers who are closing the gap between the two mountains Þorbjörn and Hagafell, in order to protect the power station.

Edit: For context: https://www.mbl.is/frettir/innlent/2023/12/18/i_vidbragdssto...

They're closing the barricade where the road intersects it. The northern intersection seems to be a priority rather than the southern one, like I thought first.

any1··on Ask HN: Is Software Getting Worse?
Yep. https://en.wikipedia.org/wiki/Sturgeon%27s_law
any1··on Use a laptop as a 2nd display on Linux using FreeRDP
10 Mb/s network? Was this 20 years ago?

Admittedly, because of VNC's age, there are many sub-optimal encoding methods available and many different implementations which might not be fully compatible with each other. So, maybe your chosen server has some good encoding methods available and maybe the client can support some good encoding methods, but the intersection of supported encodings might be bad.

Users of VNC often need to understand how to tweak their settings for the best result. The client should choose the "best" encoding automatically, but this cannot be fully relied upon. On a slow network (like yours), it's probably best to select "tight" encoding, allow lossy compression (jpeg) and turn down the quality a bit.

That is to say, if the implementation that you're using doesn't support h264. Currently, there are not many that do.

any1··on Use a laptop as a 2nd display on Linux using FreeRDP
On wayvnc git master and sway 1.8 (or git master), you can script things so that a "virtual" display gets created automatically when someone connects to VNC, and removed when they disconnect.

See https://github.com/any1/wayvnc/pull/200/files

The script in the PR does something a bit different, but it's only an example and can be modified to do what I described in the first paragraph.

Page 1 of 3Next →