@isntitvacant@hachyderm.io
@isntitvacant@hachyderm.io avatar

isntitvacant

@isntitvacant@hachyderm.io

current principal eng at dylibso; former Node.js TSC & NPM registry eng / systems eng (❤️ rust, bash, js, tf) / sometimes illustrator / pets cats; pronouns he/him

This profile is from a federated server and may be incomplete. Browse more on the original instance.

enantiomer, to random
@enantiomer@stoat.zone avatar

OK, but did I tell you about the time I started thinking up names for starships and never stopped?

https://gist.githubusercontent.com/bonkydog/39d0c9d60373538e411dbd1603eb237f/raw/f73155ee782c06898d94ef510ad54f451d047c27/starship-names.txt

isntitvacant,
@isntitvacant@hachyderm.io avatar

@enantiomer (D)ROU (parenthetical)

isntitvacant, to random
@isntitvacant@hachyderm.io avatar

we may not have heat right now, but we do have electricity, so... I guess I'm compiling node to keep my lap warm now?

squillace, to random
@squillace@hachyderm.io avatar

how long does node usually take to compile? Asking for a friend.

isntitvacant,
@isntitvacant@hachyderm.io avatar

@squillace Anecdotally, about 10 minutes on this M1 Pro Max. (./configure; make -j12)

isntitvacant, to random
@isntitvacant@hachyderm.io avatar

8 hours without electricity (and thus, without heat.) We’re doing okay— we have the fireplace going and the cats have camped out on us.

But oof.

isntitvacant, to random
@isntitvacant@hachyderm.io avatar

The worst part about this race condition bug is that it occasionally takes minutes of sustained runs to surface.

Which is great, not only for context switching, but also because I'm beginning to feel like Charlie Brown with the football.

"This time, surely I have it!"

isntitvacant,
@isntitvacant@hachyderm.io avatar

The really weird thing that surfaced was that an "impossible" value appeared in the shared array buffer – like, a value that could not have been placed there by the only thread that can, uh, place values there.

So uh I don't trust computers anymore. It's especially fun because two different V8-based JS engines exhibit drastically different behaviors – node vs. deno. (Deno never exhibited the bug, but Node did.)

isntitvacant,
@isntitvacant@hachyderm.io avatar

This is, by far, the longest successful run I've had of the Node program – transferring 18k bytes between threads 8 bytes at a time (zippy!) in a tight loop as a stress test. Usually it fails within 5-10 minutes, and it's been going for a good 20 or 30 now.

Now, let's try jinxing it by saying this out loud.

isntitvacant, to webassembly
@isntitvacant@hachyderm.io avatar

I'm excited to share that Dylibso just released v1.0 of the Wasm framework we've been working on, Extism!

https://dylibso.com/blog/announcing-extism-v1/

For folks who are unfamiliar, Extism smooths the sharp edges of working with Wasm modules by making it easy to transfer data –in your encoding of choice– from our host SDKs to Wasm modules using our plugin dev kits across a ton of languages.

It continues to be a privilege to work with this team and I'm excited for the future of this project!

isntitvacant, to random
@isntitvacant@hachyderm.io avatar

There’s a better name for this but the term escapes me: an extent of memory used to transfer between two threads. Thread B waits for Thread A to write N bytes into the buffer, A pauses while B copies those bytes into memory owned by B, B resets the byte count, returning control to A to copy more bytes.

isntitvacant,
@isntitvacant@hachyderm.io avatar

@danfuzz Yes! That's it. Thank you!

reconbot, to 3dmodeling
@reconbot@toot.cafe avatar

I learned technical drawing on paper in highschool (it was old knowledge even then) and now I want to sketch something up on the computer... how?

It's just some home renovations, I need to model how to cut the wood. I'm going to use paper in the meantime but some sort of CAD would be rad.

isntitvacant,
@isntitvacant@hachyderm.io avatar

@reconbot I used blender for this in a pinch – it can specify dimensions in terms of inches and feet, so I used it to make a 3d model of my house (and the supports etc)

isntitvacant, to random
@isntitvacant@hachyderm.io avatar

I'm grasping at straws, but it would be really funny* if this race condition turned out to be introduced by the minification step of the bundler somehow

*: funny in the "go see sad clown pagliacci" sense, I guess

b0rk, to random
@b0rk@jvns.ca avatar

do we think of git commits as diffs, snapshots, or histories? https://jvns.ca/blog/2024/01/05/do-we-think-of-git-commits-as-diffs--snapshots--or-histories/

isntitvacant,
@isntitvacant@hachyderm.io avatar

@b0rk great post! I noticed one thing, re: packfiles: deltas in a packfile can be layered — the “older” the object, the more likely it is to be delta’d multiple times. (Git tries to sort blob objects by file path, then age to get a delta list.)

(The wording around most explanations of this is ambiguous: git always applies the delta to a decompressed object, but it can get that decompressed object by applying a delta to another object — so you can get a long chain of offset delta’d objects.)

ahl, to random
@ahl@mastodon.social avatar

2+ years ago, I started working on this compiler that takes json schema and emits rust structure that conform to that schema. I’d like to write a blog post about it, ways I screwed up, increased antipathy for json schema, tricky edge cases, etc.

Does this sound interesting? Or would it be—as I suspect—just for my own catharsis?

“Rust and JSON Schema: odd couple or perfect strangers”?

isntitvacant,
@isntitvacant@hachyderm.io avatar

@ahl Ooh, please do write this!

isntitvacant, to random
@isntitvacant@hachyderm.io avatar

mmph, so. One of the @deno_land features I was leaning on for that multi-target package, namely deno.json import aliasing, only works for Deno applications, not libraries.

It would be great if it worked at a library level — as is, I have to rip out & replace a bunch of config to lean on esbuild plugins to get the desired functionality.

isntitvacant,
@isntitvacant@hachyderm.io avatar

@deno_land Thanks! If it helps, I have a working example of a package that has to target multiple JS platforms with notes about how we implement that support; I'd also be happy to give feedback if you'd find that helpful!

isntitvacant, to random
@isntitvacant@hachyderm.io avatar

So, I knew about McIlroy’s 1968 “Mass Produced Software Components” 1, but only just found out about Lampson’s response in a 2004 Microsoft research paper 2 — which pushes for specs “with teeth”. Also, Stepanov’s response via talk 3, which reframes the problem in terms of economic policy!

tef, to random
@tef@mastodon.social avatar

sorry to tech post but i have seen a "when to use microservices" post and it's kinda got the whole cause and effect mixed up

"you can use it to decouple things" isn't how it works, things aren't less decoupled by virtue of sending a packet

the point is, you start out with decoupled things, and decide to keep them that way

it's not so much mono vs micro, it's "things that get changed at the same time, should be in the same place"

isntitvacant,
@isntitvacant@hachyderm.io avatar

@hazelweakly @tef This is what drew me to the Wasm component model, which essentially makes it safe to embed multiple runtimes into a single process by abstracting the boundaries between them. It’s aimed right at McIlroy’s plea for mass-produced software components.

(Though, like every attempt to bake virtualization into a platform layer, it’s not free — both in terms of performance and conceptual overhead)

isntitvacant, to random
@isntitvacant@hachyderm.io avatar

welp, a city of portland truck rolled by this morning, caught the internet line to our house on its cherry picker, and ripped it clean off the side of the house (and then drove off without stopping, lol)

so uh. spent the rest of the morning navigating xfinity’s customer support — patiently telling a robot that “no, powering off the router probably won’t fix this” and communicating “hey, a cable in the street is probably a safety hazard.” We’re now waiting for word back from xfinity.

isntitvacant,
@isntitvacant@hachyderm.io avatar

cool, just got a text that Comcast closed the support ticket. No one has been out, there’s a cable hanging over my neighbor’s driveway, and I can’t get a human on support.

I even went to the local xfinity store a second time after getting the text that the ticket was closed after no other contact.

I don’t mind the outage as much as I mind the road-width of coaxial cable hanging into someone’s driveway and sidewalk. What a headache.

mcc, to random
@mcc@mastodon.social avatar

I am about to try passing an async function to a promise .then. This will do what I expect, right? Like, it will call the async function with the arguments, the async function will return a promise (because that's what happens when you call an async function) and then it will wait on the returned promise? Right?

isntitvacant,
@isntitvacant@hachyderm.io avatar

@mcc you'll probably want an await in front of Promise.all – otherwise the calling code will breeze on past the invocation after enqueuing it.

isntitvacant,
@isntitvacant@hachyderm.io avatar

@mcc Yes-ish? It depends on how/if you want to intercept any exceptions thrown by the promises or the callback.

(But yep, the promise should keep the program alive until it settles!)

isntitvacant, to random
@isntitvacant@hachyderm.io avatar

At about 4pm today, I abruptly shifted into holiday mode.

It's like that moment right after a power outage where the background hum of your house disappears and it somehow, improbably, gets more quiet than you thought it could.

isntitvacant, to random
@isntitvacant@hachyderm.io avatar

I’m thinking back over the history of JS over the last 23 years from the lens of ABIs and compile targets.

It’s interesting to consider that jQuery (and the eventual reaction to jQuery), lodash (vs. polyfills), coffeescript (vs babel) were all examples of the community trying to narrow the platform interface, then that narrowed interface being adopted by the relevant specs in spirit, then community tools targeting those new specs.

isntitvacant, to random
@isntitvacant@hachyderm.io avatar

This week’s work finds me building an Extism Wasm integration for Blender’s Python API: generating an ersatz IDL from the type info available from the python host, then generating Rust guest bindings from that IDL.

This is good practice for a number of other projects — I get the feeling I’ll be doing a lot of “gradual typed language defs” -> “IDL” -> “target language” workflows in the near future.

isntitvacant,
@isntitvacant@hachyderm.io avatar

@Mendy nice! I haven’t started looking into this personally yet but this looks very promising!

  • All
  • Subscribed
  • Moderated
  • Favorites
  • anitta
  • thenastyranch
  • rosin
  • GTA5RPClips
  • osvaldo12
  • love
  • Youngstown
  • slotface
  • khanakhh
  • everett
  • kavyap
  • mdbf
  • DreamBathrooms
  • ngwrru68w68
  • megavids
  • magazineikmin
  • InstantRegret
  • normalnudes
  • tacticalgear
  • cubers
  • ethstaker
  • modclub
  • cisconetworking
  • Durango
  • provamag3
  • tester
  • Leos
  • JUstTest
  • All magazines