Sign in

David Sherret

@dsherret.dev
1.5K followers 80 following 153 posts

Software developer. Prev @deno.land. Working on ts-morph, dprint, and more (github.com/dsherret)

PostsRepliesMedia
Reposted by David Sherret
snek @snek.dev · 01/09/2026
bit of an update, it's been a few months now since I parted ways with Deno, and I'm starting to actively look for jobs again! I'm pretty good with big systems, compilers, and embedded. especially if rust or elixir are involved :)
33811
David Sherret @dsherret.dev · 30/07/2026
ts-ast-viewer.com now supports TypeScript 7 along with nightly builds of the typescript-go repository. It's not selected by default, but available in the dropdown.
Dropdown menu showing a TypeScript 7.0.2 selection on ts-ast-viewer.com
2295
David Sherret @dsherret.dev · 30/06/2026
Released dprint 0.55—a pluggable and configurable code formatting platform that unifies all your formatters behind a single command. This substantial release lets you specify formatting plugins from npm.
A dprint.json configuration file with npm specifiers in the plugins array.
2101
David Sherret @dsherret.dev · 25/05/2026
Reporting the same security issue to pnpm vs bun: pnpm acknowledged it quickly, shipped a fix, backported it, and published an advisory. bun never acknowledged, silently fixed this and another issue I reported, has not published advisories. One takes security more seriously.
Prompt response from pnpm. Fixed and published.No response on github from bun.No response from bun on email.
41116
Reposted by David Sherret
conputer dipshit @davidcrespo.bsky.social · 16/05/2026
beautiful new docs site at dax.land for @dsherret.bsky.social's dax, one of my very favorite tools. I write nearly all my scripts in TypeScript because of it
import $ from "dax";

$.logStep("Building");
await $`deno task build`;

const env = await $.select({
  message: "Where to?",
  options: ["staging", "production"],
});

const branch = await $`git rev-parse --abbrev-ref HEAD`.text();
$.logLight(`Deploying ${branch} → ${env.value}`);

await $.all([
  $`deno task deploy ${env.value} api`,
  $`deno task deploy ${env.value} web`,
]);

$.logStep("Deployed");
4192
David Sherret @dsherret.dev · 04/05/2026
The latest version of dax (dax.land) can show a scrolling view of the last N lines when executing a command. This is especially useful when running multiple commands in parallel.
2141
David Sherret @dsherret.dev · 23/04/2026
Released gagen 0.5, which simplifies the output to match dependabot.
160
David Sherret @dsherret.dev · 02/04/2026
I've found maintaining GitHub Actions workflow files is much easier when it's generated from Typescript. The latest realization is that the output yaml file can act like a lockfile. So I maintain `actions/checkout@v6`, but the generated output gets locked to a hash.
1492
David Sherret @dsherret.dev · 26/03/2026
Due to terrible GitHub availability, dprint formatting plugins on plugins.dprint.dev are now served directly instead of redirecting to GH assets. Additionally, the plugins are now cached indefinitely by the server, which eliminates the risk of a repo disappearing.
plugins.dprint.dev
Plugins - dprint
Latest plugin versions for dprint.
190
David Sherret @dsherret.dev · 20/03/2026
Released jsonc-parser 0.32, which allows deserializing via serde to a concrete type. It's also much faster.
160
Reposted by David Sherret
Yoshiya Hinosawa @kt3k.org · 19/03/2026
Last Monday was my last day at Deno. It was a privilege to work with such talented colleagues. The standard library has been my passion for years. I've reviewed all PRs since 2023 and learned a lot from them. Proud to see it often mentioned as one of the best parts of Deno.
1452
Reposted by David Sherret
Nayeem Rahman @nayeemrmn.bsky.social · 18/03/2026
My last day at Deno was this week. I really enjoyed maintaining the language server and working with the CLI team, and I'm sure they will keep building great things. Looking for new work in the space of native-backed JS/TS tooling, or something new!
1432
Reposted by David Sherret
William Perron @wperron.bsky.social · 17/03/2026
Yesterday was my last day at Deno. I'm sad to leave but I'm proud of everything the team and I were able to build. I'm glad I had the opportunity to work with some of the most talented people I've met. I wish them all the best! I'm actively looking for my next challenge, my DMs are open!
07614
Reposted by David Sherret
Jo Franchetti @thisisjofrank.bsky.social · 18/03/2026
Today is my last day with the Deno team 🦕💖💔 I know they're gonna keep making awesome things. But now *I* need to make awesome things for someone else! If you're looking for a DevRel with a JS focus and extra sparkle, get in touch!
419863
Reposted by David Sherret
Phil Hawksworth @philhawksworth.dev · 17/03/2026
Marvin is another lovely talented person I had the pleasure to work with who you should try and snag for your company if you can!
1192
David Sherret @dsherret.dev · 17/03/2026
Yesterday was my last day at Deno. I'm going to transition from two days a week to full time on a business I cofounded in the auto glass industry. My plan is to increase my contributions to my personal open source projects and keep contributing features/fixes to Deno that I need or want.
4954
Reposted by David Sherret
Luca Casonato 🏳️‍🌈 @lcas.dev · 17/03/2026
John is an absolutely incredible UX design expert. If you are looking for someone who can come up with, implement, and test your UX flows, you should hire him.
0394
Reposted by David Sherret
John Donmoyer @johndonmoyer.com · 17/03/2026
Yesterday I updated my bio as I'm no longer with the #1 🦕-themed javascript company. I'm sad to go but excited to see what's next. I've spent the last few years designing exclusively in code, building agent skills, working on command-line tools, and crafting dev docs experiences. Hit me up.
57811
Reposted by David Sherret
Jake Archibald @jakearchibald.com · 17/03/2026
Snap him up
14411
David Sherret @dsherret.dev · 12/03/2026
Also merged a perf improvement to the sharp pkg's install script. Once released, it will make all pkg managers faster installing Next.js with lifecycle scripts when brew is installed (except Bun because it overrides the maintainer's decision and always skips the install script)
020
Reposted by David Sherret
Luca Casonato 🏳️‍🌈 @lcas.dev · 27/02/2026
I've wanted this for so long - and @kettmeir.dev has finally implemented it! View changes in the public API of packages between versions: - what methods were added, changed (type signature), or removed In the future we could even indicate if you are about to publish a breaking change
0252
David Sherret @dsherret.dev · 25/02/2026
dprint's incremental formatter is incredibly fast and happens without needing an opt-in. You can use both oxc and biome via dprint for faster performance.
150
David Sherret @dsherret.dev · 13/02/2026
It's good npmx.dev shows git and https dependencies. I still think it's crazy npmjs.org doesn't.
1281
David Sherret @dsherret.dev · 12/02/2026
I didn't want a terminal based solution, so I vibe coded a desktop app to give the status of all my AI sessions regardless of where they're running and I can click to quickly jump to them.
040
Reposted by David Sherret
Zoltan Kochan @kochan.io · 05/02/2026
Additionally, pnpm 11 will block dependencies from exotic sources (like Git) in subdependencies.
2213
David Sherret @dsherret.dev · 04/02/2026
How to bypass minimum dependency/release age: 1. Publish an npm package with an unpinned git dependency. 2. Get usage and wait many months. 3. Push a malicious commit to the git dependency's repo.
1101
David Sherret @dsherret.dev · 22/01/2026
The deno and dprint vscode extensions now prompt when a custom executable path is set in the workspace configuration. I believe this should help reduce the chance of malicious config launching an executable in a trusted workspace.
040
David Sherret @dsherret.dev · 21/01/2026
Vibe coded a website to give a summary of our frequently failing and flaky tests on the CI.
290
David Sherret @dsherret.dev · 05/01/2026
dprint 0.51 (code formatter) is out. This release adds initial support for formatting with a global config file. github.com/dprint/dprin...
github.com
Release 0.51.0 · dprint/dprint
dprint is a pluggable, configurable code formatting platform written in Rust. It aims to unify all your code formatters in one tool. Features Global Configuration File dprint now supports a global ...
140
David Sherret @dsherret.dev · 17/12/2025
In the Deno repo, we have a custom Rust test runner for our tests in order to support file/directory-based tests and improve stability on the CI. I just refactored the code to have a pty reporter that surfaces some useful information. It seems better than having failures whizz by.
1130
Reposted by David Sherret
Jake Bailey @jakebailey.dev · 13/12/2025
Did something fun; used @tinygo.org to shove @mvdan.cc's wonderful gofumpt into @dsherret.bsky.social's amazing dprint formatter via a Wasm plugin. We previously used an "exec" plugin to do this with go tool, but it was slow to run, and worse in parallel (and... Windows 😑). Now it's fast!
Benchmark 1: dprint fmt --incremental=false (branch = main)
  Time (mean ± σ):     42.703 s ±  0.412 s    [User: 0.733 s, System: 0.569 s]
  Range (min … max):   41.742 s … 43.399 s    10 runs
 
Benchmark 2: dprint fmt --incremental=false (branch = jabaile/gofumpt-plugin)
  Time (mean ± σ):     633.1 ms ±  14.8 ms    [User: 4887.2 ms, System: 1083.9 ms]
  Range (min … max):   617.3 ms … 663.2 ms    10 runs
 
Summary
  dprint fmt --incremental=false (branch = jabaile/gofumpt-plugin) ran
   67.45 ± 1.70 times faster than dprint fmt --incremental=false (branch = main)
3383
David Sherret @dsherret.dev · 05/12/2025
The next Deno release will include Node type declarations out of the box.
Using the `module` global in a cts file with type completions.
1141
Reposted by David Sherret
EuroRust @eurorust.eu · 06/11/2025
In his talk at #EuroRust25, @kettmeir.dev shared how the @deno.land project improved error handling by migrating from the anyhow crate to using thiserror and concrete error types – watch it on YouTube now! 🦀 👉 youtu.be/f6eofqicw_s #RustLang #RustConference #EuroRust
youtu.be
From Any to This - Leo Kettmeir | EuroRust 2025
YouTube video by EuroRust
062
David Sherret @dsherret.dev · 13/10/2025
Wrote a library this weekend for modifying JSONC files david.deno.dev/posts/jsonc-...
david.deno.dev
First-class JSONC manipulation in JavaScript
Manipulating JSONC in JavaScript using a CST via jsonc-morph
0170
Reposted by David Sherret
Luca Casonato 🏳️‍🌈 @lcas.dev · 07/08/2025
Stuck in an elevator with @snek.dev, @littledivy.com, @bartlomieju.bsky.social, @magurotuna.bsky.social, @dsherret.bsky.social, @kettmeir.dev, and Nathan
2293
Reposted by David Sherret
SquiggleConf @squiggleconf.com · 18/07/2025
🌟 Speaker Spotlight: David Sherret @dsherret.bsky.social will walk us through the JSR package registry: why it exists, how it improves on previous approaches such as HTTPS specifiers, and the design decisions behind its module resolution. Schedule, speakers & more info: squiggleconf.com
Poster for SquiggleConf 2025, September 18-19 Boston

JSR: Designing Package Registry Module Resolution

David Sherret, Deno Developer; creator of ts-morph, dprint-ts-ast-viewer
0112
Reposted by David Sherret
Deno @deno.land · 03/07/2025
Importing bytes and texts: ✅ adds to your module graph ✅ type checking ✅ works with deno bundle and deno compile deno.com/blog/v2.4#im...
2323
David Sherret @dsherret.dev · 25/06/2025
Type checking text and bytes imports is now working.
Example code snippet that type checks text and bytes imports.
190
David Sherret @dsherret.dev · 20/06/2025
Should have importing files as text and bytes ready for Deno 2.4 -- will be unstable because it hasn't been standardized.
Importing a file as text and bytes with an import attribute.
4252
David Sherret @dsherret.dev · 04/06/2025
This is now published to JSR as a rolldown plugin: jsr.io/@deno/rolldo...
1121
David Sherret @dsherret.dev · 31/05/2025
Got bundling JSR/Deno code with Rolldown working. This is using Rolldown's and Deno's crates respecting Deno's lockfile, config discovery, and resolution. Finally Deno's crates have been refactored enough for this to be feasible (~500 LOC). I'll update with more details later.
Terminal output showing a JSR specifier being bundled to a single file then executed.

> ../rolldown/target/debug/rolldown_deno.exe jsr:@david/dax@0.43
Bundle jsr:@david/dax@0.43
Writing: dax.bundle.js
Writing: dax.bundle.js.map
> deno
Deno 2.3.5
exit using ctrl+d, ctrl+c, or close()
REPL is running with all permissions allowed.
To specify permissions, run `deno repl` with allow flags.
> import $ from "./dax.bundle.js"
undefined
> await $`echo 'Hello there!' && echo 'This is from a bundled copy.'`
Hello there!
This is from a bundled copy.
CommandResult { code: 0 }
2151
David Sherret @dsherret.dev · 27/03/2025
I've come across so many bugs caused by using wildcard matches in Rust. Even though it can be verbose, I think it's better to avoid them in most cases so that adding a new enum variant causes compiler errors, forcing you to re-evaluate each match.
1161
David Sherret @dsherret.dev · 20/03/2025
It was getting difficult to debug Deno's npm resolution so I wrote a tool to help visualize each step it makes.
190
Reposted by David Sherret
Mark Russinovich @markrussinovich.bsky.social · 26/02/2025
My closing keynote from Rust Nation UK last week is now online: "Microsoft is Getting Rusty: A Review of Successes and Challenges"
youtube.com
Microsoft is Getting Rusty: A Review of Successes and Challenges - Mark Russinovich
YouTube video by Rust Nation UK
65815
David Sherret @dsherret.dev · 25/02/2025
Neat to see software I used to work on and features I helped implement in Severance.
Neurosurgical planning software seen in the show Severance.
1251
Reposted by David Sherret
Marvin Hagemeister @marvinh.dev · 19/02/2025
Lint plugins are now available 🎉
2123
David Sherret @dsherret.dev · 07/02/2025
Beware: npm doesn't show non-npm dependencies in the dependencies tab. Check out this package—npm lists it as having zero dependencies, but if you look at the package.json, it definitely has dependencies.
The @dsherret/outside-npm package having zero dependencies.The package.json showing two dependencies.
5364
David Sherret @dsherret.dev · 07/02/2025
Did some work on the url Rust crate the past two days and got it parsing a 400 character URL more than twice as fast (still have a few PRs not merged).
Mean: 1903ns to 841ns
0113
David Sherret @dsherret.dev · 05/02/2025
I feel like making node resolution "just work" leaves the JS ecosystem in a worse place.
Bun checking the __esModule property to inform the behaviour of a default import. Bun errors, but Node and Deno don't.
170
Reposted by David Sherret
Deno @deno.land · 03/02/2025
@jsr.io is now openly governed — meet its board members and check out its governance charter 👇 deno.com/blog/jsr-ope...
deno.com
Introducing the JSR open governance board
JSR, a modern open source JavaScript registry, is meant for the greater JavaScript and TypeScript community. We're thrilled to announce its own independent governing body.
512329