HN user

w0utert

2,697 karma
Posts0
Comments766
View on HN
No posts found.

> The biggest technical hurdle is the inability to run external processes on iOS and iPadOS. > Apps on iOS and iPadOS must use Apple’s Javascript interpreter, JavaScriptCore.

Both of these really suck because they are policy, not technical, decisions.

They are policy decisions that kind of make sense for a device like a tablet or phone though. Even though you could technically allow installing a complete development toolchain on an iPad, I can't imagine what the process would look like in practice. Download and install a complete *nix userland through the app store? Plus a compiler toolchain and each and every tool used in the build phase for your product? Who is going to maintain and distribute all these parts if the whole ecosystem is designed around the idea that apps are sandboxed and distributed through a curated app store? Imagine the customer support burden if you are the maintainer of some app that depends on external tools that can be used in a zillion different build/deploy configurations.

You could of course argue that the iOS ecosystem should not be based around a curated app store and sandboxed applications, but that would make it a MacBook...

Maybe we should put the whole idea of having one device that does everything to rest and accept that there are advantages to have a split between 'real computers' and tablets/phones. That's just my opionion though...

Edit: ah great, an immediate -3 because apparently people here think it is absolutely required to downvote straight away because they disagree with some opinion that is not their own.

Goodbye Hacker News, after ~10 years I'm finally done with the comment sections here and will deactivate my account and ask for it to be deleted

> This is a company that actively fights right to repair and implements software DRM to lock out non-Apple authorised replacements.

But they do all these things for obvious reasons. Reasons you and I may not agree with or be happy about, but still obvious reasons. In the case of repair/replacement it's just because they want you to use expensive replacement parts, they want to lure you into their Apple stores, and they don't want any liability/accountability for repairs with 'unofficial' parts.

I don't see how providing specifications about how their GPU's work so someone can make a Linux driver out of it hurts their commercial interests or liability though. Yes people may screw up their system if they install Linux on a Mac and it doesn't boot anymore, but as long as you can still take it into an Apple store and they can restore it to MacOS, why would Apple actively fight the extremely small minority of people who want to do that? And even if more people (developers/enthusiasts) would buy M1 hardware and immediately slap Linux on it, why would they care about that? They still made the sale, and these people will still walk around with a machine with a big fat Apple logo on it?

They previously spent a lot of effort accomodating people who wanted to run Windows on Macs using Boot Camp, so why would they be worried about people running Linux on M1 macs?

Edit: I can imagine Apple want to protect their IP and hence don't want to disclose anything about out it, period. Much like NVidia and most other GPU manufacturers do. But if AMD and Intel can be OSS-friendly, Apple could be too, apparently IP protection does not have to be a deal-breaker.

It's even worse when they fall off close to shore. Last year a small number of containers (around 5 I think) fell off a ship not far north of the Netherlands, close to a very vulnerable and quite rare ecosystem of small islands and tidal plates that are partially submerged during high tide. It's a home for all kinds sea life, birds, a resting area for migrating birds, etc. Some of these containers apparently had stuff like small plastic beads in them, hundreds of thousands of them, which somehow escaped from the container and washed down on the shore. You can imagine how impossible it is to ever clean this up, and what the risk is to wildlife...

Oh I believe you can ‘stream’ stuff at 2 fps over a 500 kbps line alright, the ‘not serious’ part is how anyone could find that acceptable. Even if all you have is 500 kbps...

If you would use your 2fps streaming browser to read, say, hacker news, every scroll operation would be hideously slow and pull in another ~60KB per second, even though the page data itself is only a few KB and never changes. Your ‘streaming solution’ only makes sense if the total amount of data to fetch for the page itself outweighs the total amount of data for all the frames you need to stream while you are using the page. Which is probably almost never, unless you always look at static single-page applications which continuously pull in data on the backend without presenting anything new at the front end. Highly unlikely.

It's definitely interesting to see how people's workflows can be so different, I get by with at most ~10 tabs, and close things as soon as I'm done with them. At the end of the working day, I prefer to have at most 2 or 3 left. I sincerely start to experience existential anxiety when the number of tabs goes up too much :-P. Probably related to some subconscious feeling that I need to 'do something' with all these tabs and when they increase in number it starts to feel like I'm 'running behind'. Different people, different workflows, that's perfectly fine.

What I don't really see is why this service needs to exist to solve that particular problem (browser gets slow because too many tabs), because IMO that problem has already been solved very well by most decent browsers. They just swap out the inactive tabs and are able to restore them fast enough even on low-end systems, as long as they have an SSD. Inactive tabs that are not swapped out don't take a lot of CPU resources either. This service sells you a cloud browser with 16GB of RAM, which is pretty much the norm for laptops and desktops now, so it's not going to save you much if 'too many tabs' is causing slowness.

Yeah, you can even go back much further in time if you're not too worried about performance. I've been running a fanless Atom J1900 based mini-PC as a home server for ~8 years nonstop now. It's trivial to build such a system but at least back then the cost was literally 10x to 20x the price of a rPI today. I would guess that even though it's an 8-year old CPU it's probably about 2x as fast as an rPI 4B, and for something that's been chugging along for all this time the cost/depreciation over time vs. a much cheaper rPI isn't really an issue for me.

Sure, but why does the Xbox One support it then, but not the PS5? And wouldn't it be possible to somehow incorporate the licensing cost in the console by means of a paid software upgrade (like on Windows) or a 'premium' version of the console that has it by default?

As far as I know Dolby Atmos can be seamlessly mapped onto to 5.1 or 7.1, so from the developer perspective there should be no effort/cost to provide Dolby Atmos audio. I might be wrong about this but I assume the licensing cost would be for the playback device and not for the 'right' to bundle an Atmos audio track with your game?

Like the other comments I'm confused, pretty much any game I've played for the past few years supports surround sound, most of them 7.1 even.

What I don't understand is why Dolby Atmos is not used much more for games. Xbox One and PC support it but only very few titles use it. PS4 and PS5 don't support it all for games (only for video content), despite all Sony's bragging about their dedication to PS5 audio. Dolby Atmos seems perfect for games, for developers because it effortlessly maps audio directly to any 3D position in space, and for users because it scales all the way from headphones to soundbars to full 7.4.2 setups.

I was royally pissed off to learn PS5 would not natively support Dolby Atmos, I have a full 7.4.1 home-theater setup with height speakers and movies and Dolby Atmos demo's sound absolutely awesome. Yet if I play games the best I can get is 7.1 which is nice, but the height speakers go totally unused. It's probably related to licensing costs, but it is extremely disappointing having waited for the PS5 for so long and not seeing any kind of upgrade to the audio.

The main problem would be to have to maintain the myriad of known working configurations, since they are all different depending on motherboard, BIOS, GPU, CPU, etc. If you are careful about picking the right parts (and assembling them properly), it's actually really easy to configure on any recent Linux distro, you can just click together the VM using virt-manager if you don't need anything special.

I know I had to jump through a lot of hoops to make it work though, my X470 motherboard didn't isolate the USB controller without a BIOS update for example, and after that the USB controller exhibited USB FLR (function level reset) problems causing it to hang the VM. This required blacklisting it's PCI ID from the Linux kernel and patching the kernel to disable FLR (fortunately these changes were later merged into the mainline kernel). I also had problems with the second GPU, if I plugged it into any slot other than the bottom x1 slot, the motherboard BIOS would reshuffle the IOMMU groups making it impossible to pass through the NVME and USB controller, or (if I put it in the second x16 slot) it would halve the PCIe bandwidth to the RTX3080.

All in all it took me the better part of a weekend to get everything working, but if I had to do it again from scratch and did some research into (in particular) the motherboard and BIOS, I would be able to set it everything up again in less than an hour.

I do this with QEMU/KVM with passthrough of an RTX 3090, an NVME SSD, and one of the onboard USB controllers. Works like a charm, though the VM boot time is very high if you allocate a lot of RAM to it (there's some kind of bottleneck in the linux kernel when pinning huge amounts of consecutive memory pages while using passthrough, don't fully understand it but it's a known problem).

Performance is indistinguishable from native, e.g. I can easily drive the screen at the max 144 Hz refresh rate, G-sync works, etc. I did put some effort in figuring out how to pin CPU threads to cores, optimize for the CPU core topology so Windows only gets cores on the same CCX (it's an AMD Zen 3, before that it was Zen 2), etc. But all of this is documented in many places.

Do note that depending on your motherboard not all of this is possible if the chipset & BIOS do not provide enough MMIO isolation, you might not be able to isolate a USB controller or a separate NVME drive, or you might get only half the PCIe lanes for the passthrough GPU if you need to use the other full-lane slot for something like a second GPU.

Ah I see, yes that's horrible.

It's kind of weird structured bindings where not captured with [=](){} before, actually. I'm still stuck at C++11 for most of my work so I cannot use structured bindings at all, but I would not have expected to have to write that kind of monstrosity in C++17

Most semiconductor production processes like etching, doping, polish etc are done on the full wafer, not on individual images/fields. So there is nothing to be gained there in terms of production efficiency.

The litho step could in theory be optimized by skipping incomplete fields at the edges, but the reduction in exposure time would be relatively small, especially for smaller designs that fit multiple chips within a single image field. I imagine it would als introduce yield risk because of things like uneven wafer stress & temperature, higher variability in stage move time when stepping edge fields vs center fields, etc.

And VS code with C++ is downright horrid, almost nothing works properly using the official C++ extensions. Yes it autocompletes and it sometimes manages to find the right files when you switch header/source, but that's about it.

I still use it at work though because we don't have CLion there and that code base does not use CMake, but only because it is just slightly better than plain VIM with some plugins. But compared to CLion + CMake it's just one small step beyond a glorified text editor.

Good explanation in the linked article!

This way of using Wayland and VM's seems very interesting and useful. What I'm wondering though, is whether it would be realistically possible to also expose some kind of GPU acceleration to clients in VM's, for example by means of a virtual OpenGL adapter such as VirGL, which itself uses virtio on top of the host GPU driver. This would not get you anything near the performance required for games, but it should be way better than software rendering inside the clients. Do you think something like this would be possible already?

> You still should at least consider a vector here. If lookups are infrequent, you can just sort it and binary search it on demand (and just add new items at the end). There are cases when this is not good enough, but they really are surprisingly rare.

Well most of the time linked lists are used for things that have to be kept in some order that cannot (easily) be determined by a sorting predicate, and/or when re-sorting is not allowed.

> In that case, why not store the elements in a unique_ptr (and then everything in a vector)?

But why? What's the benefit of doing that? The objects will still be scattered around the heap so iterating and dereferencing still trashes the cache, you lose benefits like not invalidating iterators on inserts/removals, and you complicate the code.

I'm not saying linked lists should be your go-to data structure, but IMO the 'linked lists are bad, dont use them' meme is a little overused.

> Although I'm still genuinely interested when a linked list is best suited. I'm also curious why they were invented and why they're taught, maybe just for teaching purposes...

It's not hard to come up with plenty of valid use cases for linked lists. Any time you need some algorithm that does a lot of non-predictable insertions/deletions, on a collection that is not regularly iterated in full or used to find elements (so pointer-chasing/cache effects are irrelevant). And/or when the elements are prohibitively expensive reorder/move on insertions/deletions, or some other piece of code is known to keep direct references to the elements that should not be invalidated when some unrelated element is inserted/removed and. Maintaining validity of iterators while an algorithm is operating on the list is another important benefit.

Some people will come up with all kinds of clever workarounds or more complicated datastructures/bookkeeping so you can achieve the same thing without a linked list, but in most cases I don't see the point of it. Especially not in cases that are not performance-sensitive at all. In such cases you're just increasing code complexity and obfuscating intent because of some ideological objection to using linked lists.

Yes it's not hard to spot the fake code if you take some time, I scored 10/10 on the first try. The GPT-2 code definitely 'looks real' but it doesn't make any sense most of the time, using unitialized variables, computing things but not using them, almost random comments that have no relation to the code, etc. The only snippets where I had to guess where those that just repeated many variations of the same thing as if they were machine-generated from some other input data (which sometimes makes sense to do in a 'real' project).

What I found more worrying is how terrible some of the real code was :D

Not sure why this is downvoted. Almost all (if not all?) consumer motherboards will drop the 2 x16 slots to x8 mode if you insert anything in the second slot. So using a PCIe riser for NVME SSDs means your GPU will get less bandwidth. This may or may not be noticeable, if you are running PCIe 4 the x8 will definitely not bottleneck the GPU, but x8 PICe 3 lanes probably will, especially for cards with less VRAM.

> Valve did build out a lot of features like Remote Play and streaming on Steam, but just to a level of ok functionality.

I think Remote Play works brilliantly? I've finished multiple games using it, streaming from the PC at the other side of the house to the TV with SteamLink in the living room, using an Xbox One S controller. I hardly see a difference compared to sitting directly behind the PC (granted, this is limited to 1080p on the SteamLink hardware, but my eyes are old enough to not care about higher resolution anymore).

Not only that, but also: what's the business model behind Stadia? Like how do they expect to ever make money off of it?

Right now they are still giving away the product for free if you just use 1080p, which the vast majority of their target audience will be perfectly happy with, if you care about 4K and 120hz you probably want to have optimal latency as well and just get a local box anyway. So where do they expect the money to make the service profitable will come from?

I've said the same thing so, so many times from even back when there was OnLive. Streaming games to paying customers is an interesting idea and some people will love it, but I just fail to see the business model. If you can pick up a cheap second hand console for less than 1 year of subscription service, who are the people who are going to keep paying for your service because they 'just want to play a game every now and then'? You have to build and maintain servers all around the world to make the service work, and you expect people who are not really into gaming enough to just buy a $400 console once every ~5 years, who just want to play every now and then, to be willing to spend enough on your service to cover the cost?

It boggles the mind how much money has been going into these kinds of services without any one of them ever seeming to have an obvious and solid long-term business plan...

Lua is popular for games because it’s so small, focused, flexible and very easy to embed, not because the core language is so great. The Lua core language really is as bare bones as it gets but that’s by design, because of its simplicity and good design it is very amenable to extend it to be exactly what it needs to be for your application and nothing else.

I would probably never write a standalone game in pure Lua because that’s not what it is intended for, it’s strength is easy embedding in a host application that does the heavy lifting, low-level stuff and provides the new primitives and functions for the application-specific parts of the code that runs in Lua. Other languages may be better in terms of language feature and tooling but none of these come close to the easy of use for embedded scripting.

That's moving the goalposts. The point was that signing and distributing an app outside of the App Store does not require a paid developer account, not that it would play nice with Gatekeeper. You can still option-click and run the installer even if it is not notarized.

Note that I will concede that it is extremely stupid and greedy of Apple to require a paid account for notarizing apps, particularly free apps, because it is in their best interest if more applications would be notarized, and they are not particularly hurt for cash either. It's inexplicable TBO. But that doesn't mean you cannot install signed but non-notarized apps without a paid developer account.

Reading through the explanation IMO the problem is not that Apple wants to force VPN apps to use frameworks and a distribution model they feel best fits their security/safety model. There are good arguments to be made for that. The problem is that the framework itself is just shitty and Apple should improve it.

This is one of the things I dislike most about Apple: even despite the high price I pay for their products and (subsequently) the astronomical profits they make, somehow they seem to be completely unable to simply address these kinds of problems as soon as they pop up and make everyone happy again. It's also in Apple's own interest to make sure VPN extensions can automatically update in case of potential security problems, no? So why they don't just throw enough resources at it to make it work really is beyond me.

There's a lot to like about Apple products but their culture towards addressing problems that affect their paying customers is becoming increasingly off-putting, especially since they have basically been printing money for over ~10 years now and have no excuses to not improve these kinds of things.

Yes,the article's own headline itself claims 'M1 is not faster than 98% of PC laptops', then goes out to 'prove' this by comparing it to 'high-end gaming laptops and desktop PCs'.

I mean it's a pretty stupid, broad and useless claim a CPU is 'faster than 98% of PC laptops' considering this can be interpreted in so many ways at least one of them could make sense. But the article is even worse because of it, failing to even find a single sensible interpretation of Apple's claim that disproves it (which isn't hard at all, if you interpret '98% of PC laptops' as '98% of PC laptop models')