Hacker News new | ask | show | jobs
by waynecochran 21 days ago
The SVD seems to come up everywhere in my work in computer vision. I find myself continuously using the various C++/Eigen SVD implementations. Actually I should speak in the past tense. Claude and Codex are now generating all my code for me now, and I see them spitting out SVD code frequently -- often for very special cases. SVD truly is an amazing tool.
3 comments

It comes up anywhere that youre working with data that has some sort of correlation structure.

In image processing, the SVD makes it possible to talk about all the rich spatial correlations in the image, and pick out the strongest ones and discard noise.

This is also why it's so ubiquitous in compression algorithms, and of central importance in stuff like quantum information.

> Claude and Codex are now generating all my code for me now, and I see them spitting out SVD code frequently -- often for very special cases.

I find this so annoying. I had to PR some Claude-generated gaussian elimination routine last month and making sure it got the pivoting logic correct was a waste of my time.

How big of an advantage was it, to have the code developed specifically for your project? These AI tools are pretty impressive, but why not have it generate a call to BLAS or PARDISO or something?
There are cases where you don't want the footprint of bringing in another framework / library or that is not even an option.
Yeah, I’m curious what put them in that case here, though. There are high quality open source linear algebra codes out there, so I’m surprised that they needed something generated. (But, just surprised and curious to hear more, not saying they are wrong or anything like that).
Here is an example. I wrote a MacOS app in Objective-C++/C++ that used Eigen's JacobiSVD solver at one point. A colleague of mine use Claude to port it into a web tool that used JavaScript. I scrolled thru the JS code and saw that is wrote is own Jacobi SVD solver. So I assume it did this match the exact behavior of the MacOS app -- using a 3rd party solver may not accomplish this. SVD solvers can behave differently in different use cases. What are the options for JS?
Not sure, I’m not familiar with the web ecosystem. Not familiar at all, so my next question will probably be stupid. Would it have been possible to compile your C++ library to WebAssembly?
Solution of linear system is one of those problems that you should program yourself to learn the methods. But there are so many edge cases and details that you have to rely on libraries for production.
You are doing it wrong. Have Claude generate the test code and log test data that it can feed back into itself. Claude can generate tests and verify the code better than humans now. I don't trust humans to get things right anymore -- I have a PhD and Claude knows all the math and libraries better than me.
> You are doing it wrong.

I didn’t write any of it. I occasionally get assigned PRs written (or not, in this case) by other devs.

> Claude can generate tests and verify the code better than humans now.

It certainly didn’t do that in this case.

> I don't trust humans to get things right anymore -- I have a PhD and Claude knows all the math and libraries better than me.

If it knows all the libraries so well, why did it add a bespoke implementation?

If you're getting code without tests to review in a PR, that should be an instant reject without even looking at the code.
> If you're getting code without tests to review in a PR, that should be an instant reject without even looking at the code.

Management didn’t like that the last time I was assigned a AI-gen PR and I like my job otherwise.

Go ahead and have claude add and run units tests for you as part of the PR review process.
Claude is absolutely terrible at writing unit tests, this advice continues to perplex me. Coding agents usually slam you with hundreds of lines that do little more than “test” what is obvious. Maybe it’s good for an API revision or such. But for linear algebra where errors might not manifest unless suitably chosen inputs are generated based on expert knowledge, that’ll be useless.
That's on the submitter of the PR to do. Don't put that burden on the reviewer.
I don’t get paid to do my job and then also the submitter’s job.
what work are you doing in computer vision that isn't entirely ML these days?
I'll give you one example, an often first step to solving the Perspective N Point (PNP) problem involves using the Direct Linear Transform (DLT) method which boils down to solving AX = 0 where A in a 12x2N matrix (N can be 6 to 500). The best way to solve this is with SVD. The first published PNP solver (for N = 3) dates to 1841 (did not use SVD) and we still are solving that problem now and I imagine we will still be solving it in 100 years (?).
classic! Used the same thing to solve for the rigid transform of an April tag for a calibration problem years ago.
I'm not the person you are replying to but I work in image processing of SAR radar images and it's mostly ML-free (thankfully because I don't enjoy it). I dont know which other areas still work with these things
What sort of algorithms do you run on SAR images?
For example, to create the image from the radar pulses, you can do time-domain backprojection, omega-k and others. Then when comparing images of different dates you can do SAR interferometry, then use numerical methods, iterative algorithms. Although I'm thinking this may be called signal processing instead of computer vision.