MurphyA/hacker-news huggingface dataset:
Ask HN: What CS or Software Engineering subfields are worth specializing in?
by pixelworm | 2025-06-27 18:14:59+00:00
I’ve been working as a software engineer for about three years, primarily developing a GUI library for embedded systems. Recently, I’ve been considering pursuing a master’s degree or finding another way to specialize in a field that is likely to remain in demand and not be replaced or lose many jobs due to AI. I’m interested in identifying areas of study—aside from AI itself—that are valuable now and will continue to be relevant in the future. What fields or specialties would be worth investing in?
by not_your_vase | 2025-06-27 18:15:22+00:00
It is not dead, but Google and OpenAI are definitely strangling the internet - if it were for them, you would never find any new website beside the 30-50 that they promote. I learn about new things only by word of mouth - sometimes here on HN, or in random comments on the internet. Just today I learned from a phoronix comment about asterinas (https://asterinas.github.io/index.html), a new hobby++ OS written in Rust...

It is getting harder to find things, but it is not yet impossible, if you keep your eyes open. But if you blink you miss it...
by Animats | 2025-06-27 18:15:22+00:00
> I guess you worry that the feature creep dilutes the maintainers' focus, but opening it up to a broader audience might get access to more contributors.

To some extent, yes. Here's an example.[1] So many features have been added that the unit tests were taking too long. So tests were switched to use a faster allocator. That won't even compile for cross-compilation from Linux to Windows.

Because tests won't run, chasing down other cross-compilation bugs got much harder.[2]

This is the price of feature bloat. Core stuff is breaking and not getting fixed as cool features are bolted on. Currently, 799 open bugs. The technical debt is building up.

[1] https://github.com/emilk/egui/issues/7033

[2] https://github.com/emilk/egui/issues/6847
by oddsockmachine | 2025-06-27 18:15:41+00:00
This is wonderful! I'm working on a large spatial audio art installation for Burning Man this year (https://oddsockmachine.github.io/ and https://www.instagram.com/oddsockmachine/). In mine, most of the audio moves around the space, but I'd love to borrow concepts from this and have the listener move through the audio field. (That'll have to go on the biiig backlog for version 2!)
by kbolino | 2025-06-27 18:16:38+00:00
I feel like we're mostly in violent agreement.

The key point about frames in the original context of this thread as I understood it was that they allowed a site to only load the content that actually changes. So accounting for the table-layout era doesn't really change my perspective: frames were so bad, that web sites were willing to regress to full-page-loads instead, at least until AJAX came along -- though that also coincides with the rise of the (still ongoing) div-layout era.

I agree wholeheartedly that the concept of partial page reloading in a rectilinear grid is alive and well. Doing that with JavaScript and CSS is the whole premise of an SPA as I understand it, and those details are key to the difference between now and the heyday of frames. But there was also a time when full-page-loading was the norm between the two eras, reflecting the disillusionment with frames as they were implemented and ossified.

The W3C (*) spent a good few years working on multiple things most of which didn't pan out. Maybe I'm being too harsh, but it feels like a lot of their working groups just went off and disconnected from practice and industry for far too long. Maybe that was tangential to the ~decade-long stagnation of web standards, but that doesn't really change the point of my criticism.

* = Ecma has a part in this too, since JavaScript was standardized by them instead of W3C for whatever reason, and they also went off into la-la land for roughly the same period of time
by theschmed | 2025-06-27 18:17:22+00:00
I tend to think that this challenge posed by "mixed" domains, partly unobjectionable but partly inappropriate, will only become more prevalent. A couple of thoughts:

1. Filtering at the DNS level will never be enough. You'll always need to have the capability for the browser or user agent to do filtering, since the user agent has the context to know the full URI as well as other things needed for filtering. The OS admin (parent, school IT admin etc) will need to be able to block all user agents except the ones that have the reporting and filtering capabilities tuned to the admin's requirements. This is the direction Windows is heading, but it is very rough.

2. I wonder if more domains could do what Google, Bing, Youtube etc do and permit a safe version to be requested at the DNS level. I personally would like to be able to do so with Reddit, Twitter and more.
by deathanatos | 2025-06-27 18:17:27+00:00
We can use match to do pattern matching:

let name = match color_code { 0 => "red", 1 => "blue", 2 => "green", _ => "unknown", };

The RHS of the `=>` has to be an expression, since we're assigning it to a variable. Here, you should already see one "useful" side-effect of what you're calling "syntactic elements" (I'd perhaps call them "block statements", which I think is closer to the spirit of what you're saying.) The whole `match … {}` in the example above here is an expression (we assign the evaluation of it to a variable).

> What practical value is it to users to allow "return <expr>" to itself be an expression?

Now, what if I need to return an error?

let name = match color_code { 0 => "red", 1 => "blue", 2 => "green", _ => return Err("unknown color"), };

The expression arms need to be the same type (or what is the type of `name`?). So now the type of the last branch is !. (Which as you hopefully learned from TFA, coerces to any type, here, to &str.)

There's more ways this "block statements are actually expressions" is useful. The need not be a ternary operator / keyword (like C, C++, Python, JS, etc.):

let x = if cond { a } else { b };

In fact, if you're familiar with JavaScript, there I want this pattern, but it is not to be had:

const x; // but x's value will depend on a computation: // This is illegal. if(foo) { x = 3; } else { x = 4; } // It's doable, but ugly: const x = (function() { if(foo) { return 3; } else { return 4; }})(); // (Yes, you can do this example with a ternary. // Imagine the if branches are a bit more complicated than a ternary, // e.g., like 2 statements.)

Similarly, loops can return a value, and that's a useful pattern sometimes:

let x = loop { // e.g., find a value in a datastructure. Compute something. Etc. if all_done { break result; } };

And blocks:

let x = { // compute x; intermediate variables are properly scoped // & cleaned up at block close. // // There's also a slight visual benefit of "here we compute x" is // pretty clearly denoted. };

> Even if you disagree with this argument, this design decision has resulted in all these weird/confusing but absolutely useless code examples

I think one can cook up weird code examples in any language.
by adzm | 2025-06-27 18:18:15+00:00
The web tool is fun! I decided to give it a harder test and turned up some fans and background music up pretty loud and it still managed to decode the message.

Though after a certain point it stops recognizing it, I was still surprised how well it did with noise. I'm sure noise in higher frequencies (or the right harmonics) would be much harder to handle, but solvable in interesting ways too
by PaulHoule | 2025-06-27 18:18:50+00:00
I thought Tim Bray's XML spec was one of the most beautiful tech documents I'd every seen when I saw it for the first time. Adding namespaces at that point in history though was a disaster. Back then developers just weren't used to that kind of rigor (when I first started coding Java I had to go to a website run by frickin' NASA to get a clear explanation of how namespaces worked.)

It didn't help that Microsoft dropped a stick of over-complicated standards that tried to bring RPC into XML. RPC has always been a cursed concept because between (1) trying to be intellectually coherent and (2) caring about performance RPC systems become incomprehensible and it doesn't matter if it is Sun RPC, DCOM, CORBA, "Web Services", Protocol Buffers, etc.

The fact that the "REST economy" is intellectually incoherent and could care less about performance seems to have helped it succeed. Right now I just wrote a javascript function that looks like

const get_item = async (item_id) => {...}

and it does

GET /item/{item_id}

and I have a Java function on the server that looks like

Item getItem(String item_id)

and is tagged with some annotations that make it get called when that GET request. Jackson lets me write an Item as an "anemic domain object" that gets turned into the exact JSON I want and the only real complaint I have is that the primitive types are anemic so representing dates is a hassle.
by marcosdumay | 2025-06-27 18:19:41+00:00
> XML (the data structure) needs a non-XML serialization.

KDL is a very interesting attempt, but my impression is that people are already trying to shove way too much unnecessary complexity into it.

IMO, the KDL's document transformation is not a really good example of a better XSLT, tough. I mean, it's better, but it probably can still be improved a lot.
by bevr1337 | 2025-06-27 18:19:48+00:00
> It's no different

There are similarities, I agree, but there are huge differences too. Both should be analyzed. For ex, Wikipedia requires humans in the loop, has accountability processes, has been rigorously tested and used for many years by a vast audience, and has a public, vetted agenda. I think it's much harder for Wikipedia to present bias than pre-digital encyclopedias or a non-deterministic LLM especially because Wikipedia has culture and tooling.
by bluecalm | 2025-06-27 18:20:07+00:00
I don't think class action lawsuit is needed here. It's enough for one case to get to SCOTUS and then we will hear their opinion about how 14th amendment should be interpreted. It will be an interesting case I think both 4-5 against and 5-4 in favor of changing the interpretation is possible (with 3-6 and 6-3 less likely outcomes).
by PaulHoule | 2025-06-27 18:20:36+00:00
I believe in POSSE

https://www.theverge.com/2023/10/23/23928550/posse-posting-a...

even if I don't always practice it. I am sick and tired of Mastodonsters who think I'm a sell-out for being on Bluesky because I think you should be on all the socials.
by toomuchtodo | 2025-06-27 18:21:38+00:00
Most of financial services undercuts domestic IT and tech labor by laundering H1Bs through TCS (Tata Consulting Services), Wipro, Infosys, and Cognizant contracting.

How Thousands of Middlemen Are Gaming the H-1B Program - https://www.bloomberg.com/graphics/2024-staffing-firms-game-... | https://archive.today/Xlk5j - July 31, 2024

How middlemen are gaming the H-1B program - https://news.ycombinator.com/item?id=41123945 - July 2024
by justaj | 2025-06-27 18:22:03+00:00
Thank you for your extensive reply.

> a flakey feature for new users was (correctly) considered worse than not having a feature at all.

Would you say that implementing a flakey feature in the first place was a bad idea? I'd think that once users get dependant on a certain feature (no matter how lacking in its usefulness), it's going to be tougher for them taking it away than not shipping it in the first place.

> On one server (matrix.org) the room directory is currently locked down to stop it filling up with spam

Yes, that's what I was initially talking about since I'm (mostly) on the matrix.org homeserver. I'm glad this is a temporary situation.

> However, good news is that we've finally moved to Element X Web (codenamed as Aurora: https://github.com/element-hq/aurora),

Oh I wasn't aware of this. This is excellent news! I hope it gets lots of attention in the (near) future. I'm guessing that the enshittification of Discord is about 2 to 3 years away at this point, so I believe having a proper alternative would do wonders for the open ecosystem.

> To improve the UX with clients, we had to improve the protocol.

While I believe this to be the best way forward, was it also the fastest way to acquire a userbase? If we look at Bluesky for instance, they pretty much did the reverse of what Matrix.org did, and (I think) thus was in a position to garner hefty growth as a result.
by yorwba | 2025-06-27 18:22:14+00:00
The problem with giving away weights for free while also offering a hosted API is that once the weights are out there, anyone else can also offer it as a hosted API with similar operating costs, but only the releasing company had the initial capital outlay of training the model. So everyone else is more profitable! That's not a good business strategy.

New entrants may keep releasing weights as a marketing strategy to gain name recognition, but once they have established themselves (and investors start getting antsy about ROI) making subsequent releases closed is the logical next step.
by dathinab | 2025-06-27 18:23:08+00:00
it doesn't need to make sense on a higher abstraction level of logic/semantics

I mean you don't see any of the nonsense in the blog post in any realistic PR (so they don't matter),

but you would run into subtle edge case issues if some expressions where more special then other expressions (so that does matter),

especially in context of macros/proc macros or partial "in-progress" code changes (which is also why `use` allows some "strange" {-brace usage or why a lot of things allow optional trailing `,` all of that makes auto code gen simpler).
by ElevenLathe | 2025-06-27 18:23:46+00:00
Lots of workers would like companies to be like this, but its a prescriptive statement, not a descriptive one.

In reality, we have a system that suppresses wages to the fullest extent possible, and it is getting more and more possible. If you would like "companies" to be like this, you'll need to join with others to build the power to make that happen. This might happen via traditional union organizing, creating alternative structures like worker co-ops to compete directly in the market with the AI slop factories, or via state-level interventions. Presumably all three tactics will be necessary (and possibly some other ones I can't think of or which haven't been invented yet), since the other side has pushed us into this spot using every tool they have access to, legal or not.

It's not the 90s anymore -- we will need to get off our asses and organize if we're going to avoid the worst futures.
by pornel | 2025-06-27 18:23:55+00:00
What's the threat model? If you're reviewing untrusted or security-critical code and it's incomprehensible, for any reason, then it's a reject.

Syntax alone can't stop sufficiently determined fools. Lisp has famously simple syntax, but can easily be written in an incomprehensible way. Assembly languages have very restrictive syntax, but that doesn't make them easy to comprehend.

Rust already has a pretty strong type system and tons of lints that stop more bad programs than many other languages.
by eesmith | 2025-06-27 18:24:08+00:00
That's not Heyerdahl's diffusion model. From https://en.wikipedia.org/wiki/Thor_Heyerdahl

> The expedition was supposed to demonstrate that the legendary sun-worshiping red-haired, bearded, and white-skinned "Tiki people" from South America drifted and colonized Polynesia first, before actual Polynesian peoples. His hyperdiffusionist ideas on ancient cultures had been widely rejected by the scientific community, even before the expedition ....

> Heyerdahl's hypothesis was part of early Eurocentric hyperdiffusionism and the westerner disbelief that (non-white) "stone-age" peoples with "no math" could colonize islands separated by vast distances of ocean water, even against prevailing winds and currents. He rejected the highly skilled voyaging and navigating traditions of the Austronesian peoples and instead argued that Polynesia was settled from boats following the wind and currents for navigation from South America. ...

The genetic evidence does not support his theory.

Nor is it right to attribute the idea of a possible connection to Heyerdahl. Nordenskiöld wrote about "'Oceanian' Cultural Elements in South America" in 1931, https://archive.org/details/09-comparative-ethnographical-st...

> As is well known, we find in South America quite a number of culture elements of which parallels are found in Oceania.1 These we may call ’’Oceanian’’, although this certainly does not imply any proof that they have been imported into America from Oceania. These “Oceanian’’ culture elements may derive their origin from the crew of some weather-driven vessel, because the possibility of such having landed upon the coasts of America is not entirely to be disregarded, as Friederici has fairly convincingly shown.

> [p24]... Friederici has pointed out that there is much which speaks for the theory of weather-driven Oceanian vessels having reached America but nothing of their returning whence they came, or of Indians sailing westward and reaching any Oceanic island. It is important to note that all islands off the South American coast that cannot be seen from the mainland, such as the Galapagos, Juan Fernandez, etc., at the time of the discovery of America were uninhabited and, judging from everything, always had been so.

(I think the Friederici reference is "Zu den vorkolumbischen Verbindungen der Südsee-Völker mit Amerika" - "Regarding the pre-Columbian connections of the South Seas with America", 1929. Heyerdahl was born in 1914, so about 15 years old.)

As I recall, the prevailing hypothesis was that any contact came likely from the Pacific. Heyerdahl didn't believe that was possible, and it must have been the other way. People argued that South Americans didn't have the sailing ability to reach Polynesia. Heyerdahl demonstrated that opposing argument was incorrect, by doing it. That doesn't mean it must have happened.

So, no, Heyerdahl's hypothesis is completely wrong, and the new evidence we have more strongly support older hypotheses by others, which Heyerdahl disagreed with.
by archagon | 2025-06-27 18:24:36+00:00
The eager fascism permeating the industry, the tidal wave of AI propaganda pushing people into tepid custodial work, and the active hostility of executives towards their workers disgusts me and probably means that I won't be touching Silicon Valley tech companies anymore. If anything, I will aim to work against their interests whenever I can.

I still love programming and making things. Fortunately, I have the means to go off and do my own stuff for the foreseeable future.
by kccqzy | 2025-06-27 18:24:50+00:00
GCMap doesn't have a whole lot of different map projections to choose from. Having more than one pair on a single map will result in a pretty bad map projection. That's my biggest complaint. They really need to add more better projections such as Mollweide, Winkel Tripel, Robinson, etc. Or they should just have a globe.
by jfengel | 2025-06-27 18:24:52+00:00
The political situation is complicated.

This administration fuses together a lot of people who otherwise deeply dislike each other. Partly, that involves defeating a common opponent, but more importantly it manages to convince each group that it is taking advantage of the others. They celebrate their gains and smooth over the losses.

There are a lot of people who favor vaccines, but also have a deep distrust of government. It's easy for that group to be told, "You are still getting the important vaccines. Any vaccines we remove were only the result of entrenched government bureaucracy."

You wouldn't expect that to work, and it keeps feeling as if it should turn into a revolt at any moment. But there is also a huge amount of momentum to it -- to say "Hey, you've been taking advantage of me this whole time!" is extremely difficult.
by pmontra | 2025-06-27 18:24:56+00:00
A short word like "that" is read at once, especially because it's common. So no need to backtrack.

A less common word like "phoenitic" or "subvocalizing" is read as you say. However by the end of the sentence we know how to read "phoneme" because we encountered it 3 times in one form or the other.
by bitpush | 2025-06-27 18:26:11+00:00
> Sending this ad is completely destructive to all the hard work other teams at Apple have done to make Apple Wallet actually private — and, more importantly, to get users to believe that it’s private. That Apple can be trusted in ways that other “big tech” companies cannot.

I applaud John for being objective in his analysis, especially for a company that he cares deeply about. That said, I dont like the idea of making it seem like few rogue employees did it. That's not an courtesy we give any other company, and I dont know why we should here.

Make no mistake - Apple Wallet executives were aware of this, and they gave their thumbs up. And we have to trust these very same executives to keep the app private, and who's to say when push comes to shove next time, they wont make another decision for $$?

To make it crystal clear, it isnt a marketing VP sitting her desk making a decision to send this notification. This was done with Apple Wallet VPs sitting in the same room.
by delecti | 2025-06-27 18:27:04+00:00
A large quantity of disposable earplugs is so cheap that I'd recommend you try that before investing time and money into ANC earbuds.

My spouse snores loudly, and a $15 container of 50 pairs has lasted more than 2 years, and saved our ability to co-sleep (I was only a couple nights away from moving to our guest room). We're also on a street with a very permissive speed limit, and we're under the approach path of the nearby airport, and it's never a problem.

https://www.amazon.com/dp/B0051U7W32 I got these, $15 for 50 pairs; the GP comment is $40 for 200 pairs which is a better value but more investment if you wind up dissatisfied
by tialaramex | 2025-06-27 18:28:10+00:00
Do you mean a function which returns "nothing" in the sense that it does return but it has no particular value to return, like Vec::clear which gets rid of the values but preserves the capacity of the container ?

In Rust the return type of this function is the unit type, the empty tuple (). So, the variable has this type, there's no problem with this in Rust, even though some lesser languages can't handle the idea of a type this small.

Or did you mean a function which never returns, like std::process::exit ? In Rust this function's return type is ! the Never type, an empty type that you ordinarily can't name in stable Rust.

Because this type is empty, a variable of this type will evaporate, the compiler knows that we can't bring values into existence if there are no values of that type, the code paths in which this variable exists will never be executed, so no need to emit machine code.

In a language with generic programming like Rust this isn't an error, it's actually a convenience. We can write generic error handling code, and then for cases where there will never be an error our error handling code doesn't even compile, it evaporates entirely, yet for cases which can have actual errors, the error handling code is emitted.
Show HN: Super simple, automated email marketing tool for YouTubers
by greggblanchard | 2025-06-27 18:28:47+00:00
Hey HN!

Email marketing can be super intimidating for people that don't live and breathe it all day long. So even though there’s a growing desire among YouTubers to build an audience they own outside of the whims of the algorithm and email would is the perfect answer to that?

They just don't. Or, even more common, they start and then abandon it a few weeks later.

So I made a tool that makes email marketing as simple as adding a link to your descriptions, cards/end screens, and channel just like they already do for social, Amazon links, Patreon, etc.

Early results are really promising and excited to see more folks give it at try.