frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Spec-Driven Development: The Waterfall Strikes Back

https://marmelab.com/blog/2025/11/12/spec-driven-development-waterfall-strikes-back.html
79•vinhnx•2h ago•57 comments

The Internet Is Cool. Thank You, TCP

https://cefboud.com/posts/tcp-deep-dive-internals/
44•signa11•3h ago•24 comments

AI World Clocks

https://clocks.brianmoore.com/
1019•waxpancake•15h ago•311 comments

Messing with Scraper Bots

https://herman.bearblog.dev/messing-with-bots/
30•HermanMartinus•2h ago•5 comments

So, you want to design your own language? (2017)

https://cs.lmu.edu/~ray/notes/languagedesignnotes/
69•veqq•4h ago•50 comments

AMD GPUs Go Brrr

https://hazyresearch.stanford.edu/blog/2025-11-09-amd-brr
125•vinhnx•7h ago•19 comments

How My Speed Date Got Stolen Onstage at a Live Comedy Dating Show

https://psychotechnology.substack.com/p/how-my-speed-date-got-stolen-onstage
11•eatitraw•1h ago•3 comments

Löb and Möb: Loops in Haskell

https://github.com/quchen/articles/blob/master/loeb-moeb.md
34•fanf2•1w ago•6 comments

Unofficial Microsoft Teams client for Linux

https://github.com/IsmaelMartinez/teams-for-linux
131•basemi•1w ago•98 comments

A new Google model is nearly perfect on automated handwriting recognition

https://generativehistory.substack.com/p/has-google-quietly-solved-two-of
328•scrlk•3d ago•186 comments

SSL Configuration Generator

https://ssl-config.mozilla.org/
163•smartmic•11h ago•47 comments

HipKittens: Fast and furious AMD kernels

https://hazyresearch.stanford.edu/blog/2025-11-09-hk
173•dataminer•1d ago•58 comments

'No One Lives Forever' turns 25 and you still can't buy it legitimately

https://www.techdirt.com/2025/11/13/no-one-lives-forever-turns-25-you-still-cant-buy-it-legitimat...
254•speckx•17h ago•124 comments

Ohm Editor

https://ohmjs.org/editor/
21•andsoitis•4h ago•3 comments

All praise to the lunch ladies

https://bittersoutherner.com/issue-no-12/all-praise-to-the-lunch-ladies
187•gmays•14h ago•107 comments

Random Font – a typographic experiment exploring randomness [pdf]

https://www.ilcovile.it/scritti/COVILE_834_Reprint_Random_Font.pdf
13•misone•1w ago•5 comments

No Leak, No Problem – Bypassing ASLR with a ROP Chain to Gain RCE

https://modzero.com/en/blog/no-leak-no-problem/
77•todsacerdoti•10h ago•4 comments

Structured outputs on the Claude Developer Platform

https://www.claude.com/blog/structured-outputs-on-the-claude-developer-platform
140•adocomplete•14h ago•59 comments

Lawmakers want to ban VPNs and have no idea what they're doing

https://www.eff.org/deeplinks/2025/11/lawmakers-want-ban-vpns-and-they-have-no-idea-what-theyre-d...
218•gslin•1d ago•108 comments

A race condition in Aurora RDS

https://hightouch.com/blog/uncovering-a-race-condition-in-aurora-rds
220•theanomaly•15h ago•69 comments

Blending SQL and Python with Sqlorm

https://hyperflask.dev/blog/2025/11/11/blending-sql-and-python-with-sqlorm/
9•emixam•4d ago•4 comments

Continuous Architecture: A decade of designing for change

https://continuousarchitecture.com/2025/11/04/a-decade-of-ca/
4•gHeadphone•1w ago•0 comments

Async Mutexes

https://matklad.github.io/2025/11/04/on-async-mutexes.html
38•ingve•1w ago•13 comments

Ucs-Detect

https://ucs-detect.readthedocs.io/intro.html
13•djoldman•1w ago•3 comments

Winamp clone in Swift for macOS

https://github.com/mgreenwood1001/winamp
226•hyperbole•21h ago•142 comments

Meet Reservoir – The World's Smartest Water Heater

https://www.reservoirhome.com/
22•flakespancakes•6h ago•28 comments

GEN-0 / Embodied Foundation Models That Scale with Physical Interaction

https://generalistai.com/blog/nov-04-2025-GEN-0
57•jackdoe•1w ago•5 comments

Hiring the Joker

https://quarter--mile.com/hiring-the-joker
26•surprisetalk•1w ago•19 comments

Show HN: Tiny Diffusion – A character-level text diffusion model from scratch

https://github.com/nathan-barry/tiny-diffusion
132•nathan-barry•4d ago•16 comments

Manganese is Lyme disease's double-edge sword

https://news.northwestern.edu/stories/2025/11/manganese-is-lyme-diseases-double-edge-sword
141•gmays•17h ago•78 comments
Open in hackernews

The Internet Is Cool. Thank You, TCP

https://cefboud.com/posts/tcp-deep-dive-internals/
43•signa11•3h ago

Comments

zkmon•2h ago
I hate to think of the future of these nice blog posts, that need to struggle to convince the readers about the organic level of their content.
stavros•1h ago
Wait, can you actually just use IP? Can I just make up a packet and send it to a host across the Internet? I'd think that all the intermediate routers would want to have an opinion about my packet, caring, at the very least, that it's either TCP or UDP.
gsliepen•1h ago
They shouldn't; the whole point is that the IP header is enough to route packets between endpoints, and only the endpoints should care about any higher layer protocols. But unfortunately some routers do, and if you have NAT then the NAT device needs to examine the TCP or UDP header to know how to forward those packets.
jadamson•36m ago
Notably, QUIC (and thus HTTP/3) uses UDP instead of a new protocol number for this reason.
stavros•35m ago
Yeah, this is basically what I was wondering, why QUIC used UDP instead of their own protocol if it's so straightforward. It seems like the answer may be "it's not as interference-free as they'd like it".
Twisol•17m ago
UDP pretty much just tacks a source/destination port pair onto every IP datagram, so its primary function is to allow multiple independent UDP peers to coexist on the same IP host. (That is, UDP just multiplexes an IP link.) UDP as a protocol doesn't add any additional network guarantees or services on top of IP.

QUIC is still "their own protocol", just implemented as another protocol nested inside a UDP envelope, the same way that HTTP is another protocol typically nested inside a TCP connection. It makes some sense that they'd piggyback on UDP, since (1) it doesn't require an additional IP protocol header code to be assigned by IANA, (2) QUIC definitely wants to coexist with other services on any given node, and (3) it allows whatever middleware analyses that exist for UDP to apply naturally to QUIC applications.

(Regarding (3) specifically, I imagine NAT in particular requires cooperation from residential gateways, including awareness of both the IP and the TCP/UDP port. Allowing a well-known outer UDP header to surface port information, instead of re-implementing ports somewhere in the QUIC header, means all existing NAT implementations should work unchanged for QUIC.)

Twisol•1h ago
As far as I'm aware, sure you can. TCP packets and UDP datagrams are wrapped in IP datagrams, and it's the job of an IP network to ship your data from point A (sender) to point B (receiver). Nodes along the way might do so-called "deep packet inspection" to snoop on the payload of your IP datagrams (for various reasons, not all nefarious), but they don't need to do that to do the basic job of routing. From a semantic standpoint, the information in the TCP and UDP headers (as part of the IP payload) is only there to govern interactions between the two endpoint parties. (For instance, the "port" of a TCP or UDP packet is a node-local identifier for one of many services that might exist at the IP address the packet was routed to, allowing many services to coexist at the same node.)
stavros•36m ago
Hmm, I thought intermediate routers use the TCP packet's bits for congestion control, no? Though I guess they can probably just use the destination IP for that.
Twisol•27m ago
They probably can do deep/shallow packet inspection for that purpose (being one of the non-nefarious applications I alluded to), but that's not to say their correct functioning relies on it. Those routers also need to support at least UDP, and UDP provides almost no extra information at that level -- just the source and destination ports (so, perhaps QoS prioritization) and the inner payload's length and checksum (so, perhaps dropping bad packets quickly).

If middleware decides to do packet inspection, it better make sure that any behavioral differences (relative to not doing any inspection) is strictly an optimization and does not impact the correctness of the link.

Also, although I'm not a network operator by any stretch, my understanding is that TCP congestion control is primarily a function of the endpoints of the TCP link, not the IP routers along the way. As Wikipedia explains [0]:

> Per the end-to-end principle, congestion control is largely a function of internet hosts, not the network itself.

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

ilkkao•1h ago
You can definitely craft an IP packet by hand and send it. If it's IPv4, you need to put a number between 0 and 255 to the protocol field from this list: https://www.iana.org/assignments/protocol-numbers/protocol-n...

Core routers don't inspect that field, NAT/ISP boxes can. I believe that with two suitable dedicated linux servers it is very possible to send and receive single custom IP packet between them even using 253 or 254 (= Use for experimentation and testing [RFC3692]) as the protocol number

Twisol•1h ago
> If it's IPv4, you need to put a number between 0 and 255 to the protocol field from this list:

To save a skim (though it's an interesting list!), protocol codes 253 and 254 are suitable "for experimentation and testing".

stavros•36m ago
Very interesting, thanks!
inglor_cz•32m ago
This is an interesting list; it makes you appreciate just how many obscure protocols have died out in practice. Evolution in networks seems to mimic evolution in nature quite well.
LeoPanthera•1h ago
You know I've always wondered if you could run Kermit*-over-IP, without having TCP inbetween.

*The protocol.

Karrot_Kream•27m ago
If there's no form of NAT or transport later processing along your path between endpoints you shouldn't have an issue. But NAT and transport and application layer load balancing are very common on the net these days so YMMV.

You might have more luck with an IPv6 packet.

NooneAtAll3•17m ago
something like this?

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

Twisol•10m ago
That would be IP over some lower level physical layer, not some custom content stuffed into an IP packet :)

(It's absolutely worth reading some of those old April Fools' RFCs, by the way [0]. I'm a big fan of RFC 7168, which introduced HTTP response code 418 "I'm a teapot".)

[0]: https://en.wikipedia.org/wiki/April_Fools%27_Day_Request_for...

gsliepen•1h ago
If you start with the problem of how to create a reliable stream of data on top of an unreliable datagram layer, then the solution that comes out will look virtually identical to TCP. It just is the right solution for the job.

The three drawbacks of the original TCP algorithm were the window size (the maximum value is just too small for today's speeds), poor handling of missing packets (addressed by extensions such as selective-ACK), and the fact that it only manages one stream at a time, and some applications want multiple streams that don't block each other. You could use multiple TCP connections, but that adds its own overhead, so SCTP and QUIC were designed to address those issues.

The congestion control algorithm is not part of the on-the-wire protocol, it's just some code on each side of the connection that decides when to (re)send packets to make the best use of the available bandwidth. Anything that implements a reliable stream on top of datagrams needs to implement such an algorithm. The original ones (Reno, Vegas, etc) were very simple but already did a good job, although back then network equipment didn't have large buffers. A lot of research is going into making better algorithms that handle large buffers, large roundtrip times, varying bandwidth needs and also being fair when multiple connections share the same bandwidth.

bobmcnamara•58m ago
> If you start with the problem of how to create a reliable stream of data on top of an unreliable datagram layer, then the solution that comes out will look virtually identical to TCP.

I'll add that at the time of TCP's writing, the telephone people far outnumbered everyone else in the packet switching vs circuit switching debate. TCP gives you a virtual circuit over a packet switched network as a pair of reliable-enough independent byte streams over IP. This idea, that the endpoints could implement reliability through retransmission came from an earlier French network, Cylades, and ends up being a core principle of IP networks.

Karrot_Kream•24m ago
We're still "suffering" from the latency and jitter effects of the packet switching victory. (The debate happened before my time and I don't know if I would have really agreed with circuit switching.) Latency and jitter on the modern Internet are very best effort emphasis on "effort".
NooneAtAll3•19m ago
> If you start with the problem of how to create a reliable stream of data on top of an unreliable datagram layer

> poor handling of missing packets

so it was poor at exact thing it was designed for?

iberator•35m ago
Its trivial to develop your own protocols on top of IP. It was trivial like 15 years ago in python (without any libraries) just handcrafted packets (arp, ip etc).
acosmism•30m ago
i have an idea for a new javascript framework
cynicalsecurity•22m ago
I can easily spot it's an AI written article, because it actually explains the technology in understandable human language. A human would have written it the way it was either presented to them in university or in bloated IT books: absolutely useless.