Breaking News
Sunday, June 21, 2026
Show HN: Pure Effect – Reproduce production bugs on your laptop without a DB https://ift.tt/7QjbnyZ
Show HN: Pure Effect – Reproduce production bugs on your laptop without a DB Hi HN, I think it's safe to say that the majority of developers don't give a second thought to writing code with I/O tangled in business logic. It's all too common to see code like: const user = findUser(email); if (!user) await saveUser(user); Now, you may ask: what's the big deal? When we write code like this, two things happen: 1. It gets harder to debug production bugs. Unless you have the exact same database and remote API services to connect to, you may fail to reproduce the bug. 2. You have to use mocks and fakes in your tests, or use test containers, which only help somewhat, and they are slow! To solve these issues, I built Pure Effect, a tiny TypeScript/JavaScript effect library. The core idea is simple: if a function performs I/O, it isn't pure. But if it returns a description of the I/O it wants to perform, it is. So instead of await findUser(email), you return a Command object that says, "I would like to call this function, and when it finishes, here's what to do next." Your business logic becomes a pure function. Same input, same output, every time. The database never gets touched until the interpreter (runEffect) runs. When I first started the library, I didn't expect just how far that one idea would stretch. Once your pipelines are just data, a lot of wonderful things become possible: - No need for mocking libraries. You walk the tree in tests and assert on its structure: assert.equal(flow.cmd.name, 'cmdFindUser'). Nothing is executed. - Wrap any effect with Retry(effect, { attempts: 3, delay: 200, backoff: 2 }). The configuration is plain data, so you can assert on it in tests. - Every command's input and output flows through the interpreter, so you get a full execution trace for free. You can write a simple timeTravel() function that replays it locally without touching any I/O. Perfect for debugging complex production bugs. - An onBeforeCommand hook sits between your business logic and the interpreter. Since it sees every intended side effect before it fires, it can be used to enforce runtime guardrails. You can quarantine destructive calls before they happen for example. - You can review AI-generated code before it runs. Since Pure Effect pipelines are plain data, you can inspect what the generated code intends to do before it touches anything. There are just six primitives: Success, Failure, Command, Ask, Retry, and Parallel, plus effectPipe and runEffect. Zero dependencies. Under 1 KB minified and gzipped. How it compares to Effect-TS Effect-TS is the full-featured option in this space and has a large ecosystem. Pure Effect offers a different tradeoff. It covers the 80% case: testable pipelines, dependency injection, retry, and OpenTelemetry hooks, all in under 1 KB with zero dependencies and no new vocabulary to learn. Effect-TS is a framework you build around. Pure Effect, on the other hand, is a pattern you drop into existing code. I've been using Pure Effect in production since December. It's at v0.8.0, not 1.0 yet, but stable enough that I wanted to put it out there and hear what people think. GitHub: https://ift.tt/NaxgqJ7 I wrote five posts that document how Pure Effect evolved. They are tagged at https://ift.tt/JVM5GWh if you want the longer story. https://pure-effect.org June 21, 2026 at 09:36PM
Show HN: DebugBrief – turn debugging sessions into reports, no AI https://ift.tt/9gQY80R
Show HN: DebugBrief – turn debugging sessions into reports, no AI https://ift.tt/1IO7qZH June 21, 2026 at 11:57PM
Show HN: CleverCrow: give tokens to your favorite projects https://ift.tt/PrkhETB
Show HN: CleverCrow: give tokens to your favorite projects Howdy all. I'm Zack :wave:. I've been thinking about the problem of misguided AI pull requests and figured I'd throw a possible solution out there for feedback. Basically, CleverCrow lets supporters give tokens to a GitHub repo (or set of issues in that repo) for the maintainers to use to build/fix stuff. The fun implementation challenges have been around implementing the pooling dynamics and keeping the maintainers in charge while the backers are motivated to support their work. https://clevercrow.io June 21, 2026 at 11:06PM
Saturday, June 20, 2026
Show HN: An ASCII 3D Rendering Engine https://ift.tt/e7sQkTL
Show HN: An ASCII 3D Rendering Engine https://glyphcss.com June 20, 2026 at 11:10PM
Show HN: An n8n alternative where coding agents build the workflows, not humans https://ift.tt/mJWHIT1
Show HN: An n8n alternative where coding agents build the workflows, not humans n8n is built for humans dragging nodes on a canvas. That breaks down at B2B scale (embedding in a product, multi-tenant scalability, etc). n8n does have an MCP server so agents can create workflows too, but it outputs raw JSON. That's fine for n8n's engine, but painful for a coding agent (or a human reviewing its output) to read, write, diff, or debug. I'm building an alternative where workflows are authored by a coding agent in [a more dev-legible format] instead of JSON blobs, and execute it at scale. https://velane.sh/ June 20, 2026 at 10:44PM
Friday, June 19, 2026
Show HN: Jumpjet – a WASM runtime for game developers https://ift.tt/IfVpon2
Show HN: Jumpjet – a WASM runtime for game developers I built Jumpjet because I realized that engine and indie game developers are always repeating the same work: building the core infrastructure that touches the OS. Webassembly solves this in the Component Model by enabling interop between packages written in different languages. And in my opinion it's sort of the perfect fit for Jumpjet's model: providing a chassis without an engine. Jumpjet works by defining a very close mapping of WebGPU (and a few other WebIDL features) to WIT so that they can be used in any language that can target the wasm Component Model. Your game then runs as a guest application in Jumpjet's host runtime (powered by wasmtime), which shrinks final bundle size considerably versus something like Electron. Right now a bare bones game in Jumpjet is about 40mb. Right now the project is in an alpha or possibly pre-alpha state, it's not production ready. On the commercial side, I think there's an opportunity for cloud storage, game server hosting, a package manager and/or marketplace, distribution, and more. Right now you can target macOS, Windows, Linux, Android and iOS. (I haven't done any real testing on mobile so good luck.) The languages you can use will depend on their support for generating bindings from .wit files. There are a few templates available, I recommend one of the Rust ones. If you are a game developer or just like tinkering, I'd love for you to try the project out and tell me what you think! https://jumpjet.dev June 19, 2026 at 11:52PM
Show HN: Continuous Nvidia CUDA PC Sampling Profiler https://ift.tt/zyOb5ft
Show HN: Continuous Nvidia CUDA PC Sampling Profiler Blog post about how we extended our open source profiler to include support for continuous production PC sampling. https://ift.tt/A3NLoyY June 15, 2026 at 07:49PM
Subscribe to:
Posts (Atom)