HNHacker News
TopNewBestAskShowJobs

andrewf

2,287 karma · joined August 1, 2007

{firstname}@sullust.net (checked every week or two) github.com/andrewffff
submissionscomments
andrewf··on Claude × retrocomputing: emulating a QIC-117 tape drive
I've a retrocomputing project which has been gathering dust since before I used an LLM. The idea is to render an isometric view with Quake-style lightmaps; if scrolling is slow enough I only need to render a small slice of the screen each time. I got as far as a proof of concept on a simulated 286 which indicates the pixels-per-second I can achieve is fast enough. Testing on a real 286 would be the next step.

All the assembly code, and the C harness which loads the textures etc, was hand done by me, and period correct. That's where the fun is!

Outside of that, there are so many anachronisms. I actually built the test geometry as a quake map, and processed it using Quake's BSP/lightmap tools. That's 1996 vintage.. except I'm using a newer Quake editor (Trenchbroom, 2013) and modern forks of the tools. All natively on a modern system with a 4K monitor. Building and non-performance testing of the DOS code happens in a Windows XP (2001) VirtualBox (2007) using its' Shared Folder feature.

I might have time to pick this up again soon. My post-processing of the Quake .bsp presently only handles axis-aligned 64x64 surfaces with some hardcoded texturing assumptions. I'll want a full .bsp-to-isometric-data "renderer" - either written from scratch or somehow derived from Quake's source. But this is all just to enable the 286 assembly code noodling, which is what I want to spend time on!

So I'll probably use Claude to assist with the tooling side. By "assist" I mean "do as much as possible to produce the file format I specify". It doesn't seem much worse to me than all the other modernisms I'm already relying on outside of the core task.

andrewf··on The Snow/Leavis ‘two cultures’ clash
I knew very little of this. I know about the Inns of Court, but I didn't know this was such an Inn; I know what a chancery court is (Delaware has them!) but similarly not that it applied in this case. I've no idea what Michaelmas is, but like Christmas, I assume it's an event and/or season which occurs periodically.

I could still read the text! And it's useful to read texts and understand 95%, or 80%, or even 50%! IMO "fully understand what you're reading" versus "can't understand what you're reading" is a harmfully discouraging dichotomy. You can often gloss over such things rather than struggle with them.

andrewf··on Who's afraid of Chinese models?
It strikes me as like setting up an IDE. People have preferences, switching is possible, but there are advantages to saying "we are a Visual Studio + Resharper shop" or "everyone uses IntelliJ to work on this project".
andrewf··on CERN bids farewell to the LHC and enters Long Shutdown 3
It's a brand gTLD, like .microsoft and .google. https://en.wikipedia.org/wiki/Generic_top-level_domain#Brand...
andrewf··on 80386 Early Start Memory Access
https://nand2mario.github.io/posts/2026/z386/#testing gets into this sort of thing a bit more.
andrewf··on Running DOS on Behringers DDX3216 with a DIY x86-Bios from Scratch
The Quark core lives on as a control processor inside Intel CPUs - https://pbx.sh/intelme_talk.pdf
andrewf··on Serving Netflix Video Traffic at 400Gb/S and Beyond (2022) [pdf]
Browser behavior like mixed content warnings (and a clear slide towards discouraging all non-HTTPS traffic) was the impetus for us at Twitch to TLS all our video in the mid-2010s. Mixed content delivery on a website would, I think, also fall below the bar for doing certain kinds of commerce, and ejecting people from your webapp to a separate payment flow discourages spending.
andrewf··on Serving Netflix Video Traffic at 400Gb/S and Beyond (2022) [pdf]
The author's answer as of 2021: https://news.ycombinator.com/item?id=28586767

EDIT: I recall reading that the Netflix client can continuously select between multiple content caches. I'm guessing they do this because it's a quality-of-service and capacity win over making a "best guess" at the start of a session, and sticking with it. It should also enable transparent recovery from a broken or slow cache node. If you test in a busy place with multiple caches, the loss of one needn't be a big deal.

andrewf··on dBase: 1979-2026
I wonder if anyone ever tried to make the Clipper 5 pre-processor spit out Delphi..
andrewf··on dBase: 1979-2026
> Bizarrely, to protect dBase, there was no compatible Turbo C++ objects integration in dBase (you could import OBJ files from Microsoft C++). There was no way to natively use dBase from Turbo C++ or TurboPascal.

I'm guessing dBase was itself built using Microsoft's compilers, so pulling in other code from the same compiler was plausible. Not a product choice re: the Turbo compilers, just a disjoint path dependency between two acquired product lines (Ashton-Tate's dBase, and Wizard C).

This is the reason that Clipper, a third-party dBase compiler, could only link against .OBJs from particular versions of Microsoft C. Clipper compiles to p-code whose interpreter is implemented in Microsoft C; "linking" a Clipper program is actually linking a Microsoft C program with a static array comprising the Clipper compiler's output. So you can mix in a .OBJ expecting that version of the Microsoft C runtime library. Not a .OBJ expecting the Turbo C++ runtime library.

andrewf··on What we lost the last time code got cheap
I find the constant use of punchy style tiring.

Sometimes a "punch in the face" is useful. Makes you re-evaluate things. Being punched in the face all day, every day, is just tiring.

andrewf··on IBM didn't want Microsoft to use the Tab key to move between dialog fields
OS/2 1.0 and the first edition of the CUA were both released in December 1987 according to Wikipedia; Raymond's story isn't dated but could've happened before this. (If I had to make a wild guess, I could imagine this request was a side effect of some internal IBM battle about what the CUA should dictate).
andrewf··on Linux 7.0 Broke PostgreSQL: The Preemption Regression Explained
I don't think hardware page size has to match database page size. It would if Postgres was mmap'ing it. https://www.postgresql.org/docs/current/runtime-config-prese... says the database page size is 8KB by default.
andrewf··on Diatec, known for its mechanical keyboard brand FILCO, has ceased operations
Some keyboard enthusiasts obtain lighter keypresses by adding weight to the underside of the keys.
andrewf··on Advancing human gut microbiota research by considering gut transit time
Then you'll love https://onlinelibrary.wiley.com/doi/full/10.1111/jpc.14309

"Six paediatric health-care professionals were recruited to swallow a Lego head."

andrewf··on Mozilla Thunderbolt
1. Potential donors get upset that they can't make directed donations to specifically support Firefox or Thunderbird rather than the whole kit-and-kaboodle

2. Separate entity spun up to focus on Thunderbird only. Now you can support Thunderbird development directly.

3. New separate entity is now in the business of extensible AI clients?

EDIT: I went back and read the launch announcement [1]. I'll concede it does say "will also allow us to explore offering our users products and services that were not possible under the Mozilla Foundation" which could mean anything, really. And this development was funded by a Mozilla grant, importantly not by Thunderbird donors. I'm still struggling to not see this as a distraction from the core mission. I wish they'd spun up a new entity instead.

[1] https://blog.thunderbird.net/2020/01/thunderbirds-new-home/

andrewf··on IBM Announces Strategic Collaboration with Arm
AIX is still ppc64be. That and s390x are the only big-endian CPUs I can think of which aren't end-of-life, which I think is going to be an increasing maintenance burden over time for IBM alone.
andrewf··on Microsoft blocks trick to unlock native NVMe driver, but workarounds still exist
They may not be confident in its reliability over the fall gamut of cheap consumer drives.
andrewf··on How do you capture WHY engineering decisions were made, not just what?
Did he write down everything he learned? That way the next person only needs to cover the intervening time period.

Conceivably LLMs might be good at answering questions from an unorganized mass of timestamped documents/tickets/chat logs. All the stuff that exists anyway without any extra continuous effort required to curate it - I think that's key.

andrewf··on Practical Guide to Bare Metal C++
https://github.com/arobenko/embxx_on_rpi/blob/master/src/asm...

Their stuff isn't running on top of Linux on the Pi.

andrewf··on Palm OS User Interface Guidelines (2003) [pdf]
I worked for a company that published a PalmOS app. Palmgear.com was a very important distribution channel, but so was our own website, I forget the exact ratios.
andrewf··on Ask HN: Anyone have a good solution for modern Mac to legacy SCSI converters?
You could do "network shares" as in mount the filesystem from Linux and export over Samba/NFS/etc; it would probably also be possible to export the drive as an iSCSI device and mount HFS(+) filesystems directly from the Mac.
andrewf··on Tell HN: Properly using dishwasher reduced friction with my wife
> I assume we are using a lot more energy

What I've learned from visiting my own parents is, you can alleviate the energy concern, if you (1) get solar panels and (2) ban your spouse from running the dishwasher at night :P

andrewf··on Ask HN: Help with LLVM
https://devblogs.microsoft.com/oldnewthing/20130108-00/?p=56...

Sounds like this is about making .OBJs that fit in the conventions set by Win32 and the Microsoft linker. If you were using Microsoft's LINK.EXE I'd look at https://learn.microsoft.com/en-us/cpp/build/reference/nodefa... (and /Zi for the Microsoft compiler)

More generally, a lot of compiler generated code (including from LLVM IR -> native) will rely on compiler-specific runtime library functions, which aren't necessarily considered part of the "C runtime". https://wiki.osdev.org/Libgcc occupies this role for GCC-compiled code. See https://godbolt.org/z/fb75PPobz for an example (64-bit division on 32-bit x86 generates a call to ___divdi3)

andrewf··on The compiler is your best friend
Swap the parameters around for C++ and similar langs where `assert(a, b)` evaluates the same as `(void) a; assert(b)`.
andrewf··on Loss32: Let's Build a Win32/Linux
True
andrewf··on Loss32: Let's Build a Win32/Linux
https://j00ru.vexillium.org/syscalls/nt/64/

(One example: hit "Show" on the table header for Win11, then use the form at the top of the page to highlight syscall 8c)

andrewf··on Loss32: Let's Build a Win32/Linux
Starting with FreeBSD might be easier than starting with Debian then removing all the GNUisms. But perhaps not as much Type II fun.
andrewf··on Show HN: Ez FFmpeg – Video editing in plain English
Try something like: ffmpeg -i in.mp4 -c:v h264 -c:a aac out.mp4

To re-encode the content into H.264+AAC, rather than simply "muxing" the encoded bitstreams from the MP4 container into a new MOV container.

andrewf··on We replaced H.264 streaming with JPEG screenshots (and it worked better)
I'm on a media engineering team and agree that applying the tech to a new use case often involves people with deep expertise spending a lot of time in the code.

I'd guess there are fewer media/codec engineers around today than there were web developers in 2006. In 2006, Gmail existed, but today's client- and server-side frameworks did not. It was a major bespoke lift to do many things which are "hello world" demos with a modern framework in 2025.

It'd be nice to have more flexible, orthogonal and adaptable interfaces to a lot of this tech, but I don't think the demand for it reaches critical mass.

Page 1 of 27Next →