frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

We Mourn Our Craft

https://nolanlawson.com/2026/02/07/we-mourn-our-craft/
121•ColinWright•1h ago•91 comments

Speed up responses with fast mode

https://code.claude.com/docs/en/fast-mode
23•surprisetalk•1h ago•25 comments

Hoot: Scheme on WebAssembly

https://www.spritely.institute/hoot/
121•AlexeyBrin•7h ago•24 comments

U.S. Jobs Disappear at Fastest January Pace Since Great Recession

https://www.forbes.com/sites/mikestunson/2026/02/05/us-jobs-disappear-at-fastest-january-pace-sin...
121•alephnerd•2h ago•81 comments

Stories from 25 Years of Software Development

https://susam.net/twenty-five-years-of-computing.html
62•vinhnx•5h ago•7 comments

OpenCiv3: Open-source, cross-platform reimagining of Civilization III

https://openciv3.org/
828•klaussilveira•21h ago•249 comments

Al Lowe on model trains, funny deaths and working with Disney

https://spillhistorie.no/2026/02/06/interview-with-sierra-veteran-al-lowe/
55•thelok•3h ago•7 comments

The AI boom is causing shortages everywhere else

https://www.washingtonpost.com/technology/2026/02/07/ai-spending-economy-shortages/
109•1vuio0pswjnm7•8h ago•139 comments

Brookhaven Lab's RHIC Concludes 25-Year Run with Final Collisions

https://www.hpcwire.com/off-the-wire/brookhaven-labs-rhic-concludes-25-year-run-with-final-collis...
4•gnufx•40m ago•1 comments

The Waymo World Model

https://waymo.com/blog/2026/02/the-waymo-world-model-a-new-frontier-for-autonomous-driving-simula...
1060•xnx•1d ago•611 comments

Reinforcement Learning from Human Feedback

https://rlhfbook.com/
76•onurkanbkrc•6h ago•5 comments

Start all of your commands with a comma (2009)

https://rhodesmill.org/brandon/2009/commands-with-comma/
484•theblazehen•2d ago•175 comments

I Write Games in C (yes, C)

https://jonathanwhiting.com/writing/blog/games_in_c/
9•valyala•2h ago•1 comments

SectorC: A C Compiler in 512 bytes

https://xorvoid.com/sectorc.html
9•valyala•2h ago•0 comments

Vocal Guide – belt sing without killing yourself

https://jesperordrup.github.io/vocal-guide/
210•jesperordrup•12h ago•70 comments

France's homegrown open source online office suite

https://github.com/suitenumerique
559•nar001•6h ago•257 comments

Coding agents have replaced every framework I used

https://blog.alaindichiappari.dev/p/software-engineering-is-back
222•alainrk•6h ago•343 comments

A Fresh Look at IBM 3270 Information Display System

https://www.rs-online.com/designspark/a-fresh-look-at-ibm-3270-information-display-system
37•rbanffy•4d ago•7 comments

Selection Rather Than Prediction

https://voratiq.com/blog/selection-rather-than-prediction/
8•languid-photic•3d ago•1 comments

History and Timeline of the Proco Rat Pedal (2021)

https://web.archive.org/web/20211030011207/https://thejhsshow.com/articles/history-and-timeline-o...
19•brudgers•5d ago•4 comments

72M Points of Interest

https://tech.marksblogg.com/overture-places-pois.html
29•marklit•5d ago•2 comments

Unseen Footage of Atari Battlezone Arcade Cabinet Production

https://arcadeblogger.com/2026/02/02/unseen-footage-of-atari-battlezone-cabinet-production/
114•videotopia•4d ago•31 comments

Where did all the starships go?

https://www.datawrapper.de/blog/science-fiction-decline
76•speckx•4d ago•75 comments

Show HN: I saw this cool navigation reveal, so I made a simple HTML+CSS version

https://github.com/Momciloo/fun-with-clip-path
6•momciloo•2h ago•0 comments

Show HN: Look Ma, No Linux: Shell, App Installer, Vi, Cc on ESP32-S3 / BreezyBox

https://github.com/valdanylchuk/breezydemo
273•isitcontent•22h ago•38 comments

Learning from context is harder than we thought

https://hy.tencent.com/research/100025?langVersion=en
201•limoce•4d ago•111 comments

Show HN: Kappal – CLI to Run Docker Compose YML on Kubernetes for Local Dev

https://github.com/sandys/kappal
22•sandGorgon•2d ago•11 comments

Monty: A minimal, secure Python interpreter written in Rust for use by AI

https://github.com/pydantic/monty
286•dmpetrov•22h ago•153 comments

Making geo joins faster with H3 indexes

https://floedb.ai/blog/how-we-made-geo-joins-400-faster-with-h3-indexes
155•matheusalmeida•2d ago•48 comments

Software factories and the agentic moment

https://factory.strongdm.ai/
71•mellosouls•4h ago•75 comments
Open in hackernews

Sharp Bilinear Filters: Big Clean Pixels for Pixel Art

https://bumbershootsoft.wordpress.com/2025/10/11/sharp-bilinear-filters-big-clean-pixels-for-pixel-art/
42•todsacerdoti•3mo ago

Comments

jan_Inkepa•3mo ago
Huh (having scanned but not read in detail the post), interesting approach. I'm not that well-versed in this area (as a game developer, I tend to jump straight to nearest-neighbour), but hadn't come across this before. I love the pathological example of a checkerboard pattern - very pleasing worst-case scenario, where I suspect it would just be a grey blur. However, the developer doesn't show us the equivalent for the suggested filter - systemically showing side-by-side comparisons of different filters would be useful. I suspect the resulting artefacts would be randomly blurry lines, which could also stand out. But nice to see people thinking about these things...

Here's a related disucssion on what 'pixelated' should mean from the css working group

https://github.com/w3c/csswg-drafts/issues/5837

(every so often browsers break/rename how nearest-neighbouring filtering works. I hope at some point it stabilizes lol - I note in the discussion linked nobody else cares about backwards compatibility ...).

scheeseman486•3mo ago
For as long as emulators supported shaders I've gotten into the habit of configuring them to scale output 4x nearest neighbor and then downscaling that to the display resolution using bilinear, which has roughly the same results; it gets rid of shimmering without blurring everything to a smudge. On any 1080p display with lower resolution content it looks great, but the method starts to fall apart once you try to scale anything higher than 480p.

With a 4K display the pixel density is high enough that virtually everything looks good scaled this way, though once you go higher than SD content you're usually dealing with 720p and 1080p, both of which 2160p divides into evenly anyway.

It's surprising how often I see bad pixel art scaling given how easy it is to fix.

d_tr•3mo ago
Sounds like exactly the same thing since bilinear filtering in the upscaled image only has an effect near the edges of the fat pixels.
CyberDildonics•3mo ago
Downscaling using bilinear interpolation doesn't really make sense, since what you want is a weighted average of pixels to make one new pixel at the lower resolution.

Single bilinear samples can lose information and leave out pixels of the higher res image, it's essentially a worse triangle filter.

TuxSH•3mo ago
> Single bilinear samples can lose information and leave out pixels of the higher res image, it's essentially a worse triangle filter.

Can you do [A B] -> [A 0.5*(A+B) B] 1.5x upscaling with a triangle filter? (I think this is not possible, but I might be wrong).

Also triangle filter samples too many pixels and makes a blurry mess of pixel-art images/sprites/...

Linear downscaling under the assumptions of pixel-center mapping and clamp-to-edge always simplifies into a polyphase filter with position-independent coefficients using at most the current input pixel and the previous one; and integer upscaling obviously is too.

Therefore any form of "sharp bilinear" that does not use bilinear upscaling reduces into such a polyphase filter. [A B] -> [A 0.5*(A+B) B] is equivalent to 2x integer upscale -> 0.75 bilinear scale (= 1.5x of input), and works on GPUs without fragment shaders too.

CyberDildonics•3mo ago
I think you're confusing a few things.

First, upscaling with a filter kernel (weighted average) doesn't make as much sense because you aren't weighting multiple pixels to make a single pixel, you are interpolating, so "upscaling with a triangle filter" isn't something practical.

Second, lots of signal processing things that can be technically applied to pixels on a row by row basis don't work well visually and don't make a lot of sense when trying to get useful results. This is why things like a fourier transform is not the backbone of image processing.

Polyphase filtering doesn't make any sense here, you have access to all the data verbatim, and you want to use it all when you upscale or downsample. There is no compression and no analog signal that needs to be sampled.

Third, any filter kernel is going to use the pixels under it's width/support. Using 'too many pixels' isn't something that makes sense and isn't the problem. How they are weighted when scaling an image down is what makes sense. If you want a sharper filter you can always use one. What I actually said was that linear interpolating samples to downsample an image doesn't make sense and is like using a triangle filter or half of a triangle filter.

This all seems to be work arounds for what people probably actually want if they are trying to get some sharpness, which is something like a bilateral filter, that weights similiar pixels more. This

TuxSH•3mo ago
You are correct in assuming that I'm not as familiar as you seem to be on these topics.

> Polyphase filtering (...) There is no compression and no analog signal that needs to be sampled.

The term "polyphase scaling" is used at least by AMD: https://docs.amd.com/r/en-US/pg325-v-multi-scaler/Polyphase-... , that's why I used the term.

> What I actually said was that linear interpolating samples to downsample an image doesn't make sense and is like using a triangle filter or half of a triangle filter.

In isolation yes it doesn't make sense, but linear downsampling is a mere implementation detail here: "4x nearest neighbor and then downscaling that to the display resolution using bilinear" is an upscaling filter (unless the output resolution is lower) that doesn't discard any pixel of the initial input.

CyberDildonics•3mo ago
The term "polyphase scaling" is used at least by AMD: https://docs.amd.com/r/en-US/pg325-v-multi-scaler/Polyphase-... , that's why I used the term.

This looks likes a custom video scaler and the context is custom filtering when one image is only slightly different in dimensions to another.

How does that apply here?

In isolation yes it doesn't make sense, but linear downsampling is a mere implementation detail here

There is no such thing as "linear downsampling". There are box filters, triangle filters and other weighted averages, then there are more sophisticated weighting schemes that take into account more than just distance.

that doesn't discard any pixel of the initial input.

It creates more data then discards it by sampling too sparsely, but the sparse samples get linear interpolated so you don't notice the aliasing as much. This is not a technically sound way to upscale an image, it only can seem to work if you compare it to a poor enough example.

If you want to see a better example look at bilateral upscaling, which would weight similiar pixels more heavily when doing interpolation, which should keep edges sharper. You can probably see this in motion with the right settings on a recent TV.

scheeseman486•3mo ago
I don't doubt there are ways that are more technically correct or efficient, but given the limited configuration options a lot of emulators offer it works well enough.
ack_complete•3mo ago
While true in the general case, in this case the bilinear downscaling pass is being applied to a signal already previously upsampled using a known specific filter (box filter). Aliasing is therefore more limited and controlled.
CyberDildonics•3mo ago
A filter is a weighted average and a box filter treats all pixels the same. Upscaling with a box filter barely makes sense because it will either end up sampling a single pixel (impulse filter) or blurring the image even more than normal upscaling.

"Bilinear downscaling" also doesn't make sense because scaling an image down means doing a weighted average of the multiple pixels going into a single pixel. Pixels being weighted linearly based on distance would be a triangle filter.

Aliasing is therefore more limited and controlled.

Aliasing doesn't need to happen at all with a reasonable filter width. If someone is interpolating between four pixels, that's a triangle filter with four samples.

TuxSH•3mo ago
> that to the display resolution using bilinear

On that topic, Pillow so-called binilnear isn't actually bilinear interpolation [1][2], same with Magick IIRC (but Magick at least gives you -define filter:blur=<value> to counteract this)

[1] https://pillow.readthedocs.io/en/stable/releasenotes/2.7.0.h...

[2] https://github.com/python-pillow/Pillow/blob/main/src/libIma...

smallerize•3mo ago
Ok but what does that image at the top look like with this new filter applied?
tobr•3mo ago
An easy way to do this that I’ve used when resizing images in photoshop is to first scale it to the closest larger integer scaling factor of the target output using nearest neighbor, and then scale that down to the final result with bilinear or bicubic.