HNHacker News
TopNewBestAskShowJobs

zanecodes

461 karma · joined September 27, 2016

submissionscomments
zanecodes··on Attacking UNIX Systems via CUPS
The prevalence of attitudes like this in the Linux community is why the year of the Linux desktop will never come.

Imagine if your brand new refrigerator, by default, would leak toxic refrigerant into your kitchen unless you adjusted a valve just so. This fact is not called out prominently in the manual, but if you read the fine print in the manufacturer's assembly instructions and have a working knowledge of how a refrigerator operates, you can maybe infer that this valve must be adjusted after purchase to prevent leakage. You go on their support forum to try to figure out why your brand new refrigerator is emitting toxic refrigerant, and you're essentially called an idiot and told you don't have "basic refrigerator hygiene."

People don't want to become refrigerator mechanics. They want cold food.

zanecodes··on Disneyland unions agree to 'historic' 31% pay raise
According to https://data.bls.gov/cgi-bin/cpicalc.pl?cost1=24&year1=20240..., $24 in June 2024 is equivalent to $19.25 in June 2018, so your estimate is right on the money, as it were.
zanecodes··on WildGaussians: 3D Gaussian Splatting in the Wild
From my understanding, traditional photogrammetry typically generates 3d point clouds from image pixels by correlating visual features between images with known camera parameters, allowing the camera pose of each image to be estimated in a shared coordinate space. These point clouds are postprocessed to estimate closed surfaces which can then be converted into textured triangle meshes to be rendered using traditional 3d rasterization techniques.

Gaussian splatting represents a scene a cloud of 3d gaussian ellipsoids, with direction-dependent color components (usually represented using spherical harmonics) to deal with effects like reflections. The "Gaussian" part is important, because gaussian distributions are easy to differentiate, making it possible (and fast) to optimize the positions, sizes, orientations, and colors of a collection of Gaussian splats to minimize the difference between the input photos and the rendered scene. This optimization is usually done by starting with the same 3d point clouds and camera poses estimated using the same or similar tools as traditional photogrammetry (e.g. COLMAP), and using this point cloud to place and color your initial Gaussian splats. One of the key insights in the original Gaussian splatting paper was the use of some heuristics to determine when to split a splat into smaller ones to provide higher detail over a given area, and when to combine splats into larger ones to cover uniform/low detail areas.

The nature of Gaussian splats being essentially fancy point clouds means that they can't currently be easily integrated into existing 3d scene manipulation pipelines, although this is rapidly changing as they gain popularity, and tools to convert them into textured meshes and estimate material properties like albedo, reflectance, and so on do exist.

zanecodes··on Target to stop accepting personal checks as form of payment
Where I live, self-checkouts almost universally have a "Use my own bag" button, that prompts you to place your empty bag on the scale and then tares it after you press the button to continue.
zanecodes··on Pyinfra: Automate Infrastructure Using Python
To this day I'm miffed that Chef has "cookbooks" which contain "recipes," which contain... "resources." Why not "ingredients??" It was right there!
zanecodes··on Apple Vision Pro and ADHD
That sounds like the phenomenon known as display persistence: https://developers.google.com/vr/discover/fundamentals#displ... It's typically avoided by displaying images for a very short period, blanking them between frames and letting the eye and brain fill in the intervening time.
zanecodes··on Open Source Doesn't Require Providing Builds
...which would be fine, if builds were trivially reproducible (a la Nix). Many projects are quite a pain to build, to the point where I and probably many others have given up on trying to contribute to them.
zanecodes··on Psst: Paper-Based Secret Sharing Technique
Cool! In a similar vein, I've wondered if it's possible to design a reasonably secure zero knowledge proof or challenge/response scheme that's simple enough to be performed using only mental math and maybe some simple physical tools like playing cards or dice (ideally no pen and paper). This way you could prove that you know some secret without it ever even leaving your brain. If it can be done without any external tools at all, then you could even use it in public settings without any fear of your secret leaking.
zanecodes··on Meta's new face camera heralds a new age of surveillance
> No VR company has ever catered for those with faulty vision.

For what it's worth, the HTC Vive Flow and XR Elite headsets have adjustable diopter lenses, and the Bigscreen Beyond headset can be bought with first-party made-to-order prescription lenses that attach to magnets built into it.

zanecodes··on Podman Desktop v1.5 with Compose onboarding and enhanced Kubernetes pod data
I've seen this as recently as a few weeks ago on Podman 4.7.1 on a 2019 16" Intel MacBook Pro running Monterey 12.5.1, although I hadn't recreated my Podman machine VM in a few months so it may have been running an outdated image; certainly not a 2 year old one though. In my case it manifested as TLS failures due to an "expired" certificate.
zanecodes··on Podman Desktop v1.5 with Compose onboarding and enhanced Kubernetes pod data
https://github.com/containers/podman/issues/20081

https://github.com/containers/podman/issues/20428

https://github.com/containers/podman/issues/20462

https://github.com/containers/podman/issues/19611

zanecodes··on Podman Desktop v1.5 with Compose onboarding and enhanced Kubernetes pod data
No, they also haven't fixed the machine "failing to start" (but actually starting anyway) and not mounting volumes. I'm switching back to Docker.
zanecodes··on Email and Git = <3
I only have to sign up to Github once, not once per project.
zanecodes··on Docker Is Four Things
> An actual civilized solution would involve a manifest of external resources, a lockfile, and a little library of instructions that the tooling could use to fetch or build those external resources.

Sounds like you're describing Nix.

I actually thought the article would be framed a bit differently when I saw the title: I think Docker and its ecosystem solve several adjacent but not intrinsically intertwined problems:

- Creating repeatable or ideally reproducible runtime environments for applications (via Dockerfiles) - Isolating applications' runtime environments (filesystems, networks, etc) from one another (via the Docker container runtime) - Specifying a common distribution format for applications and their runtime environments (via Docker images) - Providing a runtime to actually run applications in (via the Docker CLI and Docker Desktop)

In this context, a runtime environment consists of the application's dependencies, its configuration files, its temporary and cache files, its persistent state (usually via a volume or bind mount), its exposed ports, and so on.

I would argue that Docker is often used solely for dependency management and application distribution, and for such use cases things like network and filesystem isolation just present obstacles to be worked around, and this is why developers complain about Docker's complexity.

zanecodes··on Tokyo’s trash-collecting samurai takes a fun approach to cleanup
Put a QR code on it, if it scans then you get the deposit? I would've suggested using the existing barcode but since they're 1-dimensional they could be ripped many times and each piece would still scan...
zanecodes··on Moonwalkers: Shoes that make you walk faster (pre-order)
Quite a bit of the Inner Loop in Chicago actually already has heated sidewalks, if the "Mechanically Heated" plaques on them are to be believed.
zanecodes··on Moonwalkers: Shoes that make you walk faster (pre-order)
From personal experience, Chicago is kind of both the best case and the worst case for rollerblading: it's very flat and has nice wide sidewalks, but the sidewalks and even the streets are pretty rough and require large wheels for a smooth ride.

Having a good amount of reasonably well maintained dedicated bike lanes would have made rollerblading to work a lot easier!

zanecodes··on For Want of a JOIN
Don't sanitize your inputs; parameterize your queries instead.
zanecodes··on Beyond Repair – The potential downsides of right-to-repair laws
What incentive does the seller have to be honest? They could easily claim something is "repairable," and then when someone calls them out for using pentalobe screws, glued glass displays, and soldered-in storage and memory, reply "That's repairable, you just need a pentalobe screwdriver set, a heat gun, spudgers, a high quality soldering iron and flux, and a reflow soldering station."

I'd just like to be able to see (before I buy) objective numbers for things like SSD write lifetime, display burn-in rate, and battery capacity degradation next to information about what kind of tools I would need to replace them myself, and maybe how much it costs to have the manufacturer replace them, if they offer that service. That way I can decide that maybe I'm okay with a soldered battery, since it will probably last 10 years with my usage patterns and the manufacturer will replace it for $60.

I'm somewhat sympathetic to the idea that companies shouldn't be _forced_ to make their products repairable at the expense of other design considerations, but they should certainly be forced to be upfront about it if they don't.

zanecodes··on Beyond Repair – The potential downsides of right-to-repair laws
How do you know how repairable something is at the time of buy?

It would be nice if companies were required to provide information about their products' wear parts, their expected lifetime, whether they're replaceable and what tools are necessary to do so, etc.

zanecodes··on Ask HN: What's your proudest hack?
Anyone who was in college in the US between 2013-2016 will probably have at least heard of the app Yik Yak (https://en.wikipedia.org/wiki/Yik_Yak).

For those who weren't or haven't, it was a geofenced, anonymous message board app targeted to college students that became fairly popular over the first two years of its existence before gradually fading into obscurity and finally being shut down in 2017 (but as of 2021 was rebooted with pseudonymous accounts, IIRC). Users could see any messages within a certain radius (0.5 miles or so, I think) and messages could be upvoted and downvoted, and were sorted by their vote score. Messages with a score of -5 disappeared forever, and I think also eventually aged out.

Being a chaotic sophomore with some Android experience, I decided it would be fun to decompile the app and see how it worked. I discovered that each device was assigned an ID based on a timestamp, IMEI, and a few other pieces of information that could be easily spoofed, by calling a fixed HTTP endpoint to generate as many new IDs as I liked.

I generated ~500 or so IDs using some Java code, hardcoded them into a .class file, and added some hooks to intercept existing calls to set up the Android UI and add my own event listeners. From there I added a button to the app's menu bar with a radiation hazard icon that would use the generated IDs to nuke every message in range of the user, downvoting them all to -5 and causing them all to disappear instantly. I also added the ability to long-press the upvote and downvote buttons, which would bring up a dialog with a slider allowing the user to upvote or downvote any post up to 500 times, sending it to the top of the list (or downvoting it to oblivion). Finally, I rebuilt the app with my added .class file patch.

Needless to say, this was a source of great fun and mischief for my friends and I. The most entertaining event was attending a hackathon at our (much larger) rival university's campus, where we nuked every local post a few times a day for 72 hours and voted our own posts up 500 times.

It was fun to mess with for a few months or so. We never distributed the patched app, for obvious reasons, and we never used it for anything truly malicious beyond being a mild local nuisance denial-of-service.

zanecodes··on Unlaunching the 12GB 4080
It's a car seat, not a desk chair.
zanecodes··on Futurist prediction methods and accuracy
As I've heard it said: sigmoid functions look a lot like exponential functions, right up until they don't...
zanecodes··on Cloudflare's abuse policies and approach
Net neutrality was never about deplatforming, due process, or censorship. It was about ISPs prioritizing traffic or providing free bandwidth for their own services and throttling or charging extra fees for third party services (e.g. Time Warner providing access to their own streaming service without counting towards your bandwidth cap, but not doing the same for Netflix).

It was an economic issue, not a political one.

zanecodes··on Show HN: New BucketRateLimiter Python package to rate limit requests to APIs
How common is it for HTTP client libraries to respect HTTP 429 Too Many Requests and the Retry-After header? And how many APIs actually implement it?
zanecodes··on Never mind outrunning a T. rex – you could probably outwalk it
If you click through that sentence to the linked article [1], you'll discover that it's a pretty misleading one. The 2.5 billion estimate is the total estimated number of adult Tyrannosaurs that lived during a 2.5 million year period (68-65.5 million years ago).

The estimated maximum population of living adult Tyrannosaurs at any one time, on the other hand, is ~20,000, with a 95% confidence interval from 1,300 to 328,000, according to that article.

[1] https://www.livescience.com/number-of-tyrannosaurus-rex-on-e...

zanecodes··on A/B testing gets misused to juice metrics in the short term
In the same way that we try to use semantic versioning to prevent unintended breakages in dependents of our public-facing APIs, I think we developers should start considering the UI/UX of our apps to be their public-facing API, and use the philosophy of semantic versioning accordingly.

When we rename or remove a function from an API, that's a breaking change, any dependent software will no longer work unless it's modified to take that change into account.

Similarly, when we move, rename, or remove a UI element, keyboard shortcut, or visual affordance, that should be considered a "breaking change" for our dependents, the humans on the other side of the screen. And in the same way, we should avoid making such changes unless the long-term benefit of doing so outweighs the short-term cost. Plus, users will know that moving from 7.x.x of your software to 8.x.x will require them to relearn some aspect of it.

zanecodes··on James Webb first images – complete set of high resolution shots now live
(Disclaimer: I am not an astronomer)

As you may be aware, all digital images are composed of a color palette applied to monochrome images, it just so happens that we usually pick a color palette of red, green, and blue, which ideally correspond as closely as possible to the three wavelengths of light to which the imaging sensors in our cameras (and also our eyes) are sensitive, thus reproducing what our eyes would see in person.

In the case of JWST, mid- and far-infrared sensors were chosen for several reasons, the first being that due to the accelerating expansion of the universe, light from further away (equivalently, light from further back in time) has been stretched out along its path of travel, causing its wavelength to be shifted further into the infrared spectrum. Another possible reason is that infrared wavelengths penetrate the interstellar dust clouds much better than visible or ultraviolet light, allowing us to see stars and galaxies that were previously hidden by dust.

Since JWST captures wavelengths of light that we can't see, we have to apply some sort of visible-light palette to the monochrome images it sends back. At the bottom of this image, you can see which wavelengths were mapped to which visible-light colors: https://stsci-opo.org/STScI-01G7N9A6934R1WRWBJY1ZXB98B.png One key aspect of this mapping is that the order of wavelengths has been preserved; shorter IR wavelengths are colored blue while longer ones are colored red. It's likely that this mapping is non-linear though, so the relative distances between IR wavelengths are not the same as the distances between the hues in the image, and this mapping was chosen to maximize the visible detail in the resulting image, as well as to highlight scientifically relevant information such as dust clouds and areas of star formation, so it's not totally arbitrary.

In addition, the dynamic range of JWST is much much larger than the pixels in any display. The raw data values probably range from 0 to some hundreds of thousands, while your display's pixel brightness can only go from 0 to 255 (or maybe 1023, if you have a 10-bit HDR display). While we could simply map the maximum pixel value to 255 and compress everything else in between, this would lose nearly all of the detail present in the darker regions of the images, compressing them to 0. Instead, a non-linear brightness mapping is applied, to best represent all the information present in darker regions without blowing out the bright stars and galaxies.

So to answer your questions, the colors shown in the images are not what you would see in person. Without any enhancements you probably wouldn't be able to see much if any of the dust clouds, and many of the redder galaxies would not be visible to you at all, while all the rest would be different hues than the ones shown (probably mostly whites, yellows, and reds).

zanecodes··on Down the mechanical keyboard rabbit hole
https://www.kickstarter.com/projects/moergo/glove80-the-incr...
zanecodes··on Barrier: Share mouse and keyboard between computers
More or less, but in my case I would only have to run the barrier server on my personal desktop, and won't have to install any software on the client I wish to control (in this case, my work laptop). I'd like to piggyback off of the existing Barrier code, since I already use Barrier to control my personal Surface Pro, which also sits on my desk.

I really wish my 49" Samsung Odyssey G9 supported DDC over DisplayPort, so I could also switch my monitor input via software, and essentially have a KVM without buying any additional hardware.

A major consideration for me is avoiding introducing any extra input latency between my input/output devices and my personal desktop, since I use it for gaming. I'm okay with trading off additional latency when controlling my work laptop in exchange for lower latency on my main desktop. That said, I may end up using my BeagleBone rather than my Photon, since it has an ethernet port, and running Linux may prove advantageous.

← PreviousPage 3 of 5Next →