MurphyA/hacker-news huggingface dataset:
AI Mental Health Question
by diogenix | 2025-04-21 15:57:07+00:00
All,

Soliciting reactions on a “self-learning” AI tool for mental health.

Facial expressions correlate with depression. ML models of small datasets (4 mins. of facial video from small #s of particpants) predict patient depression scores better than doctor’s scores do. Other smart-phone-compatible biomarkers like pupillometry, eye saccades, audio, and kinematics, also correlate with depression. Several companies sell AI tools using such platforms, but I’m unaware of any massively multi-modal models.

Psychiatry’s reliance on subjective data undermines reliability and trust. AI scores, though trained on subjective data, are objective and could address.

What if a non-profit: (a) Launched a free smart-phone app generating real-time depression score based on facial-expressions. (b) Asked users to complete a PHQ8 (8 question depression survey) periodically (e.g. every fourth use) and store both PHQ and video data. (c) Used this data to expand model training database; subsequent use should find a more robust model. (d) Expanded to include other data modes and account for fators like age, sex, race, culture, etc. (e) Evolve from an active app (“get your score in 1 minute”), to a passive one app (“leave running,, with user consent, to chart mental health over time”) (f) Monetized: a. Protecting user data, keeping the app free for data donors. b. Licensed algorithms to health care professionals. c. Reinvested proceeds of fund maintenance and development after an initial philanthropical startup period

Proof of concept for facial expression models exist in academia, but need redevelopment for smartphones. Coding, modeling, and mental health system design challenges remain. A non-profit structure may be critical to encourage data donations.

Unanswered questions include: (a) how model fidelity scales with data, (b) performance of longitudinal systems (tracking video snippets over time), (c) minimum video duration for reliable monitoring, (d) environmental impacts on video capture (e.g., need for emotionally provocative prompts, etc.)

Critics may call this a gimmick as, a users already self-assess depression (and self-assessment is used as the ground-truth for training) and the system could be spoofable. However, objective, longitudinal could benefit individuals, and sufficient data might enable spoof-detection. High usage could also transform mental health research by providing objective data to redefine conditions and evaluate treatments.

Regulatory concerns (e.g., avoiding “diagnosis, ensuring informed consent) exist but seem management for an early version.

Curious to hear your thoughts.
by playlsd | 2025-04-21 15:57:09+00:00
Zalvix is a rising DJ and music curator with a deep connection to the underground and mainstream sides of electronic music. Known for genre-fluid sets that blend house, techno, bass, and hard-hitting rhythms, Zalvix brings an energy that transforms dancefloors and elevates any event.

As a DJ under the PlayLSD collective, Zalvix is more than just a performer — he's a storyteller. Each set is a journey built on emotion, tension, release, and unforgettable drops. Whether it’s a late-night rave, a chill sunset session, or a high-energy festival crowd, Zalvix adapts the vibe with precision and heart.

Sound Profile: Melodic Techno Bass House & Future Rave Euphoric Hardstyle Deep & Driving Techno Festival Anthems & Afterparty Grooves Based in Bangladesh with global influences, Zalvix is available for local and international bookings. His mixes have been featured in PlayLSD’s top playlists and livestreams, connecting with electronic music lovers around the world.
by asdcplib | 2025-04-21 15:57:21+00:00
Hi, asdcplib author here (mentioned in the article.) Excellent writeup of DCP and related tech. FYI the colorspace of an SDR DCP MXF file is X'Y'Z' with gamma 2.6 (see SMPTE 428-1.) Other MXF formats (i.e., not cinema) use a wide variety of colorspaces. Despite the huge range of XYZ, DCP image files are usually constrained to code values that fall within P3 (again, SDR.) The HDR applications are more interesting.

Upon reading the comments: • DCP is a B2B format. DCP usage is licensed by contract, not EULA. Please keep these important differences in mind when commenting on DRM. • Decrypt, decode, color processing, watermark occurs in FPGA. If you think that sounds hard, remember that all of this tech was originally deployed 20 years ago. Moore's law has made our lives much easier since! • Frame-by-frame encipherment, rather than whole stream, better supports random access and the famous tobacco intermissions popular in the EU.
by freespeechlefts | 2025-04-21 15:57:27+00:00
Free speech as you understand it is an american thing. More specifically, it's a popularized and idealized version of free speech that has no basis in reality or law. All free speech rights around the world are defined by governments, culture, law and history. Germany's free speech is markedly different from american free speech for obvious reasons.

Also, you are mistaken when you link free speech to human beings. Corporations have free speech rights. Corporations aren't human beings.

In the idealized abstract, it feels like free speech is a universal and agreed upon ideal. It isn't. Not between nations. Not even within nations. Even in the US, we have no set definition of free speech. Free speech spans from absolutists who believe all speech is legal to those who want to limit free speech to the absolute minimum as they define it.
by hahn-kev | 2025-04-21 15:57:40+00:00
So many things have been called Linq over the years it's hard to talk about at this point. I've written C# for many years now and I'm not even sure what I would say it's referring to, so I avoid the term.

In this case I would say extension methods are what he's really referring to, of which Linq to objects is built on top of.
by ty6853 | 2025-04-21 15:58:06+00:00
Lol never been to the US/Mex crossing? Almost everytime I cross I see like 20 hispanic looking people with nothing but a birth certificate. They let them right across back into the US, meanwhile I used US passport and they locked me up, printed me, and interrogated me about where I was really born (I look super white and talk with an American accent).

In my experience CBP doesn't actually care that much about whether you have ID, but if you don't it just makes it easier for them if they decide to pick you out as the person they want to torture for the day.
by ngneer | 2025-04-21 15:58:29+00:00
This is not a stupid question. I have seen other comments on the thread that confuse the two terms and run with it. Better to ask than assume. Especially since "VM" is the same label for two or three distinct yet related notions in security.

The VM you are familiar with indeed can run an OS, and is indeed not what TikTok does.

#1 VMM - hypervisor runs VMs

#2 JVM/.NET - efficient bytecode

#3 Obfuscation - obscure bytecode

The main thing is that for #2 and #3 the machine language changes.

With "virtualization" as used in most contexts, involving a virtual machine monitor, or hypervisor, one creates zero or more new (virtual) machines, to execute on multiple software recipes. All the recipes are written in the same (machine) language, for all the machines. This can help security by introducing isolation, for example, where one VM cannot read memory belonging to another VM unless the hypervisor allows it.

With the "virtual machine" used for obfuscation, the machine language changes. The system performs the same actions as it would without obfuscation, but now it is performing those actions using a different machine language. Behaviorally, the result is the same. But, the new language makes it harder to reverse engineer the behavior.

Stupid example:

Original instruction: MOV A,B

Under hypervisor virtualization, VM0 and VM1 will perform this same instruction.

Under obfuscation virtualization, software will perform instructions that amount to the same result, but are harder to figure out. So, the MOV instruction is redefined and mapped onto a new (virtual) machine. The new machine does not simply leverage the existing instruction, rather an obfuscated sequence. For example:

A <- B + C + D * E

A <- A - C

A <- A - D * E

Obviously, the above transformation is easy to understand and undo. Others are harder to understand and undo. Look up MOVfuscator to see how crazy things may get.
by FireBeyond | 2025-04-21 15:58:33+00:00
> I'd also say that the flash comment was very uninformed. In any arena/stadium that the games/matches are broadcast, they will be lit properly in order for the cameras to have a proper exposure. This also means there's plenty of light for the photogs.

That's not (entirely) accurate. Lighting for continuous light (e.g., TV broadcast) is quite different from still photography. NBA arenas, at least, absolutely ARE equipped with strobes in the rafters that are radio-activated from the camera.

Watch as the team comes down the court, and don't watch the players but watch the court, you will see the flashes reflect on the court (and apologies if you can't unsee them after, but they're not overly noticeable). As you say, there is a good amount of light, but if you want a tighter aperture or are shooting a player at high speed, you need more than the arena is lit for.

Further info:

- https://petapixel.com/2017/06/03/bright-flashes-nba-games-ma...

- https://www.reddit.com/r/nba/comments/nta77s/anyone_notice_a...

- https://imgur.com/a/puri1RN/
by bnchrch | 2025-04-21 15:59:04+00:00
FWIW you can pass to other arguments than first in this syntax

```

params

|> Map.get("user")

|> create_user()

|> (&notify_admin("signup", &1)).() ```

or

```

params

|> Map.get("user")

|> create_user()

|> (fn user -> notify_admin("signup", user) end).() ```
by tasuki | 2025-04-21 15:59:18+00:00
Oh wow, are we living in the same universe? To me the one-line example and your example with line breaks... they just... look about the same?

See how adding line breaks still keeps the `|w| w.alive` very far from the `filter` call? And the `|w| w.id` very far from the `map` call?

If you don't have the pipeline operator, please at least format it something like this:

fn get_ids(data: Vec<Widget>) -> Vec<Id> { collect( map( filter( map( iter(data), |w| w.toWingding() ), |w| w.alive ), |w| w.id ) ) }

...which is still absolutely atrocious both to write and to read!

Also see how this still reads fine despite being one line:

fn get_ids(data: Vec<Widget>) -> Vec<Id> { data.iter().map(|w| w.toWingding()).filter(|w| w.alive).map(|w| w.id).collect() }

It's not about line breaks, it's about the order of applying the operations, and about the parameters to the operations you're performing.
by fp64 | 2025-04-21 15:59:25+00:00
I am not sure what your argument is supposed to be. That I am wrong because I haven’t gotten the hang of it after all these years? I do understand generators. For a long time. I still believe they are usually an anti-pattern, same like massive abuse of inheritance where you have 20 classes but only a single instance but you made your code “future proof”.

The point I wanted to make is that using generator, in particular like here, is something that I consider ugly and difficult to maintain and it will probably have to be rewritten when trying to export to TorchScript. I really do not see how “just get a hang for it” can help me reevaluate my perspective

Edit: Maybe you were hung up on my “standardised” - I have to admit I do not know how thoroughly the PEP defines generators and if really all edge cases are defined without needing to check the python source code. From past experiences, my trust in python language standards is a bit shaky, as it had been difficult to reproduce the very exact behaviour using a different language, or python features - without requiring digging through the sources.
by sophacles | 2025-04-21 15:59:30+00:00
How is Gnome in any way relevant to bring up in the context of the kernel networking stack?

I mean I get it, you dislike Gnome for whatever reason and want to cast some shade - that part is clear. What I don't really understand is how you decided this context is somehow going to be received in a way to further your view... it's just so illogical that my reaction is "support the Gnome folks".

Actually - due to this comment I just donated $50 to the GNOME Foundation. Either the guerilla marketing worked, or your mission failed - in any case I hope this was an effective lesson in messaging.
by rvz | 2025-04-21 15:59:31+00:00
> When I grew up in computer science in the 90s, everybody was concerned about efficiency...“Somehow in the last 20 years, this has gotten lost. Everybody’s completely gung-ho about performance without any regard for efficiency or resource consumption. I think it’s time to pivot, where we can find ways to make things a little more efficient.

This is the sort of performance efficiencies I want to keep seeing on this site, from those who are distinguished experts and contributed to critical systems such as the Linux kernel.

Unfortunately, in the last 10-15 years we are seeing the worst technologies being paraded due to a cargo-cultish behaviour. From asking candidates to implement the most efficient solution to a problem in interviews but then also choosing the most extremely inefficient technologies to solve certain problems because so-called software shops are racing for that VC money. Money that goes to hundreds of k8s instances on many over-provisioned servers instead of a few.

Performance efficiency critically matters, and it is the difference between having enough runway for a sustainable business vs having none at all.

And nope. AI Agents / Vibe coders could not have come up with a more correct solution in the article.
by taolson | 2025-04-21 15:59:39+00:00
Yes, `&` (reverse apply) is equivalent to `|>`, but it is interesting that there is no common operator for reversed compose `.`, so function compositions are still read right-to-left.

In my programming language, I added `.>` as a reverse-compose operator, so pipelines of function compositions can also be read uniformly left-to-right, e.g.

process = map validate .> catMaybes .> mapM persist
by didgetmaster | 2025-04-21 15:59:40+00:00
The author talks about changing his licensing as the only stone he can throw.

As I understand it, changing the licensing will do nothing to affect the fork Microsoft already made. It might affect the next megacorp from doing the same thing in the future, but Microsoft can keep working on their fork without giving it a second thought.

This is for sure a cautionary tale for every open source contributor. Choose the original open source license very carefully.

Edit: Might I suggest that when picking the original license, you try to imagine how you might feel if the company that you hate the most (could be Microsoft, Google, Amazon, or other) does the most extreme thing allowed by the license.
by skydhash | 2025-04-21 15:59:52+00:00
One issue I can find with this workflow is tunnel vision, making ill informed decision because of the lack of surrounding information. I often skim books because even if I don't retain the content, I can have a mental map that can help me find further information when I need them. I wouldn't try to construct a complete answer to a question with just this amount of information, but I will use that map to quickly locate the source and have more information to synthesize the answer.

One could use the above workflow in the same way and argues that natural language search is more intuitive than keyword based search. But I don't think that brings any meaningful productivity improvement.

> Being able to "reason" effectively over long context inputs (particularly useful for understanding and debugging larger volumes of code) is another.

Any time I saw this "wish" pop up, my suggestion is to try a disassembler to reverse engineer some binary to really understand the problem of coming up with a theory of a program (based on Naur's definition). Individual statements are always clear (programming language are formal and have no ambiguity). The issue is grouping them, unambiguously define the semantic of these groups, and find the links between them, recursively.

Once that's done, what you'll have is a domain. And you could have skipped the whole thing by just learning the domain from a domain expert. So the only reason to do this is because the code doesn't really implement the domain (bugs) or it's hidden purposefully. So the most productive workflow there is to learn the domain first to find discrepancy (first case) or focus yourself on the missing part (second case). In the first case, the easiest approach is writing tests, and the more complete one is to do a formal verification of the software.
by WindowsDev | 2025-04-21 16:00:00+00:00
Actually, you presumed correctly. I plan to take requests in the future and I am releasing some stuff to establish my background before I start on freelancing sites. Nothing is set up officially yet, aside from registering the handle which Ive chosen to do business under. Being self sufficient as a developer is my dream. I’m just first publishing my backlog of projects I developed for my own personal use which I think might be useful to others, and additionally to showcase some of my capabilities.
by bcrosby95 | 2025-04-21 16:00:05+00:00
This may depend upon every individual, but for me "How am I going to do it" is not actually writing code. It's about knowing how I'm going to do it before I write the code. After that point, its an exercise in typing speed.

If I'm not 100% sure something will work, then I'll still just code it. If it doesn't work, I can throw it away and update my mental model and set out on a new typing adventure.
by loufe | 2025-04-21 16:00:12+00:00
There must be some form of memory leak in AI Studio as I'll have to close and open a new tab after about 2 hours as it slowly grinds my slower computers to a halt. Its ability to create a markdown file without escaping the markdown itself (included code snippets) is definitely my first suggestion for them to fix.

It's a great tool, but sometimes frustrating.
by disqard | 2025-04-21 16:00:49+00:00
Right, this same phenomenon is evident in all media -- once it starts to take hold, the only way to effectively critique it, is through the medium itself. Hence, the proverbial Letter to the Editor complaining about the newspaper's content quality; the televised debates over what's on TV these days; the YT videos about the Internet ruining people's brains, etc.
by saulpw | 2025-04-21 16:00:52+00:00
In practice it doesn't mean more contributions though. If MSFT used his project for profit and contributed back, he wouldn't be complaining. Instead they forked his project, without even sufficient attribution, and now he has to do even more work to differentiate his original project from their derivative.

So the point is that we need another license that does gives open source rights to individuals, yet does not permit corporations to take everything and give nothing.
by WorldMaker | 2025-04-21 16:01:37+00:00
Templates don't even have to be processed into a string. The article shows an example where the Template is processed into an HTML mini-DOM. It's maybe not obvious because the DOM object is immediately stringified to show sample output, but you could imagine manipulating the DOM object in a few more steps before stringifying it, or maybe you are running in WASM in a browser and using that mini-DOM directly as a Virtual DOM passed to JS to work with.

Also, in addition to the other SQL example using "?" to fill in the "holes" for parameters in an SQL friendly way, some DBs also support named parameters, so the "hole" in the string form might be naively replaced with something like `f"@{item.expression}"` and that also forms the key in a dict to pass as parameters. (You'd want to make sure that the expression inside the template is useful as a parameter name, and not something more exotic like {1 + 3} or {thing for thing in some_list}, in which cases you are probably auto-assigning some other parameter name.)
by mounir9912 | 2025-04-21 16:01:40+00:00
What I really don't get is how it's any different than applying whatever function you would apply to the template, on the f-string variables. So instead of:

evil = "<script>alert('bad')</script>" template = t"{evil}" safe = html(template)

Why not just:

evil = "<script>alert('bad')</script>" safe = f"{html(evil)}"

Or even before creating the f-string. Is it just about not forgetting the sanitization/string manipulation part and forcing you to go through that?
Ask HN: Which are some AI predictions worth sharing that turned out false?
by amarcheschi | 2025-04-21 16:01:50+00:00
In this sea of ai will X before Y, i think it would be nice to remain with the boots on the ground.

I'll start from a long time ago, just to break the ice. Of course i'm quoting Alan Turing because of his advancements in the field, i would never dare to put him in the same place as the weird messianic techbros

Alan Turing, 1950 - "I believe that in about fifty years'time it will be possible to programme computers, with a storage capacity of about 10*, to make them play the imitation game so well that an average interrogator will not have more than 70 per cent, chance of mating the right identification after five minutes of questioning."
by ApolloFortyNine | 2025-04-21 16:02:02+00:00
It definitely seems like this whole thing is known by maybe 5 individuals at Microsoft. It's not some big affront on open source software, they didn't relicense the code under a less permissive license or anything, they just updated the copyright notice improperly. And that part I wouldn't be shocked was a single individual dev's doing.

I agree, op should make a PR, state their case, and then complain if it's not merged.
by nabla9 | 2025-04-21 16:02:05+00:00
Google has always been the leading research oriented AI megacorp. Tranformers were invented in Google Brain/Google Research. AlphaZero, AlphaFold, AlphaStar, ...

Google is surprisingly shitty at making commercial products. They typically acquire them. Now they finally have productized their research properly after OpenAI, then Anthropic did it first.
by orev | 2025-04-21 16:02:10+00:00
I find it very frustrating that people expect new technologies to immediately beat existing ones on every metric, when the existing ones have the advantage of a long timeline of iterative refinement. Optane looked amazing, but it just wasn’t given enough time to go through that process. I know it’s a function of how the market works, but it’s still sad to see promising things die on the vine like that.
by alexdanilowicz | 2025-04-21 16:02:45+00:00
The Github sync is used by solo entrepreneurs or hobbyists to get what they've designed in Magic Patterns into their IDE. 99% of the time that's an AI-IDE, like Cursor. And then from their they might add backend functionality. It's pretty interesting seeing how Cursor is the "next step" after these types of tools for that persona.

On the other hand, for product teams with mature engineering workflows, it usually goes like this: 1. Designers/PM brainstorms an idea in Magic Patterns 2. They get feedback in a design crit or from their users by sharing the Magic Patterns URL. 3. They iterate on it further and then either export it to figma or hand it off to engineering directly. But! engineering won't use the code because we output React + Tailwind CSS, and they are very likely using custom components or have their own nuances.

I do think as the foundational models get better the dev/design handoff will get smoother, but I don't think we are there yet, especially for existing code bases. For new projects, it's a different story and our two-way Github sync plays a role.
by bryanlarsen | 2025-04-21 16:03:04+00:00
Renewable is a great base load power option. You supply your base load with your cheapest available supply, which is usually renewable.

You then supply all power needs above what can be provided by your cheapest power with dispatchable supply. If your base supply is intermittent, that means your dispatchable supply has to be able to supply 100% of peak.