HN user

dgl

1,253 karma

https://dgl.cx

Posts24
Comments205
View on HN
codefromabove.com 6mo ago

Mtetris: Tetris-Like Game in X11/Motif

dgl
2pts0
github.com 8mo ago

Show HN: IRCd in Pure Bash

dgl
6pts1
dgl.cx 9mo ago

Bash a newline: Exploiting SSH via ProxyCommand, again (CVE-2025-61984)

dgl
5pts0
warpspire.com 9mo ago

URL Design (2010)

dgl
3pts0
dgl.cx 10mo ago

Images over DNS

dgl
201pts50
dgl.cx 1y ago

Breaking Git with a carriage return and cloning RCE

dgl
373pts162
dgl.cx 1y ago

Can your terminal do emojis? How big?

dgl
178pts161
dgl.cx 1y ago

Blink and you'll miss it – a URL handler surprise

dgl
3pts0
dgl.cx 1y ago

Déjà vu: Ghostly CVEs in my terminal title

dgl
208pts55
xn--108h.st 2y ago

Waste.st a.k.a. .st – A tiny waste^W pastebin

dgl
2pts1
dgl.cx 2y ago

ANSI Terminal security in 2023 and finding 10 CVEs

dgl
3pts0
www.gresearch.com 2y ago

The Terminal Escapes: Engineering unexpected execution from command lines

dgl
9pts0
dgl.cx 3y ago

Nat-Again: IRC NAT helper flaws

dgl
3pts0
dgl.cx 4y ago

Ip.wtf and showing you your actual HTTP request

dgl
2pts0
dgl.cx 4y ago

Show HN: Wordle over DNS

dgl
170pts25
dgl.cx 5y ago

Microsoft .NET SDK is violating the GDPR, object now

dgl
37pts10
dgl.cx 6y ago

SQLite as a Document Database

dgl
5pts0
www.bbc.co.uk 7y ago

British Airways faces record £183m fine for data breach

dgl
12pts1
dgl.cx 11y ago

Vim blowfish encryption

dgl
36pts17
feed.matthewkeys.net 12y ago

Track the GOCE satellite

dgl
1pts0
paste.sh 13y ago

Paste.sh - client-side encrypted pastebin

dgl
21pts14
www.guardian.co.uk 15y ago

Inside LulzSec: Chatroom logs shine a light on the secretive hackers

dgl
7pts1
www.bitcoinbulletin.com 15y ago

The Bitcoin Effect (aka Reality Distortion)

dgl
5pts3
evan.prodromou.name 19y ago

Evan Prodromou: "As an experienced programmer, I think of a startup as an abusive relationship"

dgl
17pts8

Zip isn't useful for random access here; the problem with random access in HTTP serving is then you have to decompress the data and potentially recompress.

The more interesting trick you can do with zip files for HTTP serving is to serve the compressed deflate stream as gzip, or use Zstd inside zip. Then you have a valid zip file from which bytes can be served directly.

I have some code which does this at https://git.sr.ht/~dgl/deserve/

I tried using their Magic Containers product and there were issues that showed a lack of attention to detail as well.

It's supposed to scale globally (magically!) but I found multiple cases where particular nodes were problematic and the health checks didn't detect them (in fact to start with the health checks didn't even work properly if you had multiple containers, they did fix that). The support was quite slow too, after finding multiple product issues they'd escalate to developers and then come back a month later and ask to retest, but some of this took multiple round trips. I was only using this on a side project, but definitely wouldn't consider them for anything critical, even if they are quite cheap.

GitHub manage to do it. Most URLs you'd think of are either redirects to other bits of the site, or accounts owned by GitHub themselves. It just takes a bit of planning.

Part #2 to me, I also want observability as to what the agent changed.

You could potentially combine https://github.com/binpash/try with bubblewrap (I'm not sure how well they compose and as the docs say it isn't a full sandbox).

The good (and bad because it's confusing and can lead to surprises if misconfigured) thing about Linux containers is all the pieces of containers can be used independently. The "try" tool lets you use the overlay part of containers on your host system, just like Bubblewrap lets you combine the namespacing parts of containers with your host system.

This.

Instead you can create multiple Wireguard interfaces and use policy routing / ECMP / BGP / all the layer 3 tricks, that way you can achieve similar things to what vxlan could give you but at layer 3.

There's a performance benefit to doing it this way too, in some testing I found the wireguard interface can be a bottleneck (there's various offload and multiple core support in Linux, but it still has some overhead).

The BSD socket API has 3 parameters when creating a socket with socket(), the family (e.g. inet) the kind (datagram in this case) and the protocol (often 0, but IPPROTO_ICMP in this case).

Because when the protocol is 0 it means a UDP socket Rust has called its API for creating any(?) datagram sockets UdpSocket, partly resulting in this confusion.

The kernel patch introducing the API also explains it was partly based on the UDP code, due to obviously sharing a lot of properties with it. https://lwn.net/Articles/420800/

On the QR topic, I don't understand how logos in the middle work. You are losing pixels and checks with the logo in the middle which is fine until you make the logo too big.

It is possible to add logos without (well, differently) abusing the error correction: https://research.swtch.com/qart

Of course most images in the middle aren’t doing that and rely on some level of error correction fixing it.

The VT3xx ones that were color did not support ANSI SGR to set them. I don't think VT5xx was a budget line, it has more escape sequences than the previous ones (including interesting ones like changing cursor shape, which modern terminals implement too). It's more that they never made a graphical version of the VT5xx (this was the early 90s, whether physical VTs made sense anymore is debatable, but terminal graphics likely didn't).

VT340 is definitely interesting and if someone were to emulate one that would also be great! (there's been some good research, e.g.: https://github.com/hackerb9/vt340test, which you might be surprised to learn has been used to make Windows Terminal one of the more conformant terminals...)

If MAME could support the VT525 (nearly the last terminal DEC made and unlike the previous DEC models it supports ANSI color) people might use it a bit more. It would be very useful for compatibility testing as there aren't many people with a real VT525! Last I looked someone had dumped the ROMs but there wasn't any support code.

Kurt Got Got 10 months ago

The post calls this out:

the 1Password browser plugin would have noticed that “members-x.com” wasn’t an “x.com” host.

But shared accounts are tricky here, like the post says it's not part of their IdP / SSO and can't be, so it has to be something different. Yes, they can and should use Passkeys and/or 1password browser integration, but if you only have a few shared accounts, that difference makes for a different workflow regardless.

This isn't really that different to GWT, which Google has been scaling for a long time. My knowledge is a little outdated, however more complex applications had a "UI" server component which talked to multiple "API" backend components, doing internal load balancing between them.

Architecturally I don't think it makes sense to support this in a load balancer, you instead want to pass back a "cost" or outright decisions to your load balancing layer.

Also note the "batch-pipelining" example is just a node.js client; this already supports not just browsers as clients, so you could always add another layer of abstraction (the "fundamental theorem of software engineering").

I wonder why they don’t do this for all levels. How deep could this even be in practice for it to matter? You could just have a hashmap with them all.

While it may seem questionable for fields; it applies to methods too and is potentially more useful as a way to override them when doing struct embedding but wanting to preserve an interface.

Images over DNS 10 months ago

To be fair I did lazily do:

         else if (c.slice(4, 4+4) == "ftyp") f="avif";
 
Because I didn't feel like parsing the HEIF to check it's actually AVIF. I'm pretty sure browsers aren't that bothered about the file extension or MIME type for images.
Images over DNS 10 months ago

Cool!

For the bad apple one; I tried something like that, it works if you're directly querying the authoritative DNS server, but if a cache is involved the records will be re-ordered by randomisation (even in some cases with TTL=0). That's why I ended up doing this as a single very long record, because then it can be cached without worrying about reordering.

Images over DNS 10 months ago

I put a link to[1] in the article, which was previously discussed here[2] with a correction to that article. Basically there's a 2 byte length header on TCP DNS responses, limiting the payload (i.e. the DNS message inside) to 64 KiB.

  [1]: https://www.netmeister.org/blog/dns-size.html#:~:text=65536%20bytes%20DNS%20payload%20%2B%202%20bytes%20size%20%3D%2065538%20bytes
  [2]: https://news.ycombinator.com/item?id=39257147
iTerm2 Web Browser 10 months ago

A former colleague suggested this idea in 2014 and I haven't been able to stop thinking about it. - I am maybe having a midlife crisis and this is cheaper than a sports car.

I love the honesty.

It's not; the git format defines it as a positive integer, see git help commit:

    DATE FORMATS
       The GIT_AUTHOR_DATE and GIT_COMMITTER_DATE environment variables support the following date formats:

       Git internal format
           It is <unix-timestamp> <time-zone-offset>, where <unix-timestamp> is the number of seconds since the UNIX epoch.
Changing a commit's timestamp is as simple as:
    $ git commit --amend --date='1970-01-01T00:00:00' --reset-author
    [main 6e1d001] test
     Date: Thu Jan 1 00:00:00 1970 +0000
     1 file changed, 1 insertion(+)
But dates before 1970 really don't work (in some cases it gives "fatal: invalid date format"):
    TZ=UTC git commit --amend --date='1969-12-31T23:59:59Z' --reset-author
    [main 47e54f0] test
     Date: Mon Dec 31 23:59:59 2012 +0000
     1 file changed, 1 insertion(+)

I don’t really want to give it credit by linking to it, but this seems to refer to putty[.]org which is using its search ranking to push things unrelated to PuTTY.