MurphyA/hacker-news huggingface dataset:
by commandersaki | 2026-01-04 15:08:21+00:00
This is a great post and meshes with how I like to comment as well. I like to break the so called rules and get a bit dirty when it comes to writing code and comments. My opinion which you state, is to remove the effort from the reader in needing to figure things out a second, third, or n-th time.

Here is one I wrote just to talk about iterating a loop in reverse:

/*
* We iterate the v6 prefixes in reverse from longest prefix length
* to shortest. This is because the ipv6 address is a sequence of bytes,
* and we want to perturb the address iteratively to get the corresponding
* network address without making a copy for each perturbation as that
* would be expensive.
*
* For example take address: abcd:abcd:abcd:abcd:abcd:abcd:abcd:abcd.
*
* With masks /112, /64, /8 we want to create the following network addresses
* to lookup as follows:
*
* Lookup abcd:abcd:abcd:abcd:abcd:abcd:abcd:0000 in /112 bucket
* Lookup abcd:abcd:abcd:abcd:0000:0000:0000:0000 in /64 bucket
* Lookup abcd:0000:0000:0000:0000:0000:0000:0000 in /8 bucket
*
* In any other order aside from most specific to least, we'd have
* to create copies of the original address and apply the mask each
* time to get each network address; whereas in this case we can take
* the same address and clear lower bits to higher bits as we go from
* most specific to least specific masks without incurring any copies.
*/
for (auto it = m_v6_prefixes.crbegin(); it != m_v6_prefixes.crend(); ++it)

Or here is another for masking a v4 address, but also explaining why a uint64 is used (this is calculated in a hot loop [same as the previous comment example], so I felt it was imperative to explain what is going on as there is very little room otherwise to optimise):

for (const auto & [ mask_len, bucket ] : m_v4_prefixes)
{
/*
* Example:
*
* netmask 255.255.128.0 (/17) or 0xffff8000:
*
* 0xffffffff ffffffff << (32-17)
* --------------------------------
* 0xffffffff ffff8000 (shifted left 15)
*
* Applying against address 192.168.85.146 or 0xc0a85592:
*
* (converted to uint64_t due to implicit integer promotion)
*
* 0x00000000 c0a85592
* &
* 0xffffffff ffff8000
* -------------------
* 0x00000000 c0a80000
* -------------------
* 0xc0a80000 (after conversion to uint32_t causing
* lower 32-bit truncation)
*/
std::uint64_t mask = (~0ULL) << (32 - mask_len);
std::uint32_t network_addr = addr & mask;

const auto itt = bucket.find(network_addr);
by echelon | 2026-01-04 15:08:31+00:00
Federer has a 3% ownership stake. That puts his skin in the game. He honestly got too little of a stake for his brand.

If anything, once athletes wake up to the value prop, I'd expect for more brands emerging in the future with athletes taking more control or even owning the brands outright.

It works like gang busters for celebrities launching fashion and cosmetics companies. It's turned dozens of them into billionaires in the last decade - more value creation than their acting or music careers:

Skims (Kim Kardashian), Fenty (Rihanna), Rare Beauty (Selena Gomez), etc. etc.

These companies have $500M ARR+ and aren't even a decade old.

Celebrities are the ideal launching platform for new consumer brands. When your customer spends 30% of their day thinking about celebrities, you've already won them from a marketing perspective.

My wife pays attention to the Kardashians, Hailey Bieber, Millie Bobby Brown, and the like. She knows instantly the moment there's some pop up for one of these brands. A large percentage of women her age do. It's practically the function of Instagram and TikTok to get the message out.

This is huge. Brands anchored by influencers and celebrities capture public attention and consumers have an in-built desire to purchase and support those products.

Celebs constantly show up on social feeds. It's not just free advertising. It's almost like a miasma where consumers live in the personality and the brand. People that follow celebs know about this stuff as much as you or I know about Nvidia or chip shortages. They're as loyal as Nintendo or Valve fans.

Nike has no way to get exposure to this. They have no equity left to give. They could make rev split deals like the Nike Jordan line, but that doesn't come with true ownership or control. The celeb doesn't sit on the board and control the company directly. And celebrities are all about image and control.

I expect more and more celebs and athletes to launch their own brands. It's a free billion dollar opportunity for them. It's the best way for them to capitalize on their status and turn it into a durable platform for their likeness beyond their career's peak.
by dijit | 2026-01-04 15:08:33+00:00
Raises an interesting point.

How large does the canvas need to get before pagination makes sense?

Modern websites are enormous in terms of how much needs to be loaded into memory- sure, not all of it is part of the rendered document, but is there a limit to the canvas size?

I'm thinking you could probably get 100,000+ entries and still be able to use CTRL+F on the site in a responsive way since even at 100,000+ entries you're still only about 10% of Facebooks "wall" application page. (Without additional "infinite scroll" entries)
by abustamam | 2026-01-04 15:09:05+00:00
I think this can be effective if videos are structured properly. The other day I was trying to learn Wan animate and found a comfy ui workflow that game with an hour-long "how-to use" guide. The workflow required some diffusion models that were not listed in the video description, so I had to scrub through the video to find it. I used the auto generated transcription to help me, but even that's kinda shoddy sometimes.

The official ComfyUI tutorials are great — they give you the workflow, they tell you what to download, and they have screenshots of each step of the process, and take maybe 15 mins to follow.

So I think it depends. I don't know why HN is hostile against people who prefer video, it seems like a strange hill to die on, but as with most things in life, there's nuance.
by sph | 2026-01-04 15:09:24+00:00
File it with the footgun of the two different array slicing syntaxes: https://c3-lang.org/language-common/arrays/#slicing-arrays

I have already opened a discussion about this with the author, and I must say I agree to disagree that a language needs arr[start..end] (inclusive) as well as arr[start:len] (up to len-1) and if you use the wrong one, you’ve now lost a foot and your memory is corrupted.
by tokioyoyo | 2026-01-04 15:09:36+00:00
Yeah, unfortunately quality of tooling varies heavily. Like a range of producing garbage, to working code. Claude Code got significantly good in the last couple of months, and it’s been noticeable. I’ve been trying to plug LLMs into my workflow throughout the year, to make sure I don’t fall behind the industry. And this last month was it when it “clicked”. It works in large and small projects as long as you kinda know how to localize the tasks.
by naasking | 2026-01-04 15:09:38+00:00
> I don't believe it is possible (or even makes sense) to completely avoid illegal/invalid objects and structures, and a cheap way to mark these are nil pointers

Obviously we should be able to represent objects with possibly invalid state, but rather than allowing a "possibly invalid value" as a legitimate member of a huge number of types, which is what nil/null permits, the possible invalidity should be it's own type, like a MaybeInvalid<T>. Even languages that bake null checking into the type system are doing this, and then just inserting implicit conversions to/from such a type.
by woodruffw | 2026-01-04 15:09:39+00:00
One of the premises of modern cryptographic engineering is security under a hostile setting: it shouldn’t matter to a chat protocol that a server is proprietary or a network is centralized if the design itself is provably end-to-end encrypted. The server could be run by Satan and it wouldn’t matter.

(Centralization itself is a red herring. One may as well claim that PGP is centralized, given that there’s only one prominent keyserver still limping around the Internet.)

But even this jumps ahead, given that the alternatives are not in fact proprietary. The list of open source tool alternatives has been the same for close to a decade now:

* For messaging/secure communication, use Signal. It’s open source.

* For file encryption, use age. It’s open source and has multiple mature implementations by well-regarded cryptographic engineers.

* For signing, use minisign, or Sigstore, or even ssh signing. All are open source.
by eloisant | 2026-01-04 15:09:59+00:00
Runtime errors are much, much worse than compilation errors and that's why it's such a concern.

There is a dev cycle of local dev, CI, deploy to staging, deploy to production. The later you catch an error, the most expensive it is to fix.

Compilation errors are usually caught during local dev, or occasionally CI (if it's in a module that the dev didn't try to build locally).

A runtime error might not be caught until it reaches production, which not only causes a customer impact but now needs an emergency hotfix to push through the whole pipeline which can be a long process for big companies.
by coder543 | 2026-01-04 15:10:27+00:00
> You’re talking to me like a total idiot, having assumed I know nothing about this.

Sorry I tried to help? If that's the response I get for helping, good luck...

> All I meant was a way to avoid storing images in git, the rest is quite simple.

There is no good way to do that, and no way that I would recommend. Git is the correct solution, if that is where you are storing the markdown. No fancy git tools are required.

> Even unchanging images can soon become a problem causing the repo to bloat with binary data.

Data that is essential to the repo is not bloat.
by DustinEchoes | 2026-01-04 15:11:03+00:00
> Thirty-four young, healthy, seronegative volunteers were inoculated with Wildtype SARS-CoV-2 under prospectively controlled conditions. Volunteers completed daily physiological measurements and computerised cognitive tasks during quarantine and follow-up at 30, 90, 180, 270, and 360 days

> Infected volunteers showed statistically lower baseline-corrected global composite cognitive scores than uninfected volunteers, both acutely and during follow up

The deficits persisted even a year after infection. This study is the strongest evidence yet that COVID infection causes permanent brain damage.
by hagbard_c | 2026-01-04 15:11:05+00:00
If there were a string in the mail slot in the house where I grew up it would not end well, unfortunately. Even the mail slot itself is suspect since these have been used by burglars to open unlocked doors (metal wire through the slot, easy), by vandals to throw in fireworks (one house burned down that way), by creeps to pee through it (another house in the same area), by other vandals to put a garden hose in to flood the hallway just for kicks, etc.

This was in Amstelveen, to the south of Amsterdam. Where do you live?
by PaulHoule | 2026-01-04 15:11:47+00:00
I was never a big fan of Nike shoes but there was a time I loved the socks and underwear and if I was working in LA or NYC I would usually go down with a light loadout, buy a cheap canvas bag, and load up at the Nike store.

My understanding was that any Nike stuff you found online was fake, I guess Dick's Sporting Goods in person was legit, but no way I'd buy any of it from AMZN, Ebay, any of that.

If I was getting it online I'd get it straight from Nike. So I was comfortable engaging with Nike DTC but... they changed the product and it went from great to meh so I moved on.

Those mass-market premium brands though are ground zero for fakes. If I was buying Ralph Lauren perfume I'd be worried about fakes, if it was Maison Margiela I would assume neither the scammers or the people who buy fakes had ever heard about it.
by jerf | 2026-01-04 15:11:57+00:00
The problem with NULL is that it is forcibly adjoined as a value the compiler considers valid to every pointer type. In the languages in question, you can't have a non-nil pointer, no matter how much you might want one.

I do agree that it is, on its own, not necessarily the large problem it is made out to be. One nice thing about NULL dereferences is that they tend to be visible and obvious. They crash things and make lots of noise. As invalid values go, they're actually on the friendlier side. The invalid values that silently sail through your program, corrupting everything they touch, but never crashing anything, are far more dangerous. In fact one of the worst possible solutions to a NULL is to default it to some value, especially one like "0" that looks like half the other values in your program.

The dangers of NULL are somewhat oversold because they are cognitively-available dangers. We see the crashes. We see the failures. But those are far better than the failures we don't see, and the crashes we see only much later, sometimes years later. (Don't ask me about the legacy billing systems I've been trying to deal with.)

But was it a billion dollar mistake? Still yes, because having a type that forces this value on to the legal set is still a mistake and has still caused lots of problems that could have been avoided. In addition to that billion dollar mistake, there has also been a lot of code written that has made similar mistakes of allowing similarly illegal values representable in the code, and that has also been a huge mistake. Perhaps a larger one, perhaps not. Hard to get an objective measure of these two mistakes, both huge, both frequent, both highly impactful.

Ultimately, though, the NULL pointer is just a particular instantiation of the general problem of allowing illegal states to be represented, and of that class of problem, it is probably one of the least harmful examples of it... unless you overly avail yourself of all of those "a?.b?.c?.d" operators and "upgrade" your NULL issues into something that sprays illegal and/or incorrect values through your code instead. I really don't like those things being so convenient to hand, they encourage people to jump from the frying pan into the fire too often.
by simon_void | 2026-01-04 15:12:02+00:00
I really like languages with non-/nullable types like Kotlin and Rust! I used to work with Java for over a decade and therefore used to code very defensively against NullPointerException and now (with Kotlin) I just don't have to do this anymore.
That being said there are two possible sources of nullpointers: from inside your program or from outside (e.g. the json your server got send wasn't fully initialized). The majority of NullPointers come from outside in my experience. Nullpointers from within you have to fix mostly once. but there's no end to what data send to you from outside your control can be missing.
Of course you still have to validate/parse outside data when using Kotlin but since the type system then carries on which data has been validated, you can drop the defensive mindset that was appropriate in Java.

So if you have a self-contained, non-safety critical project and want to use/try out an arena-allocated memory approach using Odin seems fine (e.g. looking at you: "raytracing in a weekend").

So yeah, I think there's a niche of projects where the possibility of null pointers isn't a huge deal.

None of my work-related projects fall in that category though :D
by mapontosevenths | 2026-01-04 15:12:03+00:00
You made the mistake of believing that Trump is more than a zero step thinker. Many do.

The fact is, his tactics and plans end where his nose does.

Many of his advisors are capable of planning, but there are times he just doesnt listen to them and lets whatever heavy metals are in the spray tan do all the thinking. See January Sixth for one example that got people killed. See USAID for another.
by seanwilson | 2026-01-04 15:12:12+00:00
> That's especially odd as I think those links were the defaults from the Archie theme

Internal redirects are really easy to miss without checking with a tool because browsers aren't noisy about it. Lots of sites have unnecessary redirects from URLs that use http:// instead of https://, www vs no-www, and missing/extra trailing slashes, where with some redirect configs you can get a chain of 2 or 3 redirects before you get to the destination page.
by svara | 2026-01-04 15:12:38+00:00
I've also not had great experiences with giving it tasks that involve understanding how multiple pieces of a medium-large existing code base work together.

If that's most of what you do, I can see how you'd not be that impressed.

I'd say though that even in such an environment, you'll probably still be able to extract tasks that are relatively self contained, to use the LLM as a search engine ("where is the code that does X") or to have it assist with writing tests and docs.
by jtbayly | 2026-01-04 15:12:53+00:00
But how in the world will you shove a decent search into a static site?

I really want to know because there is a Drupal 7 site that I need to migrate to something but I need good search on it (I’m using solr now).

Edit: I should have specified that I need more functionality than just word searching. I need filtering (ie faceted search) too. I’ve used a SSG that uses a JavaScript index and appreciate it, but that’s not going to cut it for this project.
by Joel_Mckay | 2026-01-04 15:13:02+00:00
From the Linux users choice of:

1. outdated legacy OS that has to rely on a limited subset of flatpack, snap, containerization, and CVEs...

2. modern OS with unfix-able driver issues, NVIDIA wanting people to buy a new GPU, and broken abandonware drivers

I'd say a bricked GPU is appropriate terminology, as your screen will be forced into 800x600 by the hardware recovery mode and be functionally useless. For Linux users the only solution is to buy a compatible GPU, and or throw away the laptop/tablet/phone devices that can't run legacy Windows drivers.

When the collapse cycle of spiral development happens: a lot of Applications are also lost in the process, as the original publishers may not be maintaining an application a decade later. dkms with mystery Blobs would fall into the same out-of-band classification.

It is funnier people are upset about slop articles nonsense assertions.

The question about whether something is qualitatively "good" is meaningless if its demonstrably broken. =3
by leosanchez | 2026-01-04 15:13:32+00:00
> And they managed to end slavery and the caste system while they were there (that unfortunately came back as soon as India got independent again).

1. Did they really end slavery if you rename it to something else? [0]

2. You didn't end caste system. If anything you made it more rigid

> No need to thank the “Europeans”. You’re welcome.

Thank you for all the massacres and famines Europeans. [1] [2]

[0]. https://en.wikipedia.org/wiki/Indian_indenture_system

[1]. https://www.theguardian.com/commentisfree/2019/apr/12/britai...

[2]. https://en.wikipedia.org/wiki/Bengal_famine_of_1943

I didn't even scrape the surface of the atrocities you did.
by lazarus01 | 2026-01-04 15:13:32+00:00
That's a great question. Machine Learning is the overarching space where deep learning is a subspace of machine learning. So if you grasp some basic concepts of machine learning, then you can apply them to deep learning.

All the exciting innovation over the past 13 years comes from deep learning mainly in working with images and natural language.

Machine learning is good for tabular data problems, particularly decision trees, that work well to reduce uncertainty for business outcomes, like sales and marketing as one example.

Machine Learning Basics:

Linear regression - Y = Mx + B (predicts a future value)
Classification (logistic regression) - Y = 1 / 1 + e^-(b0 + b1x) (predicts probability of a class or future event)

There is a common learning process between the two called gradient descent. It starts with the loss function, that measures the error between predictions and ground truth, where you backpropogate the errors as a feedback signal to update the learned weights which are the parameters of your ml model which is a more meaningful representation of your dataset that you train on.

In deep learning it's more appropriate for perception problems, like vision ,language and time sequences. It gets more complex where you are dealing with significantly more parameters in the millions, that are organized in hierarchical layer representation.

There are different layers for different types of learning representation, Convolutions for Images and RNN for Sequence to Sequence learning and many more examples of layers, which are the basis of all deep learning models.

So there is a small conceptual overlap; but I would say deep learning has a wider variety of interesting applications, is much more challenging to learn, but not impossible by any stretch.

There is no harm in giving it a try and diving in. If you get lost and drown in complexity, start with machine learning. It took me 3 years to grasp, so it's a marathon, not a sprint.

Hope this helps
by woodruffw | 2026-01-04 15:13:37+00:00
I think GP’s point isn’t that you don’t have the freedom to decide your own interoperability (you clearly do), but that the primary remaining benefit of PGP as an ecosystem is that interoperability. If you’re throwing that away, then there’s very little reason to shackle yourself to a larger design that the cryptographic community (more or less) unanimously agrees is dangerous and antiquated.
by weli | 2026-01-04 15:14:07+00:00
Unrelated, but I want to move from a Google account youtube feed to something a bit more client-side where I have the control but my main problem is the YouTube recommendation algorithm.

I feel like after a decade and a half google knows pretty well what I like and what I'm interested in. I built that homepage brick by brick.

Whenever I tried other youtube clients or ungoogled alternatives the recommendations were all really generic and not that good. Of course I won't find something that matches the real deal, but at least I want to:

1. Steer away from viral content, aka Mr Beast videos or whatever.
2. Have discoverability of youtube videos I would be interested in but that I'm not subscribed to yet.

To this day I still find new channels or videos I'm really interested in on my recommended feed.
by wpietri | 2026-01-04 15:14:31+00:00
Right? It's a perfect example of the problem.

In college, I worked tech support. My approach was to treat users as people. To see all questions as legitimate, and any knowledge differential on my part as a) the whole point of tech support, and b) an opportunity to help.

But there were some people who used any differential in knowledge or power as an opportunity to feel superior. And often, to act that way. To think of users as a problem and an interruption, even though they were the only reason we were getting paid.

I've been refusing to contribute to SO for so long that I can't even remember the details. But I still recall the feeling I got from their dismissive jackassery. Having their content ripped off by LLMs is the final blow, but they have richly earned their fate.
by broken-kebab | 2026-01-04 15:14:35+00:00
I like your version, and it's certainly possible to split too much without any practical result just for the dogma. But wrt the particular example I can see what's going on with a glance over the split part, while I have to focus at the commented one. Comments themselves can be helpful, but they can also be misleading cause code and coder's thoughts are not guaranteed to be in harmony all the time.