frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

WASM 3.0 Completed

https://webassembly.org/news/2025-09-17-wasm-3.0/
645•todsacerdoti•6h ago•258 comments

A postmortem of three recent issues

https://www.anthropic.com/engineering/a-postmortem-of-three-recent-issues
160•moatmoat•3h ago•58 comments

Apple Photos app corrupts images

https://tenderlovemaking.com/2025/09/17/apple-photos-app-corrupts-images/
951•pattyj•13h ago•364 comments

What's New in C# 14: Null-Conditional Assignments

https://blog.ivankahl.com/csharp-14-null-conditional-assignments/
58•ivankahl•2d ago•26 comments

Boring Is Good

https://jenson.org/boring/
29•zdw•2d ago•5 comments

Optimizing ClickHouse for Intel's 280 core processors

https://clickhouse.com/blog/optimizing-clickhouse-intel-high-core-count-cpu
132•ashvardanian•5h ago•34 comments

DeepMind and OpenAI win gold at ICPC

https://codeforces.com/blog/entry/146536
148•notemap•6h ago•158 comments

YouTube addresses lower view counts which seem to be caused by ad blockers

https://9to5google.com/2025/09/16/youtube-lower-view-counts-ad-blockers/
257•iamflimflam1•10h ago•522 comments

Ton Roosendaal to step down as Blender chairman and CEO

https://www.cgchannel.com/2025/09/ton-roosendaal-to-step-down-as-blender-chairman-and-ceo/
216•cma•7h ago•41 comments

Tinycolor supply chain attack post-mortem

https://sigh.dev/posts/ctrl-tinycolor-post-mortem/
123•STRiDEX•7h ago•50 comments

Understanding Deflate

https://jjrscott.com/to-deflate-or-not/
36•ingve•3d ago•0 comments

Drought in Iraq reveals tombs created 2,300 years ago

https://www.smithsonianmag.com/smart-news/severe-droughts-in-iraq-reveals-dozens-of-ancient-tombs...
92•pseudolus•7h ago•11 comments

Gluon: a GPU programming language based on the same compiler stack as Triton

https://github.com/triton-lang/triton/blob/main/python/tutorials/gluon/01-intro.py
51•matt_d•4h ago•15 comments

U.S. investors, Trump close in on TikTok deal with China

https://www.wsj.com/tech/details-emerge-on-u-s-china-tiktok-deal-594e009f
343•Mgtyalx•1d ago•415 comments

Launch HN: RunRL (YC X25) – Reinforcement learning as a service

https://runrl.com
50•ag8•8h ago•14 comments

Ask HN: What's a good 3D Printer for sub $1000?

137•lucideng•2d ago•173 comments

DeepSeek writes less secure code for groups China disfavors?

https://www.washingtonpost.com/technology/2025/09/16/deepseek-ai-security/
219•otterley•7h ago•137 comments

Alibaba's new AI chip: Key specifications comparable to H20

https://news.futunn.com/en/post/62202518/alibaba-s-new-ai-chip-unveiled-key-specifications-compar...
248•dworks•14h ago•266 comments

Grade 2 Braille

https://en.wikipedia.org/wiki/English_Braille
4•admp•3d ago•0 comments

Infinite Mac: Resource Fork Roundtripping

https://blog.persistent.info/2025/09/infinite-mac-resource-forks.html
28•tobr•1d ago•4 comments

Event Horizon Labs (YC W24) Is Hiring

https://www.ycombinator.com/companies/event-horizon-labs/jobs/U6oyyKZ-founding-engineer-at-event-...
1•ocolegro•7h ago

Tau² benchmark: How a prompt rewrite boosted GPT-5-mini by 22%

https://quesma.com/blog/tau2-benchmark-improving-results-smaller-models/
159•blndrt•11h ago•49 comments

Depression reduces capacity to learn to actively avoid aversive events

https://www.eneuro.org/content/12/9/ENEURO.0034-25.2025
173•PaulHoule•7h ago•42 comments

UUIDv47: Store UUIDv7 in DB, emit UUIDv4 outside (SipHash-masked timestamp)

https://github.com/stateless-me/uuidv47
140•aabbdev•10h ago•65 comments

Anthropic irks White House with limits on models’ use

https://www.semafor.com/article/09/17/2025/anthropic-irks-white-house-with-limits-on-models-uswhi...
212•mindingnever•6h ago•112 comments

Just for fun: animating a mosaic of 90s GIFs

https://alexplescan.com/posts/2025/09/15/gifs/
40•Bogdanp•1d ago•8 comments

Famous cognitive psychology experiments that failed to replicate

https://buttondown.com/aethermug/archive/aether-mug-famous-cognitive-psychology/
129•PaulHoule•5h ago•94 comments

Determination of the fifth Busy Beaver value

https://arxiv.org/abs/2509.12337
244•marvinborner•14h ago•105 comments

Pg_links

https://giulianopz.github.io/pg.html
27•giulianopz•2h ago•1 comments

How to motivate yourself to do a thing you don't want to do

https://ashleyjanssen.com/how-to-motivate-yourself-to-do-a-thing-you-dont-want-to-do/
257•mooreds•9h ago•194 comments
Open in hackernews

What's New in C# 14: Null-Conditional Assignments

https://blog.ivankahl.com/csharp-14-null-conditional-assignments/
58•ivankahl•2d ago

Comments

wslh•1h ago
Isn't this more confusing? Because it skip the code if the value is null and I don't think it is normal to follow the flow assuming nothing has happened.
cjbgkagh•1h ago
It’s for the use case where they’d skip it anyway so that would be intended behavior.
accrual•1h ago
> I don't think it is normal to follow the flow assuming nothing has happened.

I think it is for situations where the programmer wants to check a child property but the parent object may be null. If the parent is expected to be null sometimes, the syntax lets the programmer express "try to get this value, but if we can't then move on" without the boilerplate of explicitly checking null (which may be a better pattern in some cases).

It's sort of like saying:

- Get the value if you can, else move on. We know it might not be there and it's not a big deal.

v.s.

- The value may not be there, explicitly check and handle it because it should not be null.

BoiledCabbage•8m ago
Your summary is almost correct but replace where you used "get" with "set".
electroly•1h ago
That's already the case for the null coalescing operator when it ends in a method call: the method call is skipped if the base is null. For instance, we can invoke event handlers with "myEvent?.Invoke(...);" and the call will be skipped if there are no event handlers registered, and this is the canonical way to do it.
gus_massa•1h ago
From the article:

> If config?.Settings is null, the assignment is skipped.

If the right hand expression has side effects, are they run? I guess they do, and that would make the code more predictable.

sieep•1h ago
Looks interesting & I'm excited to try this out myself. I like the more verbose null/error handling personally in professional code, but maybe that's because im still working in framework! I'll certainly be using these in my personal projects that'll be on .NET 10
actionfromafar•1h ago
You can use newer LangVersion in framework too.
coneonthefloor•1h ago
I’d rather be explicit. If the value is null then it should be explicitly handled.

I feel like this is another step in the race to add every conceivable feature to a language, for the sake of it.

xboxnolifes•46m ago
This is explicit though. The question mark operator is the developer explicitly asking for this behavior.
zulu-inuoe•1h ago
I'm looking forward to being able to use this. It doesn't sound like much but those extra three lines and variable assignment is duplicated a ton of times across our codebase so it'll be a nice change
reactordev•1h ago
Love to see conciseness for the sake of readability. Honestly I thought this was already a thing until I tried it a year ago…

I’m glad it’s now a thing. It’s an easy win, helps readability and helps to reduce the verbosity of some functions. Love it. Now, make the runtime faster…

kazinator•56m ago
Null conditional assignment is bunk.

When you have an expression P which names a mutable place, and you execute P := X, the contract says that P now exhibits the value X, until it is assigned another value.

Conditional assignment fucks this up. When P doesn't exist, X is not stored. (Worse, it may even be that the expression X is not evaluated, depending on how deep the fuckery goes.)

Then when you access the same expression P, the conditional assignment becomes conditional access and you get back some default value like a nil.

Store X, get back nil.

That's like a hardware register, not a durable memory model.

It's okay for a config.connection?.retryPolicy to come up nil when there is no config.connection. It can be that the design makes nil a valid retry policy, representing some default. Or it could be that it is not the case, but the code which uses connection? handles the nil soon afterward.

But a store to config.connection?.retryPolicy not having an effect; that is dodgy.

What you need for config.connection? to do when the expression is being used to calculate a mutable place to assign to is to check that config.connection is null, and in that case, instantiate a representative instance of something which is then assigned to config.connnection, such that the config.connection.retryPolicy place then exists and the assignment can proceed.

This recognizable as a variation on COW (copy-on-write); having some default instance for reading, but allocating something on writing.

In a virtual memory system, freshly allocated memory can appear to contain zero bytes on access due to all of its pages being mapped to a single all-zero frame that exists in the entire system. Conceptually, the hardware could do away with even that all-zero frame and just have a page table entry which says "this is a zero-filled page", so the processor then fakes out the zero values without accessing anything. When the nonexistent page is written, then it gets the backing storage.

In order to instantiate settings.connection? we need to know what that has to be. If we have a static type system, it can come from that: the connection member is of some declared type of which a representative instance can be produced with all constructor parameters defaulted. Under a dynamic paradigm, the settings object can have a handler for this: a request to materialize a field of the object that is required for an assignment.

If you don't want a representative config.connection to be created when config.connection?.retryPolicy is assigned, preferring instead that config.connection stays null, and the assignment is sent to the bit buckets, you have incredibly bad taste and a poor understanding of software engineering and programming language design --- and the design of your program is scatter-brained accordingly.

rkagerer•52m ago
More concise? Yes.

More readable? I'm less convinced on that one.

Some of those edge cases and their effects can get pretty nuanced. I fear this will get overused exactly as the article warns, and I'm going to see bloody questions marks all over codebases. I hope in time the mental overhead to interpret exactly what they're doing will become muscle memory...

arwhatever•35m ago
What?.could?.possibly?.go?.wrong?.
esafak•25m ago

    if (This) {
        if (is) {
            if (much) {
                if (better) {
                    println("I get paid by the brace")
                }
            }
        }
    }
muti•20m ago

  if (!same) {
    return;
  }

  if (!number) {
    return;
  }

  if (!of_braces) {
    return;
  }

  println("but easier to read")
esafak•14m ago
Yes, you should definitely unnest functions and exit early. But the null-coalesced version is shorter still.
kazinator•14m ago
False dichotomy. The problem is that the syntax implements a solution that is likely wrong in many situations and pairs with a bad program design. Maybe when we have this:

  what?.could?.possibly.go?.wrong = important_value()
Maybe we want code like this:

  if (!what)
    what = new typeof(what); // default-construct representative instance

  if (!what.could)
    what.could = new typeof(what.could);


  if (!what.could.possibly.go)
    what.could.possibly.go = new typeof(what.could.posssibly.go)


  // now assignment can take place and actually retain the stored value
  // since we may have allocated what, we have to be sure
  // we propagate it out of here.

  what.could.possibly.go.wrong = important_value();

and not code which throws away the value (and possibly its calculation).

Why would you ever write an assignment, but not expect that it "sticks"? Assignments are pretty important.

What if someone doesn't notice the question marks and proceeds to read the rest of the code thinking that the assignment always takes effect? Is that still readable?

kazinator•20m ago
Nothing to worry about:

  What?.could?.possibly?.go?.wrong?
Not so convinced:

  What?.could?.possibly?.go?.wrong = important_value()
Maybe the design is wrong if the code is asked to store values into an incomplete skeleton, and it's just okay to discard them in that case.
h4x0rr•21m ago
Oh come on just learn it properly it's not a big deal to read it
billmcneale•30m ago
> if (customer?.Profile is not null) >{ > // Null-coalescing (??) > customer.Profile.Avatar = request.Avatar ?? "./default-avatar.jpg"; >}

Isn't this over engineered? Why not allow the assignment but do nothing if any of the intermediate objects is null (that's how Kotlin does it).

LelouBil•25m ago
That's what's new in c#14, it allows you to do

    customer?.Profile?.Avatar = "thing" 
And will do nothing if the left hand side is null (not throw a null reference exception anymore)
LelouBil•24m ago
I'm working on a Unity game and I'm so annoyed I can't use all of the new fancy c# features
drzaiusx11•17m ago
So like ruby's '&.' null safe chaining
tialaramex•15m ago
At least so far, my instinct is that we should turn this off/ ensure it is never turned on, as it seems likely to be a foot gun.

I couldn't imagine what a "Null-Conditional Assignment" would do, and now I see but I don't want this.

Less seriously, I think there's plenty of April Fools opportunity in this space. "Null-Conditional Function Parameters" for example. Suppose we call foo(bar?, baz?) we can now decide that because bar was null, this is actually executing foo(baz) even though that's a completely unrelated overload. Hilarity ensues!

Or what about "Null-Conditional Syntax". If I write ???? inside a namespace block, C# just assumes that when we need stuff which doesn't exist from this namespace it's probably just null anyway, don't stress. Instead of actual work I can just open up a file, paste in ???? and by the time anybody realises none of my new "classes" actually exist or work I've collected my salary anyway.