frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Libghostty is coming

https://mitchellh.com/writing/libghostty-is-coming
301•kingori•5h ago•70 comments

Find SF parking cops

https://walzr.com/sf-parking/
188•alazsengul•1h ago•106 comments

Android users can now use conversational editing in Google Photos

https://blog.google/products/photos/android-conversational-editing-google-photos/
79•meetpateltech•2h ago•60 comments

Markov chains are the original language models

https://elijahpotter.dev/articles/markov_chains_are_the_original_language_models
76•chilipepperhott•4d ago•23 comments

How to draw construction equipment for kids

https://alyssarosenberg.substack.com/p/how-to-draw-construction-equipment
15•holotrope•31m ago•2 comments

Launch HN: Strata (YC X25) – One MCP server for AI to handle thousands of tools

90•wirehack•4h ago•47 comments

Go has added Valgrind support

https://go-review.googlesource.com/c/go/+/674077
397•cirelli94•10h ago•100 comments

From MCP to shell: MCP auth flaws enable RCE in Claude Code, Gemini CLI and more

https://verialabs.com/blog/from-mcp-to-shell/
74•stuxf•4h ago•24 comments

Always Invite Anna

https://sharif.io/anna-alexei
318•walterbell•4h ago•23 comments

Mesh: I tried Htmx, then ditched it

https://ajmoon.com/posts/mesh-i-tried-htmx-then-ditched-it
113•alex-moon•7h ago•78 comments

Nine things I learned in ninety years

http://edwardpackard.com/wp-content/uploads/2025/09/Nine-Things-I-Learned-in-Ninety-Years.pdf
825•coderintherye•16h ago•316 comments

x402 — An open protocol for internet-native payments

https://www.x402.org/
167•thm•5h ago•86 comments

Getting AI to work in complex codebases

https://github.com/humanlayer/advanced-context-engineering-for-coding-agents/blob/main/ace-fca.md
103•dhorthy•5h ago•103 comments

Getting More Strategic

https://cate.blog/2025/09/23/getting-more-strategic/
126•gpi•6h ago•18 comments

Restrictions on house sharing by unrelated roommates

https://marginalrevolution.com/marginalrevolution/2025/08/the-war-on-roommates-why-is-sharing-a-h...
247•surprisetalk•5h ago•287 comments

Thundering herd problem: Preventing the stampede

https://distributed-computing-musings.com/2025/08/thundering-herd-problem-preventing-the-stampede/
17•pbardea•19h ago•6 comments

Structured Outputs in LLMs

https://parthsareen.com/blog.html#sampling.md
172•SamLeBarbare•9h ago•80 comments

OpenDataLoader-PDF: An open source tool for structured PDF parsing

https://github.com/opendataloader-project/opendataloader-pdf
64•phobos44•5h ago•17 comments

Agents turn simple keyword search into compelling search experiences

https://softwaredoug.com/blog/2025/09/22/reasoning-agents-need-bad-search
48•softwaredoug•5h ago•19 comments

Zinc (YC W14) Is Hiring a Senior Back End Engineer (NYC)

https://app.dover.com/apply/Zinc/4d32fdb9-c3e6-4f84-a4a2-12c80018fe8f/?rs=76643084
1•FriedPickles•7h ago

Denmark wants to push through Chat Control

https://netzpolitik.org/2025/internes-protokoll-daenemark-will-chatkontrolle-durchdruecken/
12•Improvement•32m ago•1 comments

Zoxide: A Better CD Command

https://github.com/ajeetdsouza/zoxide
277•gasull•14h ago•174 comments

Shopify, pulling strings at Ruby Central, forces Bundler and RubyGems takeover

https://joel.drapper.me/p/rubygems-takeover/
272•bradgessler•4h ago•149 comments

YAML document from hell (2023)

https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell
168•agvxov•10h ago•110 comments

Show HN: Run Qwen3-Next-80B on 8GB GPU at 1tok/2s throughput

https://github.com/Mega4alik/ollm
86•anuarsh•4d ago•8 comments

Smooth weighted round-robin balancing

https://github.com/nginx/nginx/commit/52327e0627f49dbda1e8db695e63a4b0af4448b1
17•grep_it•4d ago•2 comments

Processing Strings 109x Faster Than Nvidia on H100

https://ashvardanian.com/posts/stringwars-on-gpus/
158•ashvardanian•4d ago•23 comments

Show HN: Kekkai – a simple, fast file integrity monitoring tool in Go

https://github.com/catatsuy/kekkai
40•catatsuy•5h ago•9 comments

Permeable materials in homes act as sponges for harmful chemicals: study

https://news.uci.edu/2025/09/22/indoor-surfaces-act-as-massive-sponges-for-harmful-chemicals-uc-i...
93•XzetaU8•10h ago•82 comments

Show HN: FlyCode – Recover Stripe payments by automatically using backup cards

12•JakeVacovec•3h ago•29 comments
Open in hackernews

Imagining a language without booleans

https://justinpombrio.net/2025/09/22/imagining-a-language-without-booleans.html
43•todsacerdoti•21h ago

Comments

Aardwolf•2h ago
So basically, C before version C99
Y_Y•2h ago
https://en.wikibooks.org/wiki/Haskell/Understanding_monads/M...

This looks homeomorphic to the Maybe monad.

nh23423fefe•2h ago
isomorphic?

homeo implies continuity

Y_Y•4m ago
And continuous inverse! I was just being silly, you're right of course.
Retr0id•2h ago
funny, I've been toying with the idea of a language with only booleans
f1shy•2h ago
Wouldn’t that just be logic gates, Mealy and Moore machines written in text form?
Retr0id•1h ago
Yes. Except, the language should be expressive enough that you can build abstractions and write "normal" code. And, the compiler should be smart enough to emit efficient native code for your target arch (and not doing FPGA-style hardware synthesis)
zoky•1h ago
Well, that’s true and false.
seanhunter•2h ago
Imagine a language that not only doesn't have booleans, it only has positive fractions. It also doesn't have any keywords, yet it is Turing-complete.

Struggling to imagine it? Don't worry. John H Conway has done it for you.

https://en.wikipedia.org/wiki/FRACTRAN

nh23423fefe•2h ago
Not really without. More like obscured booleans, 2 embeds into T+1 which embeds into T+U. I mean C used the sign bit to do the same.
brador•2h ago
Booleans are a remnant of limited RAM.

2025, we can all just use integers and carry one less variable type in our sack.

Next we replace integers with floats and we’re done. 3 birds, 1 stone.

legacynl•1h ago
We could just use 2 integers for floats and not deal with inaccuracies. Even easier.
aDyslecticCrow•1h ago
Floats can represent faaar bigger span than two integers. 2*10^-308 to 2*10^+308 is gonna require you 1024 bits or 32 integers. Now those 32 integers would represent that value exactly instead of rounding a few decimals, but some maths prefer approximate large span over exact values.
aDyslecticCrow•1h ago
> Booleans are a remnant of limited RAM.

I highly doubt that. Let's call a boolean that is represented as one bit "true boolean type" Since no instruction set (that i'm aware of) has boolean operators, a "true boolean" would require every operation on it to evaluate to multiple bit-wise operations, which take up registers and cycles. Flags in registers are "true boolean", but they're usually operated on explicitly like int with bit-wise operators.

There is also the issue of bit alignment, atomic access, and stack and heap allocations being byte based; further restricting how a language that had "true booleans" would be able to actually be able to work with them.

I know that there are some languages that allow boolean arrays to be packed tightly as "true boolean", but that is a rare exception. Even char and byte types has this issue sometimes, but are more commonly "properly packed".

> we can all just use integers

So it's all integers already. The most common implementation of boolean around is probably #define true 1

But we really should use enums more instead of boolean. "fail, success, bad_param, error_404" is equally efficient to return as a bool.

> Next we replace integers with floats.

No. (well python and JavaScript kinda does already, but no) https://en.wikipedia.org/wiki/Pentium_FDIV_bug

GLdRH•1h ago
Why not only have strings? "zero", "one", "two", ... "threepointonefourone..."
CorrectHorseBat•34m ago
Congratulations, you have invented tcl
jbreckmckye•1h ago
Floats are an excellent choice because they encode the inevitable ambiguity of the world. Instead of true and false we can have

    true    = 1
    false   = 0
    perhaps = 0.5
mattkrause•58m ago
And now you've invented Church (among others)!
immibis•1h ago
We could just use strings for everything, like bash, and tcl, and the weird scripting language embedded in every mid-2000s FPS game.
munificent•2h ago
Really cool post. I've had roughly similar thoughts when noodling on my current hobby language [1], but didn't work all the way through it to see if it hangs together. It seems like it might!

> Let me know if you’ve seen anything more similar.

If you take static typing off the table, then Icon's goal-directed execution is very much an inspiration in this area.

[1]: https://journal.stuffwithstuff.com/2023/01/03/type-checking-...

jbreckmckye•2h ago
Now that we have defined a language without booleans, we need some way to coalesce these optional values

We ideally want an infix function that can reduce the "truthiness" of two values.

Let us imagine this language is a Haskell-type-thing, and we can define pseudo-operators with pattern matching

    infixr 3 &&
    (&&) :: Optional -> Optional -> Optional
    Empty && _       = Empty
    _ && Empty       = Empty
    Some A && Some B = Some A
    _ && _           = Empty

    infixr 2 ||
    Some || _     = Some
    None || Some  = Some
    None || None  = None
    _    || _     = None 
Hmm, let's see how that looks

    a = b && c
    d = e || f
The good news is that we are free from the tyranny of booleans. The bad news is that we just reinvented JavaScript :-)
BriggyDwiggs42•1h ago
I honestly really like those two operators in js.
melncat•1h ago
Don't forget about ?? as well
jbreckmckye•1h ago
I'm a big fan of the Elvis operator myself (.?)
chuckadams•43m ago
.? is null-safe property access. Elvis is ?:
jbreckmckye•29m ago
Oh, that makes more sense, because ?: has eyes

https://en.m.wikipedia.org/wiki/Elvis_operator

?:-)

kmill•52m ago
That second operator is the <|> operator, from the Alternative typeclass.

The first one has some arbitrariness (do you take the left or right value if both are Just). But, thankfully the Applicative typeclass gives both <* and *>, which lets you choose which value you want:

  Just A <* Just B = Just A
  Just A *> Just B = Just B
(There's the possibility to merge values too, with f <$> Just A <*> Just B, which evaluates to Just (f A B). I feel like this is a "don't try to understand it, just get used to it" sort of syntax. It can be pretty convenient though.)
legacynl•1h ago
I don't really get it.. In one of the last example's he writes:

` if (node.last_child(s) is Ok(last_child))`

Is the part between the () not ultimately the same as a boolean expression? Like he wrote his own implementation of if/else syntax?

Also in the beginning he says: "An if with an else can produce a value", but isn't this just 'syntactic sugar'? I think the code that actually runs is the same as if you'd write if (value x = some_value) {value = something} else {value = something_else} ?

myhf•1h ago
This concept doesn't require the Law of Excluded Middle that classical boolean values do.
legacynl•1h ago
Ah alright, since I don't know what that is I will attribute it to my own lack of knowledge then.
IAmBroom•20m ago
Basically, the Excluded Middle is for things neither True nor False.
asplake•1h ago
Perhaps it’s cheating, but last I checked, Gleam has no “if”, only “match”. With that, and in languages with sum types, you can easily define your own boolean and boolean-adjacent types.
rhaps0dy•1h ago
Basically Emacs Lisp. Where `nil` is the only falsy value, and anything else (including `t`, which analogizes to `Some(())`) are truthy values.
nahumba•1h ago
Headline no bit. Then attack if.

There would be no branching if there were no "if". It's basic assembly. Not jumps. No loops.

moltar•55m ago
Perl
weatherlight•29m ago
I can. it's called Erlang. true an false are just atoms.
jerf•23m ago
Unfortunately, you're invariably going to end up with a "Some<false>" at some point, and you're going to spend the next 20 years explaining to people why that's not a wart in your language that your if "treats it as true", no matter how much you say "my language doesn't even have true so that's not a valid statement".

It isn't going to matter that it's technically a "JSON::false" or whatever... you're still going to get people calling that a wart forever. ("But a JSON::false would be a None" - no, you need that for either "null" or "missing". A JSON library has to have an exposed "false" value to distinguish it from null and missing, both for input and output.)

I'm not saying that doesn't mean to try this out, but as more of a heads up and something to talk about explicitly in the eventual tutorial.

Personally, I find myself fairly satisfied with if statements rigidly requiring a boolean and refusing to have a concept of "truthiness", which I consider a mistake, and I'm not sure this is solving real problems I've had. A user can always write the Option vs. None themselves in an if statement with mandatory else if they want. This introduces a wrapper level of Option that may not always play nice in real code (I mean, a lot of sum type types essentially already have it built in with things like "type Color = Red | Blue | Green | Unspecified" where adjoining a None is often unnecessary) and may really tempt you towards a concept of truthiness that may be a bigger wart than when you're trying to fix. It's pretty hard for a computer programming language to essentially evict the concept of a "bit" from the language. I'm not sure it can be done in practice, but it's fun to think about it and I encourage the pondering.

elcapitan•12m ago
Too good to be true or false
taylorallred•5m ago
I love seeing these kinds of explorations in the realm of language design. I've wondered about expanding the notion of boolean operators like this. For all its flaws, one thing I've always liked about JS is the overloaded (||) and (&&) operators. It's really slick to write something like `foo.get_that_can_fail(x) || "default value"`.