Sasha πŸπŸ’¨ Koss

@koss.nocorp.me

I make rad things. Many are open-sourced, like date-fns. Some, like https://mindcontrol.studio are not.

🚨 New open source by me and my partner Josh: Mind Rig, AI playground for VS Code, Cursor, and co. πŸ”Ή Test prompts against different models & settings. πŸ”Ή Inspect requests, responses, and usage. πŸ”Ή Assign prompt variables manually or use CSV to test against multiple values.

Hear me out. TS has namespaces, but they aren't open and defined per module, unlike Rust impl or C#/C++/etc. Even if JS had it, it would be a nightmare for bundlers. What if we used a delimiter, i.e., $: Result$initFromRun() or <Result$HorizontalLayout /> to signify them?!

Two monorepo learnings for the past couple of years: 1. TypeScript Project References rule in terms of performance and DX. 2. Extracting app code into isolated packages is not worth the hassle. When sharing code between apps, it's better to just have a single "core" package.

I added two more functions, `todo` and `ensure` (that assert non-nullish, unlike `always` that asserts truthiness). Also, I covered it with tests and detailed JSDocs. Who would've thought that one could push such a simple code that far!

Bild
Sasha πŸπŸ’¨ Koss@koss.nocorp.me Β· last yr.

I just published the stupidest npm package, `alwaysly`. There's nothing to it but two one-liner functions. I use them often and am too lazy to drag them around. Btw, if you don't use this pattern in your TypeScript code, you're missing out!

I ended up wasting so much time rewriting stuff that seemingly worked but was actually subtly buggy on many levels. This is why I dislike using "spec" to describe agent instructions. It leads to an illusion of control, while you are, in fact, slowly rolling to a cliff edge.

Sasha πŸπŸ’¨ Koss@koss.nocorp.me Β· last yr.

If left unchecked, agents eventually end up hook-locking themselves and unable to progress. I got this effects spaghetti after just a few (spec-driven!) sessions. It is simply deciding whether to show a key form, form with an error, or a masked key view.

Source code: https://gist.github.com/kossnocorp/40061810bb1149ea44cb7a06bf1d411b

I just published the stupidest npm package, `alwaysly`. There's nothing to it but two one-liner functions. I use them often and am too lazy to drag them around. Btw, if you don't use this pattern in your TypeScript code, you're missing out!

Bild

Over the years only three organizations realized their promise to support open source, despite endless stream of startups and coins contacting me. They are Open Collective, @github.com, and thanks.dev (they are so awesome, I don't understand why not so many people talk about them) ❀️

Sasha πŸπŸ’¨ Koss@koss.nocorp.me Β· last yr.

The only podcast I'm listening to nowadays is @syntax.fm. So fun and educational too! Always learn something new. And that's not because they, along with @sentry.io, sponsor date-fns via thanks.dev, but for that, they are absolute legends!

If left unchecked, agents eventually end up hook-locking themselves and unable to progress. I got this effects spaghetti after just a few (spec-driven!) sessions. It is simply deciding whether to show a key form, form with an error, or a masked key view.

Source code: https://gist.github.com/kossnocorp/40061810bb1149ea44cb7a06bf1d411bBildBild

As MCP maintainers, I think it is important to show the will to choose the right decisions over the ones that benefit the business. It is a small issue, but therefore, it is very telling. If they ignore it, then we will know that the same will happen with MCP eventually.

Sasha πŸπŸ’¨ Koss@koss.nocorp.me Β· last yr.

I think @anthropic.com is now at a crossroads with this seemingly insignificant decision of whether they should adopt AGENTS.md: github.com/anthropics/c... Do they bend to their competition or keep the advantage? This might hint to us if MCP is in good hands.

I tried different code agents, including GitHub's Copilot (all the models), Cursor, and Windsurf. I found them all too slow. Code quality is not up to my standards. Fine for simple tasks, though. Now, after working with Claude Code, I'm finally having a good time.

I just published smolcanon@0.2.0 that serializes JS values into a stable string representation. Happy to say it's 30% faster than alternatives, and it's just 185B! I built it to use with my other library, smolxxh (just 381B), to get JS value hashes.

Bild

People are sleeping on git submodules. I used them for private projects for years and recently adopted them for date-fns. With pnpm workspace, I can work on multiple packages in a single project while having GitHub issues and actions separated.

Bild

How deno_doc is that good? --json outputs data structure I always needed to render date-fns docs. I wish I had discovered it earlier. I dread migrating the documentation website once again, but I feel it would be worth it!