James Munns (Twitter Archive)
bitshiftmask.bsky.social
James Munns (Twitter Archive)
@bitshiftmask.bsky.social
A twitter archive of @bitshiftmask

Owned by @jamesmunns.com on bluesky
In case folks are still moving over, reminder I'm over there too, still doing all the electronics, embedded, rust, and protocol stuff I've always been doing :)
November 3, 2024 at 10:42 PM
📣 Second episode of the "Self-Directed Research Podcast" with me and @fasterthanlime is now up! This episode is "BBQueue - Going Just Far Enough with Generics"!

Links to Apple Podcasts and Spotify below :D

https://sdr-podcast.com/episodes/bbqueue/
November 3, 2024 at 10:42 PM
The first episode of the "Self-Directed Research Podcast" with me and @fasterthanlime is now up! The podcast is a weekly deep dive, and this first episode is Amos exploring what they got right, and what they got wrong, when it comes to Rust build...
November 3, 2024 at 10:42 PM
Hey, just a rememinder: I'm pretty active over on the other site, and as of today, you no longer need an invite to sign up!

It would be cool to see more Rust and Embedded folks over there.
November 3, 2024 at 10:42 PM
I have 4 more bsky invites for mutuals, reply or shoot me a DM if you need one.
November 3, 2024 at 10:42 PM
Reminder, you can find me in a bunch of other places here: https://jamesmunns.com/contact/

Cohost and Bluesky are my favs right now, and Matrix is always a good choice.

If you find anywhere that has a bunch of embedded and/or rust folks there, lemme know :D
About + Contact
jamesmunns.com
November 3, 2024 at 10:42 PM
Update, added bluesky to my list of websites. Find me there if you'd like. (I don't have invites)

Still most active on Cohost and Matrix. Full list of places to find me in the linked tweet.
November 3, 2024 at 10:49 PM
I updated my website with all of the other services you can find me on. Do me a favor: if we aren't mutuals somewhere else, follow me on one of these, or shoot me an email and just say hi!

Never hesitate to reach out.

https://jamesmunns.com/contact/
About + Contact
jamesmunns.com
November 3, 2024 at 10:42 PM
Nope, that’s it. That’s the line. I’m off twitter now. Follow me over at <a href="http://cohost.org/jamesmunns," class="hover:underline text-blue-600 dark:text-sky-400 no-card-link" target="_blank" rel="noopener" data-link="bsky">http://cohost.org/jamesmunns, or shoot me an email. I’m not hard to find.
November 3, 2024 at 10:42 PM
For no reason at all, if you haven't heard of "Chesterton's Fence" before, this might be an interesting, topical read.

In particular, it's important to understand systems (and how and why they came to be, for better or worse), before changing them.

https://fs.blog/chestertons-fence/
Attention Required! | Cloudflare
fs.blog
November 3, 2024 at 10:42 PM
Continuing my sleep deprived audio hacking, figuring out how to calculate Euclidean Rhythms, but very efficiently:

https://cohost.org/jamesmunns/post/276695-a-simpler-way-to-cal
A simpler way to calculate Euclidean Rhythms
Euclidean Rhythms [https://dbkaplun.github.io/euclidean-rhythm/] are a cool way to generate beat patterns, originally shown to me by @jjbbllkk. There's a paper (pdf) [http://cgm.cs.mcgill.ca/~godfried/publications/banff.pdf] that describes a way to calculate it, by shuffling the beats and rests to make sure they are well spaced. There IS a rust crate that does this, but it follows the paper's methods fairly directly, which requires a bunch of SmallVecs, and I don't love it: https://github.com/padenot/euclidian-rythms/blob/3c72f37ff8a6c1b7897fdc783e52fabe8eb45dc8/src/lib.rs#L5-L72 [https://github.com/padenot/euclidian-rythms/blob/3c72f37ff8a6c1b7897fdc783e52fabe8eb45dc8/src/lib.rs#L5-L72] Instead, I have hit the problem with loops and bit math, which allows me to handle the problem much more comfortably on embedded systems: pub struct Euc32 { interval: u32, data: u32, } impl Euc32 { pub fn new(hits: u32, interval: u32) -> Option<Euc32> { if hits == 0 { return Some(Euc32 { interval, data: 0 }); } if (hits > 32) || (interval > 32) || (hits > interval) { return None; } let mut ctr = 0u32; // TODO: There's probaby a *math* way to do this without // a loop, but whatever while ctr < interval { ctr += hits; } let mut data = 0; for i in 0..interval { if ctr >= interval { data |= 1 << i; ctr -= interval; } ctr += hits; } Some(Euc32 { interval, data }) } } This gives me the results I expect: test euc::test::sevens ... 0: [.......] 1: [x......] 2: [x..x...] 3: [x.x.x..] 4: [x.x.xx.] 5: [xx.xxx.] 6: [xxxxxx.] 7: [xxxxxxx] ok test euc::test::thirteens ... 00: [.............] 01: [x............] 02: [x.....x......] 03: [x...x...x....] 04: [x..x..x..x...] 05: [x..x.x..x.x..] 06: [x.x.x.x.x.x..] 07: [x.x.x.x.x.xx.] 08: [x.xx.x.xx.xx.] 09: [xx.xx.xx.xxx.] 10: [xxx.xxx.xxxx.] 11: [xxxxx.xxxxxx.] 12: [xxxxxxxxxxxx.] 13: [xxxxxxxxxxxxx] ok
cohost.org
November 3, 2024 at 10:42 PM
Been hacking on some stuff for my generative synth, primarily how to build/store musical notes.

I also wired it up so it can:

A: generate midi of the stored contents
B: you can use a tool (MuseScore) to dump the midi to music notation

This is mary had a little lamb
November 3, 2024 at 10:42 PM
wait why are the bluechecks actually blue and not white now?

it's still the same for both paid and "classic" verified accounts.

(this is rhetorical, I know none of it actually makes sense)
November 3, 2024 at 10:42 PM
Someone made an RV32I VM for the 8051, which means you can write Rust binaries that target RV32I, and run them on an 8051.

That's just, whew. Is it a good idea? I have no idea! Is it badass? Yes, very much so.

https://github.com/cyrozap/rv51
GitHub - cyrozap/rv51: A RISC-V emulator for the 8051 (MCS-51) microcontroller.
A RISC-V emulator for the 8051 (MCS-51) microcontroller. - cyrozap/rv51
github.com
November 3, 2024 at 10:42 PM
I cannot begin to explain to you the things you are missing over on @cohost_org. This is all done in CSS.
November 6, 2024 at 12:38 AM
Is there a tool that lets me store a snapshot of my followers/following list, that gets:

* Their current profile contents
* Their twitter accountID?

I have my export, but that ONLY has accountIDs, and no way to map that to account/names
November 3, 2024 at 10:42 PM
Just came up with an awesome URL pun name, and while the domain is available, it's 325 EUR.

It's a funny joke, I just don't know if it's a 325 EUR funny joke.
November 3, 2024 at 10:42 PM
I take a weird pleasure in writing things like “y’all’s” in semi-formal communication.

In context: “regarding y’all’s project,”
November 3, 2024 at 10:42 PM
Oh, I should probably do the bare minimum of advertising my consulting practice, and make like... a website or something, huh?

I guess people gotta find me somehow in the post-twitter era.
November 3, 2024 at 10:42 PM
Every time I think about building a small electronic project, the fact that the RP2040 is thumbv6m makes me sad.

I just want my atomics, okay?
November 3, 2024 at 10:42 PM
What if:

A writing collective, where you are required to egg other people into writing about a thing to get over their writers block.

No one chooses their own topics. All members have two jobs:

* Egg other people into writing something
* Write the topics other people ask for
November 3, 2024 at 10:42 PM
Elon buying twitter / Elon burning it down

(in this metaphor twitter is the lamp, I think)
November 3, 2024 at 10:42 PM
Don't know who to follow on @cohost_org?

I wrote up my first "follow friday" there. Not sure if you want to sign up for cohost? Take a look at some of the accounts I linked!

Because cohost is an Actual Website, you don't need an account to read...
November 3, 2024 at 10:42 PM
I've seen things you people wouldn't believe... Attack ships on fire off the shoulder of Orion... I watched C-beams glitter in the dark near the Tannhäuser Gate. All those moments will be lost in time, like tears in rain...
November 3, 2024 at 10:42 PM