HNHacker News
TopNewBestAskShowJobs

LukeShu

7,084 karma · joined May 5, 2011

https://lukeshu.com/

[ my public key: https://keybase.io/lukeshu; my proof: https://keybase.io/lukeshu/sigs/HnTgaX1Qhui0yhjc6P-GRCJqUfJlk_xU09_TFpQKk0U ]

submissionscomments
LukeShu··on State of Terminal Emulators in 2025: The Errant Champions
> You can do the same thing with a vt220.

Can you? The last I looked at it (a year or two ago), the vt220 in MAME was just the beginning skeleton of an implementation, and it doesn't seem to have been touched much since then. A shame, because AFAIK no "terminal emulator" implements vt220-style sixels (which are different than than the widely-implemented vt4xx-style sixels).

LukeShu··on Show HN: Bash Screensavers
I know the trendy thing is to hide the menu-bar, but it's great for discoverability. Tools→Games→Zone Out
LukeShu··on When you opened a screen shot of a video in Paint, the video was playing in it
Many flip phones had cameras by then. For instance, the Razr V3 was the best selling phone of 2005, and had a 640×480px camera.
LukeShu··on The day my smart vacuum turned against me
To expand on laulis' comment: Valetudo isn't a full custom-firmware, it's a mod for the existing firmware. You copy on the Valetudo daemon binary, fuss with the init scripts to start the daemon, and fuss with the DNS and such to point some domains at 127.0.0.1 to talk to that daemon instead of the normal servers (well, actually you probably download a firmware image from dustbin that already has those modifications applied).

This is a distinction that is worth making because the robot is still running and relying on all of the on-robot proprietary code; it's just the in-cloud code that has been replaced.

LukeShu··on Human writers have always used the em dash
Apple users (both macOS and iOS) get curly quotes by default when they hit quote key.
LukeShu··on RFC 3339 vs. ISO 8601
Except for not including a timezone offset, that's one of the RFC 3339 formats.
LukeShu··on Forking Chrome to render in a terminal (2023)
Mojo is specifically developed as part of Chromium.

https://chromium.googlesource.com/chromium/src/+/refs/heads/...

LukeShu··on F-Droid build servers can't build modern Android apps due to outdated CPUs
I was going to say that I assume that the reason for such old CPUs is the ability to use Canoeboot/GNU Boot. But you absolutely can put an SSE4.2 CPU in a KGPE-D16 motherboard. So IDK.
LukeShu··on Show HN: Online Ruler – Measuring in inches/centimeters
Fascinating.

My setup: Firefox on X11 on a ThinkPad E15 Gen 2, with X11 misconfigured such that it is 96 DPI instead of the physically-correct 144 DPI.

On initial load, it has the green calibrated box saying "Detected: 24″ FHD Monitor (Auto-calibrated)", and my credit card measures as 131mm. This more-or-less the error that I'd expect given my misconfiguration: 131mm/85.6mm =~ 1.53 ; 144dpi/96dpi = 1.5. (Given those numbers, I figure it should be closer to 23" than 24", but whatever.)

But if I tell it "Standard Laptop", then my credit card measures as 97mm. (97mm/85.6mm =~ 1.13). I can't guess how that number is being arrived at. IME lots of X11 users will have their DPI misconfigured as either 96 DPI or (less likely) 192 DPI, but also lots of non-Apple laptops will have a pixel density of 40%-65% more than 96 DPI (on the rationale that lots misconfigured-as- or hardcoded-as- 96 DPI is common, that things designed to look good at 96 DPI assume a desktop monitor about 28" from your face (CSS3 defines device-independent pixels as such), but laptop use puts the screen 17"-20" from your face; and 28in/20in gives us a factor of 1.4 and 28in/17in gives us a factor of 1.65. But none of these numbers give me the factor of 1.13 that you show me. A good mystery!

LukeShu··on It's a DE9, not a DB9 (but we know what you mean)
Specifically, what is colloquially an "RJ45" or "Ethernet" connector is an 8P8C "Bell System Miniature Plug/Jack" (AT&T's original name; it is a smaller version of the older Bell System connectors) / "miniature plug/jack" (FCC genericization of the name by removing "Bell System", even though the word "miniature" is no longer meaningful without context) / "modular jack" (ANSI/IEC genericization). That is what is meant when just "8P8C" is said.

Pedantically speaking, RJ45 (as first defined by AT&T internally[1], and later by the FCC's 47 CFR part 68) is not that. The RJ45 socket is a keyed 8P8C modular jack, not a regular 8P8C modular jack. Here is a photo: https://commons.wikimedia.org/wiki/File:RJ45_female_connecto...

[1]: The "RJ45" designation was originally an AT&T "USOC" (Universal Service Order Code). In the '70s, the FCC told AT&T that they had to allow interoperability from other companies, so the FCC had to publish a bunch of specifications; the meaning of "RJ45" became publicly specified in Bell System Communications' Technical Reference PUB 47101 "Standard Plugs And Jacks" (1979, though I think there might be an older number/revision from the early '70s that I haven't been able to track down). That (in combination with a few other technical references, such as PUB 47102), later became part of the Code of Federal Regulations, as 47 CFR part 68.

LukeShu··on It's a DE9, not a DB9 (but we know what you mean)
RJ45 is a keyed 8-position jack, not a normal 8-position jack. ("Keyed" means that there's a notch in the side making it a different shape; you would not be able to fit an "Ethernet" connector into it.)

Closer is RJ38X, which is a series 8-position jack, not a normal 8-position jack. ("Series" means that the jack shorts pint 1 to pin 4 and pin 5 to pin 8 when there's not a cable plugged in to it; you would be able to fit an "Ethernet" connector into it, but even so it's probably not what you want.)

AFAICT (skimming 47 CFR part 68, and the historical AT&T documents that became 47 CFR part 68), there is no RJ-number for a normal 8-position jack.

LukeShu··on Why SSL was renamed to TLS in late 90s (2014)
I would agree with you that DTLS is a misnomer; that it does not provide the layer-4/transport-layer -like interface that regular TLS provides.

(It isn't quite a layer-3/internetwork-layer -like interface; from the UDP that it sits on, it has a multiplexing component that is "half" of a layer 4 interface.)

LukeShu··on Why SSL was renamed to TLS in late 90s (2014)
No? The "transport" layer is layer 4 in the 7-layer OSI model (physical/datalink/network/transport/session/presentation/application) and 5-layer IP model (physical/network/internetwork/transport/application). That is: the "transport" provides reliable continuous data-stream abstraction over the lower-layers' discreet and unreliable packets; e.g. TCP.

And that data-stream the interface that TLS provides; to the higher layers it looks like a transport layer.

LukeShu··on The curious case of shell commands, or how "this bug is required by POSIX" (2021)
`printf -v` was added in Bash 3.1 (2005). I think revisions of ABS predates that; but ABS has certainly been updated since then (last in 2014), and has no excuse for not including it.
LukeShu··on The curious case of shell commands, or how "this bug is required by POSIX" (2021)
@Q was added in Bash 4.4 (2016), ABS was last updated in 2014.
LukeShu··on Valkey Turns One: Community fork of Redis
FWIW, valkey has replaced redis in Arch Linux.
LukeShu··on Get PC BIOS back on UEFI only system
Too late to edit: non-GPT, non-MBR

For instance, whole-disk btrfs. Or old BSD partition schemes.

LukeShu··on Get PC BIOS back on UEFI only system
Very cool hack.

But, as okanat says, if the goal is to run legacy operating systems, then modern hardware is going to be challenging in other ways too. IME the biggest thing I want PC BIOS back for is the ability to use non-GPT disk layouts, which this doesn't accomplish as, as to use it you put it on the EFI partition on your GPT disk.

LukeShu··on Ratatoi is a C libary that wraps stdlib's strtol (as atoi does), but it's evil.
> Like if my program writes out a JSON file and then reads it back in, and the file isn't value JSON, panicking is a reasonable way to deal with the situation.

Like how if I hit ctrl-C at just the right moment during the build, the next time I build, cmake will segfault and I have to delete the build directory.

LukeShu··on Comparison of C/POSIX standard library implementations for Linux
When I was working with Envoy Proxy, it was known that perf was worse with musl than with glibc. We went through silly hoops to have a glibc Envoy running in an Alpine (musl) container.
LukeShu··on From: Steve Jobs. "Great idea, thank you."
> What is happening if you can't email your boss/upper on the regular like that ?

In a 40 person startup or small company, sure. In a 400 person company, the guy at the top is a few levels removed from "your boss" to be emailing with "on the regular".

OP had Jobs as his CEO for 20 years (hired in 1991, until Jobs passed in 2011), and says this was the only time Jobs directly emailed with him (of course, 400 people in 1991 was the smallest the company would be during that time, it would only grow from there).

LukeShu··on Show HN: I486SX_soft_FPU – Software FPU Emulator for NetBSD 10 on 486SX
It's not emulating a crippled chip, it runs on the i486SX (which has no FPU, by artificial limitation or not), and emulates an x87 FPU.
LukeShu··on Porting Tailscale to Plan 9
Scanning input just is unrelated to the "modified while running" problem. The "modified while running" problem is a read-buffering problem.

For example, consider the following change:

    -echo $x; rm -rf /n/foobar/
    +rm -rf /n/foobar/
     ^^^^^^^^^^^^^^^^
If the shell's first read() reads 16 bytes (indicated above with "^"), then the file is changed, then the shell reads the rest; then the shell will see "echo $x; rm -rf /" regardless of whether or not it scans the input multiple times.

I am unfamiliar with the read-buffering done by either of the 2 main implementations of rc, and so am unable to comment on whether it does things to avoid this problem. But if it does do things to avoid it, those things are orthogonal to the "not a macro processor / input is never scanned more than once" thing.

LukeShu··on If you get the chance, always run more extra network fiber cabling
> RJ-45 (really RJ-38 but that's excessively pedantic) connectors

If we're being overly pedantic:

- the RJ numbers refer to not just the connector but the pinout and such

- the RJ (registered jack) numbers refer to just the "jack" side, not the "plug" side

So even though an "Ethernet" cable has plugs on it that fit into an RJ38X jack, its wrong as well to call it an RJ38 plug:

- different pinout

- the plug is the mechanically the same, but pedantically it isn't correct to call any plug a registered jack, because it's a plug not a jack

- the jack is mechanically different; an RJ38X jack shorts pin 1 to pin 4 and pin 5 to pin 8 when there's not a cable plugged in to it (this makes it a "series jack" instead of a regular "jack").

                        Name  | Mechanical jack                  | Mechanical plug
    47 CFR part 68 (registered jacks)
                        RJ45S | miniature 8-position keyed jack  | miniature 8-position keyed plug
                        RJ38X | miniature 8-position series jack | miniature 8-position plug
    ANSI/TIA-568 (Ethernet)
                        T568A | miniature 8-position jack        | miniature 8-position plug
                        T568B | miniature 8-position jack        | miniature 8-position plug
I don't believe any registered jack uses a miniature 8-position unkeyed jack (but scanning through 150 pages is a pain and for some reason Ctrl-F isn't working reliably in this PDF).

(ANSI/TIA/IEC calls them "modular" jacks/plugs, while the FCC calls them "miniature" jacks/plugs, but same thing. Well, same thing the way that CAT-5 and CAT-5e are the same; same, but with different specified tolerances. And just saying "Ethernet" or "568" isn't specific enough here; CAT-6 requires an IEC 60603-7-4 connector, while CAT-5e only requires an IEC 60603-7-2 connector; even though most people would call those the same, they have different tolerances. I don't care to compare the FCC's 47 CFR part 68 requirements with the IEC 60603-7-{2,4} requirements.)

LukeShu··on Asahi Linux Progress Report - Linux 6.14
Several down-thread comments speculate that the banner is due to recent events. Some form of an HN block or banner has been present since 2023-03-21[1] (well, until about an hour ago[2]).

HN threads about Asahi, while generally positive about the project, also tend to include trans hate and speculation about a pseudonymous developer's identity. Those comments are often "dead", but show up on search engines. This has caused real harm in the lives of Asahi's trans and pseudonymous developers.

[1]: https://github.com/AsahiLinux/AsahiLinux.github.io/commit/a7...

[2]: https://github.com/AsahiLinux/AsahiLinux.github.io/commit/e0...

LukeShu··on GIMP 3.0
They basically stopped doing the previously-usual updates for a 7 years to focus on porting to GTK+ 3; GIMP was very tied to GTK+ 2. There were a bunch of much-anticipated features (esp. non-destructive editing) that were finished but couldn't be released because it was half-way through the big GTK transition.

Hopefully the now-impending port to GTK 4 will be a lot smoother and won't be such a disruption to their ability to ship the features they've been working on.

LukeShu··on The Most Mario Colors
The Sunshine logo was (1) not multicolor, and (2) with sufficiently different lettering than the usual style.
LukeShu··on The Most Mario Colors
Oh dang, I just emailed you saying that! Sorry for the noise :(
LukeShu··on Amazon's AI crawler is making my Git server unstable
Amazonbot doesn't respect the `Crawl-Delay` directive. To be fair, Crawl-Delay is non-standard, but it is claimed to be respected by the other 3 most aggressive crawlers I see.

And how often does it check robots.txt? ClaudeBot will make hundreds of thousands of requests before it re-checks robots.txt to see that you asked it to please stop DDoSing you.

LukeShu··on Amazon's AI crawler is making my Git server unstable
Before I configured Nginx to block them:

- Bytespider (59%) and Amazonbot (21%) together accounted for 80% of the total traffic to our Git server.

- ClaudeBot drove more traffic through our Redmine in a month than it saw in the combined 5 years prior to ClaudeBot.

← PreviousPage 2 of 34Next →