Show HN: I rewrote my notepad calculator as a local-first app with CRDT syncing

Hacker News (score: 32)
Found: June 30, 2025
ID: 80

Description

Other
Show HN: I rewrote my notepad calculator as a local-first app with CRDT syncing I launched NumPad v1 on here a few years ago, and back then it wasn't much more than a thin CodeMirror wrapper around the calculator engine I'd written.

Now I've rewritten it as a PWA that supports multiple documents, persists them to IndexedDB, and has a syncing service for paying customers. Syncing is handled by Automerge[1] under the hood, which should make it relatively easy to get document sharing working too.

[1] https://automerge.org/

More from Hacker

Show HN: Built an MCP server using Cloudflare's Code Mode pattern

Show HN: Built an MCP server using Cloudflare's Code Mode pattern Read this article by Cloudflare this morning <a href="https:&#x2F;&#x2F;blog.cloudflare.com&#x2F;code-mode&#x2F;" rel="nofollow">https:&#x2F;&#x2F;blog.cloudflare.com&#x2F;code-mode&#x2F;</a> the main argument being that LLMs are much better at writing typescript code than tool calls because they&#x27;ve seen typescript code many more times.<p>HN Discussion: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=45399204">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=45399204</a> <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=45386248">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=45386248</a><p>Deno provides a great sandbox environment for Typescript code execution because of its permissions system which made it easy to spin up code that only has access to fetch and network calls.<p>Stick an MCP proxy on top of that and you&#x27;ve got &quot;CodeMode&quot; (code intermixed with MCP tool calls) for more advanced workflow orchestration.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;jx-codes&#x2F;codemode-mcp" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;jx-codes&#x2F;codemode-mcp</a><p>There&#x27;s a lot of things that can be improved here. Like a virtual file system for the agent to actually build up its solution instead of being forced to one shot the solution but the bones are there.

Optimizing ClickHouse for Intel's 280 core processors

Optimizing ClickHouse for Intel's 280 core processors

Launch HN: RunRL (YC X25) – Reinforcement learning as a service

Launch HN: RunRL (YC X25) – Reinforcement learning as a service Hey HN, we’re Andrew and Derik at RunRL (<a href="https:&#x2F;&#x2F;runrl.com&#x2F;">https:&#x2F;&#x2F;runrl.com&#x2F;</a>). We&#x27;ve built a platform to improve models and agents with reinforcement learning. If you can define a metric, we&#x27;ll make your model or agent better, without you having to think about managing GPU clusters.<p>Here&#x27;s a demo video: <a href="https:&#x2F;&#x2F;youtu.be&#x2F;EtiBjs4jfCg" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;EtiBjs4jfCg</a><p>I (Andrew) was doing a PhD in reinforcement learning on language models, and everyone kept...not using RL because it was too hard to get running. At some point I realized that someone&#x27;s got to sit down and actually write a good platform for running RL experiments.<p>Once this happened, people started using it for antiviral design, formal verification, browser agents, and a bunch of other cool applications, so we decided to make a startup out of it.<p>How it works:<p>- Choose an open-weight base model (weights are necessary for RL updates; Qwen3-4B-Instruct-2507 is a good starting point)<p>- Upload a set of initial prompts (&quot;Generate an antiviral targeting Sars-CoV-2 protease&quot;, &quot;Prove this theorem&quot;, &quot;What&#x27;s the average summer high in Windhoek?&quot;)<p>- Define a reward function, using Python, an LLM-as-a-judge, or both<p>- For complex settings, you can define an entire multi-turn environment<p>- Watch the reward go up!<p>For most well-defined problems, a small open model + RunRL outperforms frontier models. (For instance, we&#x27;ve seen Qwen-3B do better than Claude 4.1 Opus on antiviral design.) This is because LLM intelligence is notoriously &quot;spiky&quot;; often models are decent-but-not-great at common-sense knowledge, are randomly good at a few domains, but make mistakes on lots of other tasks. RunRL creates spikes precisely on the tasks where you need them.<p>Pricing: $80&#x2F;node-hour. Most models up to 14B parameters fit on one node (0.6-1.2 TB of VRAM). We do full fine-tuning, at the cost of parameter-efficiency (with RL, people seem to care a lot about the last few percent gains in e.g. agent reliability).<p>Next up: continuous learning; tool use. Tool use is currently in private beta, which you can join here: <a href="https:&#x2F;&#x2F;forms.gle&#x2F;D2mSmeQDVCDraPQg8" rel="nofollow">https:&#x2F;&#x2F;forms.gle&#x2F;D2mSmeQDVCDraPQg8</a><p>We&#x27;d love to hear any thoughts, questions, or positive or negative reinforcement!

Show HN: I made a generative online drum machine with ClojureScript

Show HN: I made a generative online drum machine with ClojureScript After two years of development, I&#x27;m super excited to release Beat Maker! This is my take on what I hope is the best free, web-based drum machine.<p>My goal was to build something that was not only fun and easy to use for beginners but also powerful enough for serious producers. I did extensive research on existing drum machines, analyzed their UX, and tried to build something that adds something new.<p>It&#x27;s a nearly 100% client-side app, written in ClojureScript, and is a PWA so you can install it to your home screen for an app-like experience.<p>Besides the standard grid editor, Beat Maker has some unique features that I think HN readers might find interesting:<p>- Procedural sample generation. One annoying thing about writing beats is searching through folders full of samples. I wanted to improve this and so I added the ability to generate new samples with a single click, giving you an infinite supply of unique drum samples. * Generative beat creation. If you&#x27;re looking for inspiration, Beat Maker can generate entire patterns for you as a starting point. You can then edit and tweak the beat to your liking. Great for solving the &quot;blank canvas&quot; problem and giving you something good to start from. * Advanced export options. This is where it really shines for producers. You can export your work as: * A standard WAV loop * Individual stems (ZIP) * A MIDI file * A ZIP file of all your samples as WAVs * A SoundFont (.sf2) drum kit from your generated samples * An Impulse Tracker (.it) file for use in trackers like Renoise, OpenMPT or a Polyend * Pocket Operator&#x2F;Volca sync. It can output a sync signal on the left audio channel to sync with these hardware devices for perfect timing. * Per-Note FX. You can add effects like volume slides, repeats, and start volume changes to individual notes for more complex drum phrases incorporating flam and roll.<p>As an old school tracker guy, I&#x27;m particularly excited about the Impulse Tracker export mode. I was surprised to discover how many DAWs (including hardware like Polyend) can import this format. Of course, you can also pull up Impulse Tracker on DOSBox, or the more modern re-implementation, Schismtracker for that retro experience.<p>By the way, the beat generator feature is not trained on any artists or anything like that. It&#x27;s an algorithm I built from scratch myself.<p>The audio engine is built on a declarative audio graph (using `virtual-audio-graph`), inspired by React&#x27;s virtual DOM, which makes managing the Web Audio API much cleaner. If you&#x27;re building web based audio apps I highly recommend checking out this library.<p>I&#x27;d love for you to try it out and let me know what you think. Feedback (and the inevitable bug reports) most welcome! Thank you!<p>P.S. Also, here&#x27;s a video summary: <a href="https:&#x2F;&#x2F;youtu.be&#x2F;qVmEn9z3H24" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;qVmEn9z3H24</a>

SynthID – A tool to watermark and identify content generated through AI

SynthID – A tool to watermark and identify content generated through AI

Show HN: Anchor Relay – A faster, easier way to get Let's Encrypt certificates

Show HN: Anchor Relay – A faster, easier way to get Let's Encrypt certificates From the cryptic terminal commands to the innumerable ways to shoot yourself in the foot, I always struggled to use TLS certificates. I love how much easier (and cheaper) Let&#x27;s Encrypt made it to get certificates, but there are still plenty of things to struggle with.<p>That&#x27;s why we built Relay: a free, browser-based tool that streamlines the ACME workflow, especially for tricky setups like homelabs. Relay acts as a secure intermediary between your ACME client and public certificate authorities like Let&#x27;s Encrypt.<p>Some ways Relay provides a better experience:<p><pre><code> - really fast, streamlined certificates in minutes, with any ACME client - one-time upfront DNS delegation without inbound traffic or DNS credentials sprinkled everywhere - clear insights into the whole ACME process and renewal reminders </code></pre> Try Relay now: <a href="https:&#x2F;&#x2F;anchor.dev&#x2F;relay" rel="nofollow">https:&#x2F;&#x2F;anchor.dev&#x2F;relay</a><p>Or read our blog post: <a href="https:&#x2F;&#x2F;anchor.dev&#x2F;blog&#x2F;lets-get-your-homelab-https-certified" rel="nofollow">https:&#x2F;&#x2F;anchor.dev&#x2F;blog&#x2F;lets-get-your-homelab-https-certifie...</a><p>Please give it a try (it only takes a couple minutes) and let me know what you think.

Show HN: An Open-Source E-Book Reader for Conversational Reading with an LLM

Show HN: An Open-Source E-Book Reader for Conversational Reading with an LLM Hi HN! I&#x27;ve been working on BookWith, an open-source e-book reader that integrates AI as your reading companion.<p>The problem: Traditional e-readers are passive. When you encounter something unclear, you have to context-switch to search for it. Your highlights and notes remain isolated, and you can&#x27;t easily connect ideas across different books.<p>My solution: BookWith embeds an AI that maintains full context of what you&#x27;re reading. It features:<p>- Context-aware AI chat: Ask questions about the current page&#x2F;chapter and get instant answers<p>- AI podcast generation: Automatically converts book content into conversational podcasts using Google Cloud TTS<p>- Multi-layer memory system: Short-term (last 5 conversations), mid-term (summarized every 20), and long-term (vector search) memory that maintains continuity across reading sessions<p>- Smart annotations: 5-color highlighting system that AI can reference and analyze<p>Technical stack: Built as a fork of Flow (epub reader), with added LLM integration and vector database for semantic search. Supports multiple LLMs and languages (EN&#x2F;JA&#x2F;ZH).

Replacing cron jobs with a centralized task scheduler

Replacing cron jobs with a centralized task scheduler

Brad Woods Digital Garden

Brad Woods Digital Garden

No other tools from this source yet.