HNHacker News
TopNewBestAskShowJobs

dietrichepp

4,384 karma · joined October 29, 2012

http://www.moria.us/
submissionscomments
dietrichepp··on 1-Bit Hokusai's "The Great Wave" (2023)
I also run some accounts on BlueSky and Twitter that focus on 1-bit art:

https://bsky.app/profile/1bitdreams.bsky.social

https://x.com/1BitDreams

I see maybe 10 or 15 new pieces of 1-bit art posted on those platforms each week. A couple recent ones:

https://bsky.app/profile/ncesium.bsky.social/post/3miwkrqev5...

https://bsky.app/profile/oddbones.bsky.social/post/3mi7pedpn...

dietrichepp··on Drugwars for the TI-82/83/83 Calculators
I remember playing this, but also a puzzle game called “dstar”, which I ported to the web: https://www.moria.us/games/dstar/play
dietrichepp··on Game Boy Advance Audio Interpolation
This is great stuff… basically, an easy way to get much higher quality audio out of a GBA emulator.

I’ll add some context here—why don’t more games run their audio at 32768 Hz, if that’s such a natural rate to run audio? The answer lies in how you fill the buffers. In any modern, sensible audio system, you can check how much space is available in the audio buffer and simply fill it. The GBA lacks a mechanism to query this. Instead, what you do is calculate this yourself, and figure out when to trigger additional audio DMA from the VBlank interrupt. You know the VBlank runs every 280896 cycles, and you know that the processor runs at 16777216 Hz, so you can do some math to calculate how much data is remaining in the audio DMA stream.

A lot of games simplify the math—it’s easier to start a new audio DMA in your VBlank handler, but that means running at a lower sample rate, which will sound pretty crispy.

YMMV, some people like the crispy aliased audio. If the audio weren’t crispy, the sound designers probably would have adjusted the samples to compensate. Other factors being equal, I’d rather listen to what the original artists heard when they were testing on real hardware, because that is probably closer to what they intended, even though it has a lot of artifacts in it.

dietrichepp··on Ask HN: What are you working on? (February 2026)
Recently fixed bugs in an audio encoder / decoder (VADPCM) I reverse engineered from the Nintendo 64, and some people are apparently using it to dub Conker’s Bad Fur Day into Spanish.

On-and-off again working on a Mystery Dungeon style game but I have a lot of obligations taking me away from it.

Planning on making demoscene entries this year.

dietrichepp··on Toll roads are spreading in America
If we only had trucks on the road, we’d need less road, right? The street where I live could be about a third of the width if it were not for personal cars.
dietrichepp··on Toll roads are spreading in America
The civic barely does anything to a road, except require its existence and maintenance, and it turns out that roads are expensive to build and maintain (even if only damaged by weather).
dietrichepp··on Awk Technical Notes (2023)
> Why are you using the locale-specific [:space:] on source code?

Because it’s the one I remembered first, it worked, and I didn’t think that it needed any improvement. In fact, I still don’t think it needs any improvement.

dietrichepp··on Awk Technical Notes (2023)
Somebody wanted to set breakpoints in their C code by marking them with a comment (note “d” for “debugger”):

  //d
You can get a list of them with a single Awk line.

  awk -F'//d[[:space:]]*' 'NF > 1 {print FILENAME ":" FNR " " $2}' source/*.c
You can even create a GDB script, pretty easily.

(IMO, easier still to configure your editor to support breakpoints, but I’m not the one who chose to do it this way.)

dietrichepp··on Awk Technical Notes (2023)
Awk is still one of my favorite tools because its power is underestimated by nearly everyone I see using it.

    ls -l | awk '{print $3}'
That’s typical usage of Awk, where you use it in place of cut because you can’t be bothered to remember the right flags for cut.

But… Awk, by itself, can often replace entire pipelines. Reduce your pipeline to a single Awk invocation! The only drawback is that very few people know Awk well enough to do this, and this means that if you write non-trivial Awk code, nobody on your team will be able to read it.

Every once in a while, I write some tool in Awk or figure out how to rewrite some pipeline as Awk. It’s an enrichment activity for me, like those toys they put in animal habitats at the zoo.

dietrichepp··on Things you can do with diodes
I have the Heritage HA-609A. I considered going 500-series. Maybe some day in the future. For now, I have two preamps and the HA-609A in a 4U rack, and most of my other gear is in storage. Keeping things light.
dietrichepp··on Things you can do with diodes
It would be like this either way.

The N side has negative charge carriers. It has a positive charge in the depletion region because the charge carriers are missing. Likewise, the P side has positive charge carriers, and when they’re missing, you get a negative charge.

This is true whether we live in the current universe or live in an alternate universe where we say that electrons have positive charge. The depletion region is where the charge carriers are missing (depleted), so you get the opposite charge of whatever the charge carriers are.

dietrichepp··on Things you can do with diodes
Conspicuously absent are some of the analog circuit applications. Here are three of my favorites:

1. Frequency mixer, used for heterodyning, important in radio, so I hear. https://en.wikipedia.org/wiki/Frequency_mixer

2. Log converter, where the output voltage is proportional to the logarithm of the input voltage. https://electronics.stackexchange.com/questions/374440/log-c...

3. Diode ring, which provides variable gain, used in analog compressors like the Neve 33609 (I have a clone of the 33609, and I’m very fond of it)

Think about this: if you have a nonlinear device like a diode, then the dynamic resistance changes depending on the operating point. If you modulate the operating point, you’re modulating the dynamic resistance.

dietrichepp··on QuickDrawViewer: A Mac OS X utility to visualise QuickDraw (PICT) files
Fantastic—I’ve written a QuickDraw PICT converter, but I focused narrowly on just extracting pixel data. The format is basically a way to encode QuickDraw drawing commands, and getting the original image back (in the general case) means reimplementing QuickDraw.

The old Mac game Avara used this format for levels. It was funky… you could place blocks in a 3D world, and control elevation and height by changing the corner radius of rectangles. You needed a QuickDraw image editor to make levels, like ClarisDraw.

dietrichepp··on When you opened a screen shot of a video in Paint, the video was playing in it
Yes, other Mac AV models did the same thing. I remember doing this on the 6100/60AV that we had.
dietrichepp··on Why is choral music harder to appreciate?
I listen to a fair amount of choral music, from plainchant and organum up through modern and contemporary works. I think the short answer is missing, which is that most choral music just isn’t that exciting.

The Wikipedia article for the Motet has an interesting quote which echoes the sentiment here:

> [the motet is] not to be celebrated in the presence of common people, because they do not notice its subtlety, nor are they delighted in hearing it, but in the presence of the educated and of those who are seeking out subtleties in the arts.

This quote is attributed to Johannes de Grocheio in the 1200s! That means that people have been saying that choral music is hard to appreciate for more than seven hundred years.

dietrichepp··on A month using XMPP (using Snikket) for every call and chat (2023)
Company I worked at back then used XMPP. There was something that you could paste into the chat that would make all of the Mac clients crash, and to fix it, someone with a different client would have to join the chat and type a lot of comments to flood the history.

I am not surprised to hear the protocol is an abomination.

dietrichepp··on MacPaint Art from the Mid-80s Still Looks Great Today
Taking this moment to promote 1-bit art! I run a couple accounts which promote 1-bit art and I’m trying to figure out how to expand what artwork is included. These are just personal accounts that retweet art from 1-bit artists on BlueSky and Twitter.

https://bsky.app/profile/1bitdreams.bsky.social

https://x.com/1BitDreams

dietrichepp··on Planetfall
The one complaint about sound design is how the background music works. I think it starts playing when you’re not active, but on any given playthrough, it never gets a chance to trigger.

There are separate soundtracks for each faction, I think.

dietrichepp··on A note on the USB-to-PS/2 mouse adapter that came with Microsoft mouse devices
Interesting, I have a Roland S-330 from the late 1980s and my main concern getting it was the floppy drive viability. It didn’t occur to me that the mouse would be difficult.
dietrichepp··on Whose code am I running in GitHub Actions?
Sounds like you are assuming that I have a server always running for this stuff? That assumption is wrong. I don’t want to run CI servers. If I had servers always running, I would install Jenkins on them and the problem would be solved.
dietrichepp··on Whose code am I running in GitHub Actions?
What I want is something like “please run this command on a server somewhere when event X happens”. Seems like the options are along the lines of:

1. SaaS CI/CD products, like GitHub Actions,

2. Run your own Jenkins cluster,

3. Figure out how to orchestrate cloud resources to do this for you.

Maybe there are easy options that I’m missing. I don’t really want to create docker containers just to build some program I’m working on.

dietrichepp··on Whose code am I running in GitHub Actions?
I just started using GitHub Actions for a personal project, and as you do, I trawled HN for opinions on how to use it.

At first I built a workflow out of steps published on GitHub. Use ilammy/mms-dev-cmd, lukka/get-cmake, lukka/run-vcpkg, all to build a project with CMake for Windows targets. Of course I referred to actions by SHA like you should

   uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756
But one comment stuck with me. Something like, “You should just run your own code on GitHub Actions, rather than piecing it together from publicly available actions.” That made a lot of sense. I ended up writing a driver program for my personal project’s CI builds. One job builds the driver program, and then the next job runs the driver program to do the entire build.

I wouldn’t do this if I were getting paid for it… it’s more time-consuming. But it means that I am only minimally tied to GitHub actions. I can run the build driver from my own computer easily enough.

dietrichepp··on Shaker Desk – Paul Gold of Salt Mastering [video]
Paul Gold, owner of Salt Mastering in Brooklyn, NY, describes the custom A/B path console he designed and built to master audio from open reel tape to lacquer master in order to create vinyl records without using a computer.
dietrichepp··on Q2DOS – Quake 2 backported to MS-DOS
I don’t think you could fairly say Windows 95 is an exokernel to DOS. Windows 95 is a whole OS, which happened to go through DOS during the boot process, and keep bits of DOS around for certain pieces of functionality (device drivers?)

Maybe Quake II on DOS will run with less system memory than the Windows version.

dietrichepp··on Ask HN: Songwriters, what software do you use?
Logic has support for adding lyrics. Create a MIDI region, select it, and press N to open the score editor. Make sure the inspector is open on the left, press I to open it if necessary. There is a block which says “part box” and inside it, LYRIC. This lets you put lyrics in the score.

That said, it’s not one of the strengths of Logic to use it this way.

dietrichepp··on Ask HN: Songwriters, what software do you use?
I don’t see how this would help me, sorry. It looks kind of like a more advanced thesaurus or something. I understand why some people might like this sort of thing but it’s kind of the opposite of what I want.

I’m not using RhymeZone less and less because RhymeZone could be better at what it does. I’m using RhymeZone less and less because the problem that RhymeZone solves is becoming less and less relevant to my process.

dietrichepp··on Ask HN: Songwriters, what software do you use?
Currently working on an album.

Software I use for songwriting: mostly Logic, also Dorico. Voice memos. Rhymezone sometimes. Rhymezone seems less and less helpful as I go on. I hardly use text editors for lyrics, paper seems to work a lot better. I end up with a lot of scribbles all over the paper.

AI suggestions for songwriting seems a bit like turning on cheat codes in a game. Cheat codes will help me beat a game faster. The cost? The game is less fun, and the whole reason I play games is to have fun. Songwriting is an activity for me, like gardening or running or something like that. Or putting together a jigsaw puzzle. If you had an AI assistant that could help you put together a jigsaw puzzle, would you use it?

There are AI tools around and some work decently well:

- Logic has session players. I don’t think they’re AI, but they are decent at putting up the skeleton of a song.

- AI-powered stem-splitting tools help you pick apart songs you like and figure out how they work.

- AI-powered song mastering tools produce dubious output. I have gone through multiple iterations with AI-powered tools and ended up happier just mastering the song myself.

LLMs seem like the great failure here.

dietrichepp··on Move Fast and Abandon Things
I’ve been going back and working on retro development. These days, making software for the 68K Macintosh, which is where I learned to program in the first place. I dug a lot through old books, comp.sys.mac.programmer posts, and the source code from Soft Dorothy and others (like the GliderPro source).

It’s a trip seeing this old code through new eyes. I can see why the old Macs crashed so much (beyond the basic “they had no memory protection” explanation). I’m also fond of the 1-bit art, like the author mentions, and I curate a list of accounts on Twitter which post 1-but artwork (if you know anybody who’s missing from the list, let me know): https://twitter.com/i/lists/1578111923324944397

The nice thing about programming for a limited system is that it limits your options. It’s a nice break from the more modern experience where you can do anything by pulling in the right library. I sometimes imagine a world where computational power is frozen, and we simple get better and better software for systems that are well-understood. The thing about these old systems like the Mac 68K machines is that the pace of hardware development was so fast it made you dizzy. If a new processor came out like the 68020 or 80386, then you had maybe a couple years at most to make something that really used it to its full potential. If you waited too long, you’d be competing against a new generation of software written for a new generation of hardware.

dietrichepp··on Oya, I've heard of mega-ROMs
> Normally, I would expect floating address pins to be completely random, but this was very consistent.

I think “random” assumes some kind of perfect conditions. There will be leakage current to ground, leakage current from Vcc, and the actual threshold between high and low for the input will be some particular value.

Just a quick look at the data sheets for the SN54LS670 from TI, and I see that the output pin leakage current is rated at no more than 20 µA. That’s worst-case, but if you apply Ohm’s law and plug in 3.3 V, you get something on the order of 160 kΩ output impedance. I have a limited understanding of electronics and I’m sure I’m missing something, but I’d expect a lot of the output pins to settle on a reasonably stable voltage when they are turned off. Maybe natural variations in geometry or chemistry will push some pins higher and other pins lower.

You can run an entire CPU core with less than 20 µA current these days, just to give it a sense of scale.

dietrichepp··on Playstation 2 GS emulation – the final frontier of Vulkan compute emulation
It’s hard to compare memory bandwidth of these systems because of the various differences (e.g. different RAM types). I know that the theoretical RAM bandwidth for the N64 is way higher than what you can practically achieve under typical conditions.
Page 1 of 32Next →