HNHacker News
TopNewBestAskShowJobs

lsaferite

2,958 karma · joined June 11, 2012

submissionscomments
lsaferite··on Full Spectrum and Infrared Photography
Playing with a hyper-spectral imager makes you rethink how we see things. I've talked about this before, but human vision essentially "low resolution" on the spectral bands. Using an HSI that "sees" in 4nm spectral slices from 350-1000nm is really interesting (Cubert Ultris X20 Plus). There's so much spectral information that we just totally miss. I really wish the equipment for capturing images at these higher spectral resolutions wasn't so expensive so we could see people experimenting with them on a large scale. The one I got to work with was more than a nice SUV and that's cheap in the space. The ones we looked at from Headwall that did something like 400-2500nm started at $250k. Those weren't even full-frame imagers like the Ultris, they were line scanning imagers. That massive cost jump was down to the fact that from ~1050nm+ you need much different hardware to capture spectral data.

If anyone is interested in some technical aspects of the "full frame" HSI I worked with, it's quite interesting. It had a 20MP Monochromatic Sensor that captured single-band 12-bit data behind an array of lenses that split the incoming spectral range (350-100nm) into 164 individual 4nm wide bands of light that hit 410x410px squares on the sensor. The sensor can capture from 350-1100, but the QE drops of really fast past about 850nm and the product limited the upper range to 1000nm. I'm sure I munged something there, but you should get the general idea. I highly recommend researching the space of HSI, it's fascinating.

Last thing to point out, when working with an HSI like this, one thing you can do is capture a "spectral fingerprint". Since you've gone from three bands on spectral intensity information to, in our case, 164 bands you have the ability to turn that high-density spectral data for each pixel into essentially a line graph. Using that information you can do matching against a database of known spectral fingerprints and identify materials and material properties really well. In the multi-spectra world you'll see this capability used to identify crop health. In the hyperspectral world you can identify so much more. For instance, it can see skin anomalies that aren't visible to the human eye. You can identify specific minerals in a picture of a bunch of rocks (you need up into the 2500nm range for this though). You can easily spot foreign objects on a conveyor of food items. Overall, it's a long list of capabilities and I'm certain there are many more uses we could discover if the imagers were cheaper. And if you are into the wider ML world (not just focused on LLMs I mean), you'll see ML Classification Models being trained on these spectral fingerprints as well.

Anyway, the "full-spectrum" is fascinating, especially when you are able to slice it thin.

lsaferite··on TUI Studio – visual terminal UI design tool
FWIW, I still love to see the old BBS UIs and ANSI art. But that's probably just nostalgia talking.
lsaferite··on TUI Studio – visual terminal UI design tool
I find it slightly annoying and disappointing that the blocks saying what frameworks it's designed to export to aren't links to those frameworks.
lsaferite··on Bucketsquatting is (finally) dead
I mean, why isn't this just the mandatory default going forward? Globally shared, unique bucket names always struck me as a horrible idea.
lsaferite··on Put the zip code first
A few cover multiple states.

See: https://peter-horton.com/2022/12/30/zip-codes-zctas-and-zcta...

lsaferite··on Put the zip code first
Even in the US, once you have a zip and a name the post office can often deliver mislabeled mail. Results my vary by region though.
lsaferite··on Put the Zipcode First
You could maybe do it for some subset of countries, but it's not simple. And some countries don't have post codes.
lsaferite··on Put the zip code first
Unfortunately you still need country first. But past that, the point stands well. You'll need to adjust the form based on the country, obviously.

For the US you can use zip-5 to prefill bunch of data and zip+4 practically fills it all out for a lot of addresses.

Each country has some particular nuance though, so it's only as simple as "zip first" or "postcode first" in some locations.

lsaferite··on If AI writes code, should the session be part of the commit?
If it's non-trivial work, have the Agent distill it down to an ADR.
lsaferite··on OpenAI agrees with Dept. of War to deploy models in their classified network
Not "asking for them", insisting the already agreed to terms be respected.
lsaferite··on Rtk – reduce Claude Code token usage
As someone working with drone lidar (and AI), I was certainly mentally tripped for a bit.

The fact that they added a disclaimer as the first part of their readme about another project with the same name says they should probably just change the project name.

lsaferite··on New accounts on HN more likely to use em-dashes
This made me laugh more that it should have. Thanks!

I feel like I'm certainly in that club as well.

lsaferite··on Why is Claude an Electron app?
Tauri is still a WebView wrapped in some chrome, right? That's not what I would consider "native".
lsaferite··on Anthropic officially bans using subscription auth for third party use
That page is... confusing.

> Advertised usage limits for Pro and Max plans assume ordinary, individual usage of Claude Code and the Agent SDK.

This is literally the last sentence of the paragraph before the "Authentication and credential use"

lsaferite··on Claude Sonnet 4.6
I feel like a legion of blind computer users could attest to how bad accessibility is online. If you added AI Agents to the users of accessibility features you might even see a purposeful regression in the space.
lsaferite··on Monosketch
I would assume they sent that because they were suggesting to support FOSS over closed-source software.
lsaferite··on An AI agent published a hit piece on me
The word "stochastic" in relation to chaos is a thing though. It helps distinguish between closed and open systems.
lsaferite··on Good if make prior after data instead of before
Good to know I'm not alone. I'm also tired, so I guess that could be it.
lsaferite··on Unrolling the Codex agent loop
Something I try to explain to people I'm getting up to speed on talking to an LLM is that specific word choices matter. Mostly it matters that you use the right jargon to orient the model. Sure, it's good and getting the semantics of what you said, but if you adjust and use the correct jargon the model gets closer faster. I also explain that they can learn the right jargon from the LLM and that sometimes it's better to start over once you've adjusted you vocabulary.
lsaferite··on Reading across books with Claude Code
I'm not entirely sure that's a fair association. The Luddites weren't against technology in general, they were fighting for their livelihoods. There very well could be a fresh luddite movement centered around the use of AI tools, but I don't think "luddite" is the right term in this specific case.
lsaferite··on SparkFun Officially Dropping AdaFruit due to CoC Violation
> However, as I understand it, you instead tracked down the Etsy store of someone who had criticized and blocked you on social media, specifically to send them further unwanted messages related to your previous conversation about "doxxing" another user.

I have zero knowledge of the drama beyond reading the posts here, but if this is true then that clearly falls into the harassment arena.

lsaferite··on Sisyphus Now Lives in Oh My Claude
Re point 5, the simplest argument in favor of sub-agent workflows it that it allows the main agent context to remain free of a large amount of task-specific working context. This lets the main context survive longer before you need compaction. Compaction in CC is a major loss of context IME. Context compaction is generally the point where I reset the conversation as the compacted conversation is practically as bad as a new one but has a bunch of wasted space already.
lsaferite··on A web developer posted a payment shaming message on their client's site
You can't control and aren't responsible for how other people behave. I think this falls firmly into the "two wrongs don't make a right" territory as well.
lsaferite··on A web developer posted a payment shaming message on their client's site
Back when I used to work freelance, I learned that all my contracts needed to have a provision not releasing IP rights until final payment was made. This provides the legal stick to side-step going through a commercial contract dispute. You frequently run into companies wanting to pay fractions of amounts due and not having a strong incentive to hurry along a resolution. Instead, without IP assignment it becomes a copyright enforcement action instead and that can get attention and resolution much faster. I never ended up needing to use it, but I did have to remind a few customers that the provision existed. This all came out of a client stiffing me on a large bill that was, at the time, extremely damaging to my cash flow.

With the above in mind, publicly changing a customer's website to something like this is *highly* unprofessional. Better to simply force the site down in a legal manner that conforms to a signed contract.

lsaferite··on OpenSCAD is kinda neat
> OpenSCAD isn't really parametric CAD. It's a programming language; it's parametric for that reason. But it's not really CAD

Maybe this is pedantic, but why wouldn't OpenSCAD qualify as CAD exactly? It's still "Computer-Aided Design"? Sure, the UI/UX is different, but is there some qualifier to CAD around the UI/UX?.

lsaferite··on I ported JustHTML from Python to JavaScript with Codex CLI and GPT-5.2 in hours
This highlights something that I wish was more prevalent, Path Coverage. I'm not sure of what testing suites handle path coverage, but I know XDebug for PHP could manage it back when I was doing PHP work. Simple line coverage doesn't tell you enough of the story while path coverage should let you be sure you've tested all code paths of a unit. Mix that with input fuzzing and you should be able to develop comprehensive unit tests for critical units in your codebase. Yes, I'm aware that's just one part of a large puzzle.
lsaferite··on Building a High-Performance OpenAPI Parser in Go
> For example, in OpenAPI 3.1, the type field of a schema can be a single string (e.g., "string") or an array of strings (e.g., ["string", "null"]).

> In a statically typed language like Go, this is usually handled by using interface{} (which loses type safety) or complex pointer logic.

Having worked on JSON Schema parsing in go very recently, I disagree with this assessment. You create a `Type` in one of a few (2?) ways, depending on your specific needs. The simple method being that it's a `[]string` under the hood with a custom UnmarshalJSON receiver function. If reproducing the exact input structure is important you can cover that by making `Type` into a struct with a `[]string` and a `bool` to track if it was originally a single or an array. Then you have custom MarshalJSON and UnmarshalJSON receiver functions. That is, in fact, how I've seen multiple existing go JSON Schema libraries handle that variable type. No use of `any` or complex pointers.

lsaferite··on Fix HDMI-CEC weirdness with a Raspberry Pi and a $7 cable
Having just swapped to a new TV on my Harmony setup I was concerned if it was still going to work. Lucky me, it did.

I really REALLY want someone to manufacture the thin harmony RF remote with a simple receiver puck with an open firmware. That's all we'd need because the HA crowd would be all over it and have it doing anything you want.

lsaferite··on Guarding My Git Forge Against AI Scrapers
Why not render the markdown as HTML in this scenario?
lsaferite··on Guarding My Git Forge Against AI Scrapers
Just keep in mind, that could block legit users who are outside the country. One case being someone traveling and wanting to buy something to deliver home. Another case being a non-resident wanting to buy something to send to family in the service zone.

I'm not saying don't block, just saying be aware of the unintended blocks and weigh them.

← PreviousPage 3 of 34Next →