HNHacker News
TopNewBestAskShowJobs

jamesbvaughan

1,236 karma · joined November 12, 2016

I write things and post them on https://jamesbvaughan.com

You can reach me at james@jamesbvaughan.com

I work at https://arcol.io and we're hiring!

meet.hn/city/us-Oakland

submissionscomments
jamesbvaughan··on Building the Open Task Light
I'm not the creator of the Open Task Light. I'm just a fan of the project and wanted to write about my build.

If you aren't familiar with the OTL, Steven's latest video is a good summary of the project: https://www.youtube.com/watch?v=ipVFRH6TQfM but the whole series of build logs is great.

jamesbvaughan··on A 3D fruit fly on macOS desktop powered by the real FlyWire connectome
That's a great one. It also made me think of Neal Stephenson's _Fall_.
jamesbvaughan··on Last.fm is now independent
I hope this is a good change for last.fm! I love the service but it's been trickier to use since I switched from Spotify to Apple Music.

Does anyone have a setup they're happy with for scrobbling from Apple Music across different types of devices?

jamesbvaughan··on Why the Sanitizer API is just `setHTML()`
Aside from the article's content, I really like the inline exercise for the reader with the hidden/expandable answer section. It's fun and it successfully got me to read the proceeding section more closely than I would have otherwise.
jamesbvaughan··on Thoughts on Mechanical Keyboards and the ZSA Moonlander
+1 to the Voyager. I switched to it a few years ago from the Moonlander and have been really happy with it. I like the smaller footprint, and the fact that it has fewer keys. Having fewer keys has forced me to create layers that keep everything within a closer reach so I'm stretching my fingers out to the edge keys less than I did with the Moonlander.

I split my time about 50/50 between the Voyager and my macbook's keyboard and mostly have no problem with the difference in layouts, but I wish I could set up layers on the macbook keyboard the same way I can with the Voyager.

jamesbvaughan··on iPhone 17 Pro and iPhone 17 Pro Max
> if that wide shelf will mean the phone doesn't wobble when placed on a table, that is a good usability improvement.

That's what I had hoped too, but from the images I've seen it looks like the cameras themselves bump out past the shelf far enough that it will still wobble.

jamesbvaughan··on Helix Editor 25.07
They're actually not videos! They're using asciinema: https://asciinema.org/, which is rendering actual text in the webpage - try selecting some while the recording is playing.
jamesbvaughan··on Code⇄GUI bidirectional editing via LSP
I was surprised by this too! I actually did a search for that character in order to check before posting this: https://hn.algolia.com/?q=%E2%87%84

I was a bit concerned that HN's algorithm might down-weight posts with non-ASCII characters in titles to discourage people from trying to attract attention with them, but it seems like it's fine?

jamesbvaughan··on Code-GUI bidirectional editing via LSP
That's cool! I suspected that someone must have done something like this before.
jamesbvaughan··on A surprising scam email that evaded Gmail's spam filter
I suspect that the strategy I've described in my the post (forwarding a signed email with some modified headers) isn't actually new, and that it's just the first time I've looked closely enough to become interested in how it works.

The whole "put a misleading string in the PayPal name field" thing may be new.

> How would they even validate their new attack vector? I would like to think that there’s scam A/B testing or something similar…

I'm curious about that as well. My guess is that there's nothing as sophisticated as A/B tests with measured results going on, but I'd love to learn more.

jamesbvaughan··on My YouTube Watch Later Mystery Graveyard
I hadn't thought to use the internet archive for this! From a quick check on a few of the unavailable videos on my list, it seems to work well.

Thanks!

jamesbvaughan··on Repair and Remain (2022)
Stripe's Increment Magazine was pretty cool, but it seems like they stopped publishing new editions in 2021: https://store.increment.com/

On the slightly less technical side, I've been enjoying Asterisk Mag: https://asteriskmag.com/

jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
Wow I had no idea that this was possible, thanks!
jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
If you end up looking for a product that does this rather than building it yourself, I've had a good experience with the WiiM Mini: https://wiimhome.com/wiimmini/overview
jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
> This works because function.toString() in modern runtimes gives you back fully parse-able input source.

TIL - that is good to know. I'll probably leave the post as-is but I will use that in the future.

jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
Oh cool, I wasn't aware of the book but I'll check it out.
jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
> Volume controls also shouldn't just be a flat wideband gain - they should respect how we actually perceive sound so the timbre doesn't change as the level changes (when you turn the volume down, you are typically left with just the stuff in the vocal frequency range, and lose all the bass etc).

The amp I'm upgrading from was interesting in this regard. In addition to the main volume knob, it had a loudness knob. The manual actually recommended keeping the volume knob fixed most of the time and using the loudness knob to set the listening level throughout the day.

From the manual:

> 1. Set the LOUDNESS control to the FLAT position.

> 2. Rotate the VOLUME control on the front panel (or press VOLUME +/– on the remote control) to set the sound output level to the loudest listening level that you would listen to.

> 3. Rotate the LOUDNESS control counterclockwise until the desired volume is obtained.

jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
> Seems like the author moved from a “speakers + networked amp” setup, to a one where with active speakers where everything is built-in.

Close! I moved from a "speakers + non-networked amp + streamer" setup.

I'm still running separate components for nearer-field listening at my desk, where I've got KEF Q150s powered by a small Schiit pre-amp and amp.

jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
They do require the Content-Type header
jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
It seems that you’re correct! I’m not sure what led me to believe that. I’ll update the post when I get home later.

edit: fixed

I dug into the API similarities between the speakers more and it seems like they're both using this software called StreamSDK [1]. I hadn't heard of that and it's given me more to research on these.

[1] https://www.streamunlimited.com/stream-sdk/

jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
The only competitor that I've given a fair shot is Apple Music. I'm not thrilled with either. Between those two, Spotify wins solely for Spotify Connect. I much prefer the way it works to AirPlay.

I haven't really tried YouTube Music, but I'll give it a go. I've been meaning to try out Tidal too but haven't yet.

jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
That seems like it could be perfect. Thanks!
jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
ooh, thanks for this. I will check that out!
jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
You're correct, TIL!

That's really helpful to know. At this point though, I'm excited enough to build a volume knob that I'll probably still do it.

edit: After trying this out it a bit, it's definitely an improvement over the small sliders and a huge improvement over the stepped volume changes from the buttons, but I'm still left wishing I could make use of more than ~10% of the slider's full range.

jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
Don't worry - that couch isn't for listening :)

I've got a very comfy and intentionally positioned chair on the other side of the room for that.

jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
For now, yes. I'd also like to make a standalone wireless physical volume knob and I may try to make an iPhone app for it. Ideally I'd be able to override the behavior of the volume buttons, similar to how Spotify is able to do that on iPhones when you're using Spotify Connect.
jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
It is concerning. On this particular model, it's available over plain HTTP, provides no auth settings, and provides an easy input for uploading new firmware.

https://jamesbvaughan.com/volume-controller-1/basic-web-inte...

jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
That helps explain why the "volume" as represented on disk in the debug bundle as "attenuation" and was measured in negative dB.
jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
This is a great point! When I'm using AirPlay, that feature is really useful. I'm more often using Spotify Connect though, where I'm limited to either using the physical volume buttons on my phone, the small slider in the desktop app, or the slider that's many clicks in to the Spotify mobile app.

In reality though, this project is more about the fun of it than about it being a really pressing need.

jamesbvaughan··on Reverse-engineering my speakers' API to get reasonable volume control
In this case, I was using the optical out from a WiiM mini into a Yamaha amp. I don't know much about digital audio, but I know that I was able to control the volume of the WiiM's digital output with that setup.

On the other hand, I use a Schiit Asgard at my desk, where I have it connected to my Mac via USB-C. In that setup, I have no control over the volume level going in to the Asgard. MacOS just disables the software volume control when I'm using that audio output.

Page 1 of 4Next →