1.6K Followers
520 Following
14.6K Posts

I like video games, programming languages, and hacking things up with old video game hardware. I also post a lot about TV I'm watching, and sometimes books I'm reading too.

At my day job I hack on dev tools for a moonshot operating system, and I think Plan 9 is cool. I've also worked on social networks, streaming, and low level network software in the past at companies big and small.

Used to stream on twitch (as megmactv) but don't really anymore.

Anything I say here is 1000% my own opinion and probably no one, including any employers I have or have had in the past agree with me.

#NoUnroll

More Personalhttps://sunny.garden/@megan
PronounsShe/her but they/them is fine too
BoostsIf it's public or unlisted feel free!
Following backSay hi and probably! Here to interact!
Bluesky (not active)https://bsky.app/profile/megmac.tv
SignalSee pins

https://glauca.space/@r/116434222890632831

Ooh this is very cool. I really dislike that Firefox doesn't support webusb, even though I can see a logic to not supporting it.

R (@[email protected])

Attached: 1 image 🌟 Project Release Announcement Time! 🎉 I wrote a WebUSB extension for Firefox. This lets web pages access USB devices (with your permission). This has long been supported by Chrome, but Mozilla has not wanted it, at least by default. Fortunately, because add-ons are a thing (for now. make sure to keep fighting for this!), it's possible to change that! Common reasons for wanting this include programming microcontrollers, 3d-printers, smartphone bootloaders, and similar "physical computing" projects. This works on Windows, Linux, and macOS You can get the source code here: https://github.com/ArcaneNibble/awawausb In order to make this work, you will need to install a small program on your computer. This is explained in the README. You can then install the .xpi file (on the GitHub Releases page) into your browser (which was _just_ auto-approved while I was typing this announcement up). Please boost (if you want), test, report bugs, etc. etc. (although do keep in mind that this code is entirely written by a single catgirl) i think this is the perfect type of project to drop late on a sunday / very early on a monday?

Shark corner
Every time my configuration gets borked, I end up tinkering with my #Kobo and figuring out more things you can do with the FOSS ecosystem that's accumulated around it. This time, it was simpleUI https://github.com/doctorhetfield-cmd/simpleui.koplugin and Kobo sync integration https://ogkevin.github.io/kobo.koplugin/ , which together made me realize that I hadn't paid nearly enough attention to the #KOReader plugin options. I'm steadily creeping toward preferring it over Kobo's Nickel OS.
GitHub - doctorhetfield-cmd/simpleui.koplugin: A highly customizable UI plugin for KOReader that features a home screen, bottom navigation bar, top bar and desktop modules/widgets.

A highly customizable UI plugin for KOReader that features a home screen, bottom navigation bar, top bar and desktop modules/widgets. - doctorhetfield-cmd/simpleui.koplugin

GitHub
Another milestone towards spring: first groceries shopped by bike!

RE: https://social.treehouse.systems/@megmac/114428960305769404

I've switched to an email client that doesn't render the email nicely since last year so I'm just gonna quote last year's to say that I got accepted to volunteer as front of house for fringe again this year :)

Maybe I'll scan your ticket if you go! :)

#yegfringe

Me: I should go to bed. I haven’t been getting enough sleep lately.

Displaced Gamers on YouTube: Did you ever wonder how the original Final Fantasy battle engine handles physical attacks? Here’s a 30 minute deep dive into the code.

#retrogaming #reverseEngineering

If you are someone who feels very positive about LLMs helping you code, I think it would be very interesting for you to do the following experiments for a decent amount of time and see how much you still feel like that:

- Don't chatbot. At all. Don't use it for life advice and when interacting with it for work product, be direct, don't let it meander into getting pally with you so that it starts gassing you up by telling you you have good ideas or whatever. Basically stop anthropomorphizing it or letting it anthropomorphize itself.
- Actually review its code output as if *someone you don't know wrote it*. Like you're an open source maintainer and it's a drive-by. Do this *before* sending it to anyone else for review or committing it.

they said not to _invent_ the torment nexus but if somebody did invent one nobody said not to jam both my hands into it for months at a time
Kind of funny to be watching a movie set in Red Deer and get taken out of it for a minute because they get takeout from a Chinese restaurant and you can see that the sign on the outside is The Lingnan.
The forecast definitely did not prepare me for how much snow was gonna drop today. Looks like Christmas outside.

Was looking at the digital audio in Another World (aka Out of This World) and found it pretty fascinating.

The game has an all-digital soundtrack and supports digital playback on SoundBlaster, AdLib(!), and PC Speaker(!) I was curious to see how it manages to do digital sound across all these devices and came away pretty impressed.

For SoundBlaster it's straightforward, since the SB supports digital audio directly. However, the way the game runs the audio is unusual: it configures the PIT to generate 10,000 interrupts/second, and manually feeds a single 8-bit sample to the SB on each interrupt, rather than using PC's DMA controller to send data like almost every other game.

For PC Speaker, it uses a similar technique. But since the PC speaker is essentially a 1-bit DAC, it can't just feed an 8-bit sample to it. Instead, it changes the timer connected to the speaker, which is normally in "square wave" mode, to run instead in "one shot" mode. This means whenever a new timer count is written, the timer drives the speaker low until the count is expired, then the timer goes high again and remains there. By programming different values, the game essentially does pulse-width modulation at 10kHz to produce surprisingly reasonable digital sound.

For the AdLib, which is an FM-only chip, it uses a clever hack. It programs one channel for playback with instant attack and forever sustain, and starts a note playing. Then, almost immediately afterwards, it changes the note's frequency to 0, which causes the phase counter to stop counting and essentially locks the channel's output to whatever position within the sine wave it was when the frequency was nullified. With proper timing, it will be near its peak. At this point, the game can alter the channel's "total level" (aka volume) and change the magnitude of the locked output, basically making it into a DAC. The total level is only 6 bits, so it's lower fidelity than the SoundBlaster, but still sounds pretty decent.