frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

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

https://openciv3.org/
506•klaussilveira•8h ago•141 comments

The Waymo World Model

https://waymo.com/blog/2026/02/the-waymo-world-model-a-new-frontier-for-autonomous-driving-simula...
845•xnx•14h ago•506 comments

How we made geo joins 400× faster with H3 indexes

https://floedb.ai/blog/how-we-made-geo-joins-400-faster-with-h3-indexes
59•matheusalmeida•1d ago•12 comments

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

https://github.com/valdanylchuk/breezydemo
166•isitcontent•8h ago•19 comments

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

https://github.com/pydantic/monty
168•dmpetrov•9h ago•76 comments

Show HN: I spent 4 years building a UI design tool with only the features I use

https://vecti.com
282•vecti•11h ago•127 comments

Dark Alley Mathematics

https://blog.szczepan.org/blog/three-points/
61•quibono•4d ago•10 comments

Microsoft open-sources LiteBox, a security-focused library OS

https://github.com/microsoft/litebox
340•aktau•15h ago•164 comments

Show HN: If you lose your memory, how to regain access to your computer?

https://eljojo.github.io/rememory/
226•eljojo•11h ago•142 comments

Sheldon Brown's Bicycle Technical Info

https://www.sheldonbrown.com/
332•ostacke•14h ago•90 comments

Hackers (1995) Animated Experience

https://hackers-1995.vercel.app/
422•todsacerdoti•16h ago•221 comments

An Update on Heroku

https://www.heroku.com/blog/an-update-on-heroku/
364•lstoll•15h ago•252 comments

PC Floppy Copy Protection: Vault Prolok

https://martypc.blogspot.com/2024/09/pc-floppy-copy-protection-vault-prolok.html
34•kmm•4d ago•2 comments

Show HN: ARM64 Android Dev Kit

https://github.com/denuoweb/ARM64-ADK
12•denuoweb•1d ago•0 comments

Delimited Continuations vs. Lwt for Threads

https://mirageos.org/blog/delimcc-vs-lwt
10•romes•4d ago•1 comments

Why I Joined OpenAI

https://www.brendangregg.com/blog/2026-02-07/why-i-joined-openai.html
81•SerCe•4h ago•65 comments

Show HN: R3forth, a ColorForth-inspired language with a tiny VM

https://github.com/phreda4/r3
59•phreda4•8h ago•9 comments

How to effectively write quality code with AI

https://heidenstedt.org/posts/2026/how-to-effectively-write-quality-code-with-ai/
212•i5heu•11h ago•158 comments

Female Asian Elephant Calf Born at the Smithsonian National Zoo

https://www.si.edu/newsdesk/releases/female-asian-elephant-calf-born-smithsonians-national-zoo-an...
16•gmays•3h ago•2 comments

Unseen Footage of Atari Battlezone Arcade Cabinet Production

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

I spent 5 years in DevOps – Solutions engineering gave me what I was missing

https://infisical.com/blog/devops-to-solutions-engineering
123•vmatsiiako•13h ago•51 comments

Learning from context is harder than we thought

https://hy.tencent.com/research/100025?langVersion=en
160•limoce•3d ago•80 comments

Introducing the Developer Knowledge API and MCP Server

https://developers.googleblog.com/introducing-the-developer-knowledge-api-and-mcp-server/
33•gfortaine•6h ago•9 comments

Understanding Neural Network, Visually

https://visualrambling.space/neural-network/
258•surprisetalk•3d ago•34 comments

I now assume that all ads on Apple news are scams

https://kirkville.com/i-now-assume-that-all-ads-on-apple-news-are-scams/
1021•cdrnsf•18h ago•425 comments

FORTH? Really!?

https://rescrv.net/w/2026/02/06/associative
53•rescrv•16h ago•17 comments

Evaluating and mitigating the growing risk of LLM-discovered 0-days

https://red.anthropic.com/2026/zero-days/
44•lebovic•1d ago•13 comments

I'm going to cure my girlfriend's brain tumor

https://andrewjrod.substack.com/p/im-going-to-cure-my-girlfriends-brain
98•ray__•5h ago•47 comments

Show HN: Smooth CLI – Token-efficient browser for AI agents

https://docs.smooth.sh/cli/overview
81•antves•1d ago•59 comments

How virtual textures work

https://www.shlom.dev/articles/how-virtual-textures-really-work/
36•betamark•16h ago•29 comments
Open in hackernews

Show HN: A pure WebGL image editor with filters, crop and perspective correction

https://github.com/xdadda/mini-photo-editor
243•axelMI•9mo ago
I'm working on a pure js webgl image editor with effects, filters, crop & perspective correction, etc. My goal is to give the community an opensource solution as unfortunately most comparable apps are closed sources.

https://mini2-photo-editor.netlify.app to try it out (https://github.com/xdadda/mini-photo-editor)

Comments

stared•9mo ago
Thank you for sharing!

What's the license?

axelMI•9mo ago
MIT. thanks for point that out, I did forget to add it
atonse•9mo ago
Very cool! What's the license, and how does it compare to some of the other croppers/editors out there? Was it mainly the GL integration?
axelMI•9mo ago
Ops forgot to add MIT license As for the underlying modules on which it relies Will fix it shortly
asadm•9mo ago
in the editor, do add a way to load sample random image to try out the editor instead of having to uploading my own (which most won't bother / don't trust / can't do at work).
axelMI•9mo ago
Great advise. Will add it next.

Bust just to be clear, images are handled 100% locally on the user machine. No data is sent to servers, no adv, no cookies, nothing ...

asadm•9mo ago
Yup I get that.
sam1r•9mo ago
wow, awesome turnaround dev time, i see the feature req has shipped already. \^-^/
axelMI•9mo ago
sample images added. thanks for the tip
quantadev•9mo ago
I tried to figure out how to crop an image and found nothing. There doesn't seem to be a crop feature as far as I could tell. I'm sure it's probably there, but not easy for anyone to figure out. Would be super easy to make it intuitive right?
axelMI•9mo ago
it's the composition menu ... will rename it

just select the area you wish to crop and then move to the other settings (colors, ...) to edit it

atonse•9mo ago
I did this but when I hit download, I got back the original image instead of the cropped image.
quantadev•9mo ago
I tried it again, and finally noticed you have to click the corner of the image to move the selection area. It works, but then I didn't see a "Crop" button. Only trying to be helpful, and not complaining. Nice work tho on this component.
axelMI•9mo ago
No no I absolutely need this kind of feedback thanks! Being a solo developer is very difficult to gage usability and UX is definitely not my strength.

I tried to integrate the crop/ composition in the natural workflow of image processing, without a discreet "crop" button. But I guess it's not necessarily the most intuite thing to do :)

quantadev•9mo ago
I'm the new member of your QA team now! haha. I'll try to crop again when you're ready. :)
gtb_1•9mo ago
Did you consider using WebGPU, or creating a bridge between WebGPU / WebGL for this? Also, have you considered deploying on Cloudflare Pages [1] (unlimited bandwidth) instead of netlify?

[1] - https://pages.cloudflare.com/

axelMI•9mo ago
I did consider WebGPU but I couldn't find many advantages for the current use case.

Yes I'm planning to move to the edge as soon as it's in a later stage of development

zorgmonkey•9mo ago
The biggest difference for you is probably that WebGPU has compute shaders and WebGL does not, they are pretty nice if you want to implement more complex algorithms.
axelMI•9mo ago
That's true. But current shaders are very simple. The big issue I have with WebGPU is that it's still not supported by all browser (see Safari) while WebGL is nowadays everywhere.

I work on a MacBook and I need to make sure that at least Safari (soooo many issues/ bugs/ specific behaviours it drives my crazy) works fine

zorgmonkey•9mo ago
I don't have a mac, but my understanding is that Safari Technology Preview [0] has WebGPU support (might need a change a setting too).

[0]: https://developer.apple.com/safari/technology-preview/

titaphraz•9mo ago
Apparently it isn't unlimited: https://news.ycombinator.com/item?id=42713451
sam1r•9mo ago
oh wow, i had no idea. thanks!
amadeuspagel•9mo ago
Nice. I tried it with an image from Unsplash. Maybe you can use the Unsplash API[1] to give people an example to play with.

[1]: https://unsplash.com/developers

axelMI•9mo ago
Will have a look at this thanks! in the meantime I've added a quick sample gallery to test the editor out
fidotron•9mo ago
This is neat. Any plans to add blurs and related effects?
axelMI•9mo ago
yes, I don't use them but if required it will be easy to add
flashblaze•9mo ago
I'm so glad this exsist. I've been meaning to get something similar started, but did not due to one reason or the other. I'll definitely try to contribute.
axelMI•9mo ago
Whenever you feel like, ping me on github
cmenge•9mo ago
Lol, I added a todo yesterday: "find or build good image cropper, ideally gl based" ;)

Guess the search might be over, thanks!

axelMI•9mo ago
let me know of any usability issue. I tried different combinations and this seemed intuitive for me (compared to other solution), but of course I'm too biased.
rendaw•9mo ago
What does comparable refer to here? Web based image editors? Like what?
axelMI•9mo ago
there are several web based image editors leveraging webgl out there.

Some of them are very good such as https://img.ly/products/photo-sdk or https://www.polarr.com/web/ or https://pqina.nl/pintura/

I hope to match some of them in terms of features, but with a lightweight and opensource solution

rikschennink•9mo ago
Hey! Thanks for mentioning Pintura :) And good luck with the project!
neosat•9mo ago
Nice! Good performance, clean UI, and core functionality.
axelMI•9mo ago
thanks. It started as a proof of concept for a custom reactivity engine (based on signals and tagged template literals). But while at it I realised I needed something quick and easy for my needs.

I already have a prototype for a self-hosted photogallery that integrates this editor (something like https://immich.app to give you an idea). But it's still too early to share

maxcomperatore•9mo ago
good AF
axelMI•9mo ago
thanks!
ww520•9mo ago
Excellent work. The UI looks very clean and functional. It's feature packed. Good choice on using WebGL. It has support everywhere in most if not all browsers.
rorylaitila•9mo ago
I've been looking for an open source image editor that I can embed in my app for managing my vintage ad archives (https://adretro.com). Basically I just need to rotate, crop, adjust color. But the images come from from the archive database rather than upload. And I want to work with them quickly, rather than save/open like a desktop app. Last time I looked I couldn't find something with good documentation that was easy to get started with. Right now I bulk edit in Google Photos.
neurostimulant•9mo ago
CropperJS is very simple and easy to use: https://fengyuanchen.github.io/cropperjs/

There is also React-Cropper if you want to CropperJS with React: https://github.com/react-cropper/react-cropper

rorylaitila•9mo ago
Thanks I'll check it out again. Last I looked I think it was v1 branch.
rebelnz•9mo ago
Really nice work. I had been using Photopea for cropping and quick edits when preparing references for painting but this is super clean and simple.
Dwedit•9mo ago
Is there any interference from "anti-fingerprinting" which corrupts the image canvas?
axelMI•9mo ago
ehm, what? I'm not familiar with this issue
Dwedit•9mo ago
https://support.mozilla.org/en-US/kb/firefox-protection-agai...

"Random data is introduced to background images when the image is read back by the website. If a website merely renders data to the background, it will render without alteration. Although typically this does not happen, if the website reads the image data in the background (and potentially displays it to you again), it will have subtle noise that may affect how the image is displayed."

axelMI•9mo ago
Ok interesting. I'll investigate thanks
kreelman•9mo ago
This does useful things easily. How hard would it be to use it as a batch process?
axelMI•9mo ago
Batch processing would ideally require a backend.

Batch processing in the browser would be limited by memory space and therefore everything would have to be queued (even if on more webworkers) and very slow/ unreliable IMHO.

What I'll implement next, if there's a request, is the possibility to save the recipes of the adjustments (crop/ perspective excluded) in order to quickly apply them to subsequent images

popalchemist•9mo ago
Hey, awesome work! This is sorely needed in the OSS package space.

Are you taking into account separation of concerns? I could see myself adopting this if the UI were customizable in Vue, React, etc.

axelMI•9mo ago
The actual webgl engine is packaged as a separate library https://github.com/xdadda/mini-gl

As for the more complex UI modules (ie crop) in theory it shouldn't be too difficult to build a vanilla-js separate module, but not sure I'll have the time as these kind of solutions need to take into account so many use-cases and edge-cases that they easily become a nightmare to maintain ...

PaulDavisThe1st•9mo ago
Extremely nice work.

I'd like it if there were separate buttons for (a) reset a section (e.g. colors) back to the default and (b) do not use a section (e.g. colors). Right now, turning (e.g.) colors off loses the settings there. Maybe I missed something though.

sgc•9mo ago
I too agree this is great, and see space for another low-hanging UI tweak:

Allow editing numbers to right directly, instead of only using the slider. I really dislike using sliders beyond a first general impression because it is too slow to get things exactly as I want them. I would guess this is a relatively common sentiment.

One feature I don't see but would love to see is text overlay, but that is perhaps moving away from the spirit of the project.

PaulDavisThe1st•9mo ago
I don't do web based development (all native desktop), but I'd be quite surprised if this was "low hanging".

We have widgets that do this in Ardour and they were far from simple to implement.

sgc•9mo ago
I have done similar. It is pretty easy, you just have the slider update the input, that is used for the actual calculations. If I ever get past looking and actually download, I will do it.
axelMI•9mo ago
Actually it's very easy to implement in a webapp. I will just need to think if there's a sleeker way to do it in terms of UI than just adding a simple input box ... although generally simpler is better so
axelMI•9mo ago
Editing number yes, will do next as I agree it's high priority from a usability pov.
axelMI•9mo ago
numbers input added
sgc•9mo ago
Thank you!
axelMI•9mo ago
thanks Just to better understand your request.

a) the Ø at the right of a section resets the section's settings back to default zeros (it becomes white when available) b) closing a section doesn't lose it's settings, unless of course it has been reset

As for a button that allows to "temporarily" disable a section (but keeping it's modified settings underneath), yes it's a very good idea

PaulDavisThe1st•9mo ago
Yes, that was my suggestion, correctly understood.
axelMI•9mo ago
added thanks for the suggestion
esperent•9mo ago
Nice work.

Couple of issues I had: on mobile (Brave on Android) the touch controls for cropping are very janky. Feels like it steals control each time the picture updates maybe?

It's hard to see the controls under the picture on this small screen. Could you add a control to adjust the size of the controls and shrink the picture maybe?

GlassOwAter•9mo ago
I’m getting some touch control issues and inability to download the image on iOS.
axelMI•9mo ago
Sorry, this at the moment is desktop only. Maybe in the future I'll work on a separate PWA, but UI would need a complete re-design
woranl•9mo ago
It would be nice if I can feed an image blob to it, and return the edited image as a blob programmatically - i.e. without the need for an UI to open or download the image. That will help integration/embed it into other apps.
axelMI•9mo ago
maybe using the underlying webgl library could help your usecase? https://github.com/xdadda/mini-gl

The constructor requires - a canvas (which can be an OffscreenCanvas) - an arrayBuffer with the image (which you easily get from a blob with "await blob.arrayBuffer();" )

GlassOwAter•9mo ago
I like this. It reminds me of Snapseed. Feature request if it isn’t too hard, the ability to overlay an image and blend them together.
axelMI•9mo ago
Easy, will add to the TODOs
shunia_huang•9mo ago
Would be very nice if it is provided as a library to be able to integrated into another app with partial/full customizations for UI with different theme and stack.
talldan•9mo ago
The README mentions it uses this library - https://github.com/xdadda/mini-gl.
axelMI•9mo ago
As mentioned in another comment, this is just a UI for https://github.com/xdadda/mini-gl
virtualritz•9mo ago
Does this do operations involving multiplications in linear color space?

It seems to use mini-gl[0] for the filtering. I had a brief look at the mini-gl source and it seems to use color as-is?

If that were true, for 99% of content that people would upload -- stuff in non-linear sRGB --, the filters would do the wrong thing.

Or am I missing something?

[0] https://github.com/xdadda/mini-gl

axelMI•9mo ago
You are right thanks for the heads up!! It currently works in linear color space. I wasn't familiar with the issue.

I need to figure out if it's enough in Webgl to add gl.SRGB8_ALPHA8 when loading/ copying textures or I should gamma correct in all the color handling shaders. Will do some testing to figure it out.

virtualritz•9mo ago
AFAIK gl.SRGB8_ALPHA8 will only make sure the filtering of the lookup happens in linear sRGB (because filtering involves multiplications).

But values returned from the texture lookup must also be linear for any calculations afterwards to make sense.

AFAIK you'd need to set internal format to SRGB8_ALPHA8 and the format to RGBA. Then the returned color is also linear.

However, according to [1], this combination is only allowed if the result type is requested UNSIGNED_BYTE, i.e. as 8bit/channel. That would mean you will get banding on gradients because 8bit/channel is not nearly enough to represent linear color.

I.e. the type should be at least HALF_FLOAT or FLOAT but the table suggest WebGL 2.0 does not support this. I'm not a realtime graphics person, so I may be missing something. And obviously, there must be some workaround for WebGL.

Furthermore, the final linear->non linear sRGB conversion must be done, too. I.e. before displaying the result. AFAIK the sRGB framebuffer GL extension can take care of this. But again, not sure.

The whole topic of color spaces (vs color models, i.e. RGB is a color model, not a color space) and gamma is not trivial.

Almost everyone starting out with any kind of computer graphics involving display/manipulation of colors gets this wrong first time because they do not know about this/assume this is trivial.

Don't be discouraged. A good read is [2]. While it specifically addresses color pipelines in VFX/film, all in there applies equally to a simple non-linear sRGB image (a typical JPG, e.g.) being manipulated and then displayed or saved out as 8bit/channel again.

[1] https://registry.khronos.org/webgl/specs/latest/2.0/#TEXTURE...

[2] https://www.imageworks.com/sites/default/files/2023-10/Cinem...

axelMI•9mo ago
a whole new rabbit hole to get sucked into !! ahahah
axelMI•9mo ago
I don't know if I have to thank you or just hate you! Spent best part of the day figuring out the whole srgb-linear thing.

Well the workflow should now be srgb correct! Had to fix some of the shaders and they now work, except for the vignette one that unexpectedly sucks in linear space but will replace it with another one soon.

Turns out adding gl.SRGB8_ALPHA8 for loading textures (excluding LUTs) and closing the pipeline with a linear-to-sRGB transform did the trick. Plus making sure the filters where working in the correct space.

No significant banding issues with 8bit depth images (except for the above-mentioned vignette filter). I did test with various gradients and sample images where I compared pixel by pixel. Apparently it holds quite well. Of course the 8bit limitation sucks and I'll keep looking for workarounds.

If you have the possibility to stress test it a little bit I would be forever grateful.

By the way, I'll add image blending soon which should help spotting colorspace errors.

abirch•9mo ago
This is awesome!!! One small UX ask would be to manually edit the values instead of using the sliders. Since this is Open Source (thank you) I may try to tweak that this weekend.
axelMI•9mo ago
done!
munksbeer•9mo ago
This looks great, well done. However, I find one of the main tools I'm always looking for is the ability to resize an image. I want to retain the exact dimensions, just shrink the number of pixels. I can't spot that, is it there? Or would you consider adding it?
axelMI•9mo ago
I must admit this baffles me a little. Width and heights are measured in pixels. The number of pixels of an image is width x height (eg a raw image 256x256 means it has 256*256 = 65.536 pixels = 262.144 bytes - if RGBA8). I cannot reduce its pixels and keep the same width and height or viceversa. I can a) reduce the quality of an image with a lossy compression (in download if you select jpg you can reduce the quality which will in turn reduce the file size) b) scale an image when displayed in a browser (canvas.style.width > canvas.width) but the underlying image will still be canvas.width

Maybe I'm missing something

sjsdaiuasgdia•9mo ago
I assume they meant aspect ratio instead of dimensions.
axelMI•9mo ago
oh, in that case it's enough to go in the crop section, select "pic" to keep the current "picture" aspect ratio and resize the crop box
munksbeer•9mo ago
Apologies, by dimensions, I did mean aspect ratio. All I mean is keep the same image, but reduce the number of pixels, and lose some clarity, to reduce the size of the file.

Your suggestion above doesn't work. Try it. It keeps the picture aspect ratio, but it crops the picture. I don't want to crop it, I want to shrink the number of pixels but keep the same image (with loss of clarity because reducing pixels).

axelMI•9mo ago
Mhh. Maybe if you can show me an editor/app that does what you require will help me figure out how it works and replicate it
sjsdaiuasgdia•9mo ago
MS Paint, Resize/Skew option. Ctrl-W is the hotkey.

It allows you to resize either in terms of pixel count or percentage. The percentage approach is very nice for just putting 50 in both horizontal and vertical fields and getting an image half as large in both dimensions, but showing the same image (with reduced quality, because fewer pixels) and at the same aspect ratio.

axelMI•9mo ago
done! added in the "composition" menu and fully integrated in the workflow

I preferred just having an input with the correct pixels rather than % (to keep UI clean) but you'll get the same result