The best Hacker News stories from Show from the past day
Latest posts:
Show HN: A WYSIWYG word processor in Python
Hi all,<p>Finding a good data structure for a word processor is a difficult problem. My notebook diaries on the problem go back 25 years when I was frustrated with using Word for my diploma thesis - it was slow and unstable at that time. I ended up getting pretty hooked on the problem.<p>Right now I’m taking a professional break and decided to finally use the time to push these ideas further, and build MiniWord — a WYSIWYG word processor in Python.<p>My goal is to have a native, non-HTML-based editor that stays simple, fast, and is hackable. So far I am focusing on getting the fundamentals right. What is working yet is:<p>- Real WYSIWYG editing (no HTML layer, no embedded browser) with styles, images and tables.<p>- Clean, simple file format (human-readable, diff-friendly, git-friendly, AI-friendly)<p>- Markdown support<p>- Support for Python-plugins<p><i>Things that I found:</i><p>- B-tree structures are perfect for holding rich text data<p>- A simple text-based file format is incredibly useful — you can diff documents, version them, and even process them with AI tools quite naturally<p><i>What I’d love feedback on:</i><p>- Where do you see real use cases for something like this?<p>- What would be missing for you to take it seriously as a tool or platform?<p>- What kinds of plugins or extensions would actually be worth building?<p>Happy about any thoughts — positive or critical.
Greetings
Show HN: A WYSIWYG word processor in Python
Hi all,<p>Finding a good data structure for a word processor is a difficult problem. My notebook diaries on the problem go back 25 years when I was frustrated with using Word for my diploma thesis - it was slow and unstable at that time. I ended up getting pretty hooked on the problem.<p>Right now I’m taking a professional break and decided to finally use the time to push these ideas further, and build MiniWord — a WYSIWYG word processor in Python.<p>My goal is to have a native, non-HTML-based editor that stays simple, fast, and is hackable. So far I am focusing on getting the fundamentals right. What is working yet is:<p>- Real WYSIWYG editing (no HTML layer, no embedded browser) with styles, images and tables.<p>- Clean, simple file format (human-readable, diff-friendly, git-friendly, AI-friendly)<p>- Markdown support<p>- Support for Python-plugins<p><i>Things that I found:</i><p>- B-tree structures are perfect for holding rich text data<p>- A simple text-based file format is incredibly useful — you can diff documents, version them, and even process them with AI tools quite naturally<p><i>What I’d love feedback on:</i><p>- Where do you see real use cases for something like this?<p>- What would be missing for you to take it seriously as a tool or platform?<p>- What kinds of plugins or extensions would actually be worth building?<p>Happy about any thoughts — positive or critical.
Greetings
Show HN: A WYSIWYG word processor in Python
Hi all,<p>Finding a good data structure for a word processor is a difficult problem. My notebook diaries on the problem go back 25 years when I was frustrated with using Word for my diploma thesis - it was slow and unstable at that time. I ended up getting pretty hooked on the problem.<p>Right now I’m taking a professional break and decided to finally use the time to push these ideas further, and build MiniWord — a WYSIWYG word processor in Python.<p>My goal is to have a native, non-HTML-based editor that stays simple, fast, and is hackable. So far I am focusing on getting the fundamentals right. What is working yet is:<p>- Real WYSIWYG editing (no HTML layer, no embedded browser) with styles, images and tables.<p>- Clean, simple file format (human-readable, diff-friendly, git-friendly, AI-friendly)<p>- Markdown support<p>- Support for Python-plugins<p><i>Things that I found:</i><p>- B-tree structures are perfect for holding rich text data<p>- A simple text-based file format is incredibly useful — you can diff documents, version them, and even process them with AI tools quite naturally<p><i>What I’d love feedback on:</i><p>- Where do you see real use cases for something like this?<p>- What would be missing for you to take it seriously as a tool or platform?<p>- What kinds of plugins or extensions would actually be worth building?<p>Happy about any thoughts — positive or critical.
Greetings
Show HN: Keeper – embedded secret store for Go (help me break it)
Keeper is an embeddable secret store (Argon2id, XChaCha20-Poly1305 by default). Four security levels, audit chains, crash-safe rotation. Vault is overkill for most use cases. This is for when you ge paranoid about env and need encrypted local storage that doesn't suck. No security through obscurity, hence, It's still early, so now's the best time to find weird edge cases, race conditions, memory leaks, crypto misuse, anything that breaks. The README has a full security model breakdown if you want to get adversarial.
Show HN: Keeper – embedded secret store for Go (help me break it)
Keeper is an embeddable secret store (Argon2id, XChaCha20-Poly1305 by default). Four security levels, audit chains, crash-safe rotation. Vault is overkill for most use cases. This is for when you ge paranoid about env and need encrypted local storage that doesn't suck. No security through obscurity, hence, It's still early, so now's the best time to find weird edge cases, race conditions, memory leaks, crypto misuse, anything that breaks. The README has a full security model breakdown if you want to get adversarial.
Show HN: FluidCAD – Parametric CAD with JavaScript
Hello HN users,<p>This is a CAD by code project I have been working on on my free time for more than year now.<p>I built it with 3 goals in mind:<p>- It should be familiar to CAD designers who have used other programs. Same workflow, same terminology.<p>- Reduce the mental effort required to create models as much as possible. This is achieved by:<p><pre><code> - Provide live rendering and visual guidance as you type.
- Allow the user to reference existing edges/faces on the scene instead of having to calculate everything.
- Provide interactive mouse helpers for features that are hard to write by code: Only 3 interactive modes for now: Edge trimming, Sketch region extrude, Bezier curve drawing.
- Implicit coding whenever possible: e.g: There are sensible defaults for most parameters. The program will automatically fuse intersecting objects together so you do not have to worry about what object needs to be fused with what.</code></pre>
- It should be reasonably fast: The scene objects are cached and only the updated objects are re-computed.<p>I think I have achieved these goals to a good extent. The program is still in early stages and there are many features I want to add, rewrite but I think it is already usable for simple models.<p>Update to add more details:
This is based on Opencascade.js WASM binding. So you get all the good things that come with any brep kernel. Fillets, chamfers, step import and export...<p>The scene is webview but the editing is in your local file. You use your own editor and the environment you are familiar with.<p>One important feature that I think make this stand out among other code based cad software is the ability to transform features not just shapes. More here:
<a href="https://fluidcad.io/docs/guides/patterns" rel="nofollow">https://fluidcad.io/docs/guides/patterns</a>
You can see it in action in the lantern example:
<a href="https://fluidcad.io/docs/tutorials/lantern" rel="nofollow">https://fluidcad.io/docs/tutorials/lantern</a>
Show HN: FluidCAD – Parametric CAD with JavaScript
Hello HN users,<p>This is a CAD by code project I have been working on on my free time for more than year now.<p>I built it with 3 goals in mind:<p>- It should be familiar to CAD designers who have used other programs. Same workflow, same terminology.<p>- Reduce the mental effort required to create models as much as possible. This is achieved by:<p><pre><code> - Provide live rendering and visual guidance as you type.
- Allow the user to reference existing edges/faces on the scene instead of having to calculate everything.
- Provide interactive mouse helpers for features that are hard to write by code: Only 3 interactive modes for now: Edge trimming, Sketch region extrude, Bezier curve drawing.
- Implicit coding whenever possible: e.g: There are sensible defaults for most parameters. The program will automatically fuse intersecting objects together so you do not have to worry about what object needs to be fused with what.</code></pre>
- It should be reasonably fast: The scene objects are cached and only the updated objects are re-computed.<p>I think I have achieved these goals to a good extent. The program is still in early stages and there are many features I want to add, rewrite but I think it is already usable for simple models.<p>Update to add more details:
This is based on Opencascade.js WASM binding. So you get all the good things that come with any brep kernel. Fillets, chamfers, step import and export...<p>The scene is webview but the editing is in your local file. You use your own editor and the environment you are familiar with.<p>One important feature that I think make this stand out among other code based cad software is the ability to transform features not just shapes. More here:
<a href="https://fluidcad.io/docs/guides/patterns" rel="nofollow">https://fluidcad.io/docs/guides/patterns</a>
You can see it in action in the lantern example:
<a href="https://fluidcad.io/docs/tutorials/lantern" rel="nofollow">https://fluidcad.io/docs/tutorials/lantern</a>
Show HN: FluidCAD – Parametric CAD with JavaScript
Hello HN users,<p>This is a CAD by code project I have been working on on my free time for more than year now.<p>I built it with 3 goals in mind:<p>- It should be familiar to CAD designers who have used other programs. Same workflow, same terminology.<p>- Reduce the mental effort required to create models as much as possible. This is achieved by:<p><pre><code> - Provide live rendering and visual guidance as you type.
- Allow the user to reference existing edges/faces on the scene instead of having to calculate everything.
- Provide interactive mouse helpers for features that are hard to write by code: Only 3 interactive modes for now: Edge trimming, Sketch region extrude, Bezier curve drawing.
- Implicit coding whenever possible: e.g: There are sensible defaults for most parameters. The program will automatically fuse intersecting objects together so you do not have to worry about what object needs to be fused with what.</code></pre>
- It should be reasonably fast: The scene objects are cached and only the updated objects are re-computed.<p>I think I have achieved these goals to a good extent. The program is still in early stages and there are many features I want to add, rewrite but I think it is already usable for simple models.<p>Update to add more details:
This is based on Opencascade.js WASM binding. So you get all the good things that come with any brep kernel. Fillets, chamfers, step import and export...<p>The scene is webview but the editing is in your local file. You use your own editor and the environment you are familiar with.<p>One important feature that I think make this stand out among other code based cad software is the ability to transform features not just shapes. More here:
<a href="https://fluidcad.io/docs/guides/patterns" rel="nofollow">https://fluidcad.io/docs/guides/patterns</a>
You can see it in action in the lantern example:
<a href="https://fluidcad.io/docs/tutorials/lantern" rel="nofollow">https://fluidcad.io/docs/tutorials/lantern</a>
Show HN: FluidCAD – Parametric CAD with JavaScript
Hello HN users,<p>This is a CAD by code project I have been working on on my free time for more than year now.<p>I built it with 3 goals in mind:<p>- It should be familiar to CAD designers who have used other programs. Same workflow, same terminology.<p>- Reduce the mental effort required to create models as much as possible. This is achieved by:<p><pre><code> - Provide live rendering and visual guidance as you type.
- Allow the user to reference existing edges/faces on the scene instead of having to calculate everything.
- Provide interactive mouse helpers for features that are hard to write by code: Only 3 interactive modes for now: Edge trimming, Sketch region extrude, Bezier curve drawing.
- Implicit coding whenever possible: e.g: There are sensible defaults for most parameters. The program will automatically fuse intersecting objects together so you do not have to worry about what object needs to be fused with what.</code></pre>
- It should be reasonably fast: The scene objects are cached and only the updated objects are re-computed.<p>I think I have achieved these goals to a good extent. The program is still in early stages and there are many features I want to add, rewrite but I think it is already usable for simple models.<p>Update to add more details:
This is based on Opencascade.js WASM binding. So you get all the good things that come with any brep kernel. Fillets, chamfers, step import and export...<p>The scene is webview but the editing is in your local file. You use your own editor and the environment you are familiar with.<p>One important feature that I think make this stand out among other code based cad software is the ability to transform features not just shapes. More here:
<a href="https://fluidcad.io/docs/guides/patterns" rel="nofollow">https://fluidcad.io/docs/guides/patterns</a>
You can see it in action in the lantern example:
<a href="https://fluidcad.io/docs/tutorials/lantern" rel="nofollow">https://fluidcad.io/docs/tutorials/lantern</a>
Show HN: Marimo pair – Reactive Python notebooks as environments for agents
Hi HN! We're excited to share marimo pair [1] [2], a toolkit that drops AI agents into a running marimo notebook [3] session. This lets agents use marimo as working memory and a reactive Python runtime, while also making it easy for humans and agents to collaborate on computational research and data work.<p>GitHub repo: <a href="https://github.com/marimo-team/marimo-pair" rel="nofollow">https://github.com/marimo-team/marimo-pair</a><p>Demo: <a href="https://www.youtube.com/watch?v=6uaqtchDnoc" rel="nofollow">https://www.youtube.com/watch?v=6uaqtchDnoc</a><p>marimo pair is implemented as an agent skill. Connect your agent of choice to a running notebook with:<p>/marimo-pair pair with me on my_notebook.py<p>The agent can do anything a human can do with marimo and more. For example, it can obtain feedback by running code in an ephemeral scratchpad (inspect variables, run code against the program state, read outputs). If it wants to persist state, the agent can add cells, delete them, and install packages (marimo records these actions in the associated notebook, which is just a Python file). The agent can even manipulate marimo's user interface — for fun, try asking your agent to greet you from within a pair session.<p>The agent effects all actions by running Python code in the marimo kernel. Under the hood, the marimo pair skill explains how to discover and create marimo sessions, and how to control them using a semi-private interface we call code mode.<p>Code mode lets models treat marimo as a REPL that extends their context windows, similar to recursive language models (RLMs). But unlike traditional REPLs, the marimo "REPL" incrementally builds a reproducible Python program, because marimo notebooks are dataflow graphs with well-defined execution semantics. As it uses code mode, the agent is kept on track by marimo's guardrails, which include the elimination of hidden state: run a cell and dependent cells are run automatically, delete a cell and its variables are scrubbed from memory.<p>By giving models full control over a stateful reactive programming environment, rather than a collection of ephemeral scripts, marimo pair makes agents active participants in research and data work. In our early experimentation [4], we've found that marimo pair accelerates data exploration, makes it easy to steer agents while testing research hypotheses, and can serve as a backend for RLMs, yielding a notebook as an executable trace of how the model answered a query. We even use marimo pair to find and fix bugs in itself and marimo [5]. In these examples the notebook is not only a computational substrate but also a canvas for collaboration between humans and agents, and an executable, literate artifact comprised of prose, code, and visuals.<p>marimo pair is early and experimental. We would love your thoughts.<p>[1] <a href="https://github.com/marimo-team/marimo-pair" rel="nofollow">https://github.com/marimo-team/marimo-pair</a><p>[2] <a href="https://marimo.io/blog/marimo-pair" rel="nofollow">https://marimo.io/blog/marimo-pair</a><p>[3] <a href="https://github.com/marimo-team/marimo" rel="nofollow">https://github.com/marimo-team/marimo</a><p>[4] <a href="https://www.youtube.com/watch?v=VKvjPJeNRPk" rel="nofollow">https://www.youtube.com/watch?v=VKvjPJeNRPk</a><p>[5] <a href="https://github.com/manzt/dotfiles/blob/main/.claude/skills/marimo-dev/SKILL.md" rel="nofollow">https://github.com/manzt/dotfiles/blob/main/.claude/skills/m...</a>
Show HN: Marimo pair – Reactive Python notebooks as environments for agents
Hi HN! We're excited to share marimo pair [1] [2], a toolkit that drops AI agents into a running marimo notebook [3] session. This lets agents use marimo as working memory and a reactive Python runtime, while also making it easy for humans and agents to collaborate on computational research and data work.<p>GitHub repo: <a href="https://github.com/marimo-team/marimo-pair" rel="nofollow">https://github.com/marimo-team/marimo-pair</a><p>Demo: <a href="https://www.youtube.com/watch?v=6uaqtchDnoc" rel="nofollow">https://www.youtube.com/watch?v=6uaqtchDnoc</a><p>marimo pair is implemented as an agent skill. Connect your agent of choice to a running notebook with:<p>/marimo-pair pair with me on my_notebook.py<p>The agent can do anything a human can do with marimo and more. For example, it can obtain feedback by running code in an ephemeral scratchpad (inspect variables, run code against the program state, read outputs). If it wants to persist state, the agent can add cells, delete them, and install packages (marimo records these actions in the associated notebook, which is just a Python file). The agent can even manipulate marimo's user interface — for fun, try asking your agent to greet you from within a pair session.<p>The agent effects all actions by running Python code in the marimo kernel. Under the hood, the marimo pair skill explains how to discover and create marimo sessions, and how to control them using a semi-private interface we call code mode.<p>Code mode lets models treat marimo as a REPL that extends their context windows, similar to recursive language models (RLMs). But unlike traditional REPLs, the marimo "REPL" incrementally builds a reproducible Python program, because marimo notebooks are dataflow graphs with well-defined execution semantics. As it uses code mode, the agent is kept on track by marimo's guardrails, which include the elimination of hidden state: run a cell and dependent cells are run automatically, delete a cell and its variables are scrubbed from memory.<p>By giving models full control over a stateful reactive programming environment, rather than a collection of ephemeral scripts, marimo pair makes agents active participants in research and data work. In our early experimentation [4], we've found that marimo pair accelerates data exploration, makes it easy to steer agents while testing research hypotheses, and can serve as a backend for RLMs, yielding a notebook as an executable trace of how the model answered a query. We even use marimo pair to find and fix bugs in itself and marimo [5]. In these examples the notebook is not only a computational substrate but also a canvas for collaboration between humans and agents, and an executable, literate artifact comprised of prose, code, and visuals.<p>marimo pair is early and experimental. We would love your thoughts.<p>[1] <a href="https://github.com/marimo-team/marimo-pair" rel="nofollow">https://github.com/marimo-team/marimo-pair</a><p>[2] <a href="https://marimo.io/blog/marimo-pair" rel="nofollow">https://marimo.io/blog/marimo-pair</a><p>[3] <a href="https://github.com/marimo-team/marimo" rel="nofollow">https://github.com/marimo-team/marimo</a><p>[4] <a href="https://www.youtube.com/watch?v=VKvjPJeNRPk" rel="nofollow">https://www.youtube.com/watch?v=VKvjPJeNRPk</a><p>[5] <a href="https://github.com/manzt/dotfiles/blob/main/.claude/skills/marimo-dev/SKILL.md" rel="nofollow">https://github.com/manzt/dotfiles/blob/main/.claude/skills/m...</a>
Show HN: Marimo pair – Reactive Python notebooks as environments for agents
Hi HN! We're excited to share marimo pair [1] [2], a toolkit that drops AI agents into a running marimo notebook [3] session. This lets agents use marimo as working memory and a reactive Python runtime, while also making it easy for humans and agents to collaborate on computational research and data work.<p>GitHub repo: <a href="https://github.com/marimo-team/marimo-pair" rel="nofollow">https://github.com/marimo-team/marimo-pair</a><p>Demo: <a href="https://www.youtube.com/watch?v=6uaqtchDnoc" rel="nofollow">https://www.youtube.com/watch?v=6uaqtchDnoc</a><p>marimo pair is implemented as an agent skill. Connect your agent of choice to a running notebook with:<p>/marimo-pair pair with me on my_notebook.py<p>The agent can do anything a human can do with marimo and more. For example, it can obtain feedback by running code in an ephemeral scratchpad (inspect variables, run code against the program state, read outputs). If it wants to persist state, the agent can add cells, delete them, and install packages (marimo records these actions in the associated notebook, which is just a Python file). The agent can even manipulate marimo's user interface — for fun, try asking your agent to greet you from within a pair session.<p>The agent effects all actions by running Python code in the marimo kernel. Under the hood, the marimo pair skill explains how to discover and create marimo sessions, and how to control them using a semi-private interface we call code mode.<p>Code mode lets models treat marimo as a REPL that extends their context windows, similar to recursive language models (RLMs). But unlike traditional REPLs, the marimo "REPL" incrementally builds a reproducible Python program, because marimo notebooks are dataflow graphs with well-defined execution semantics. As it uses code mode, the agent is kept on track by marimo's guardrails, which include the elimination of hidden state: run a cell and dependent cells are run automatically, delete a cell and its variables are scrubbed from memory.<p>By giving models full control over a stateful reactive programming environment, rather than a collection of ephemeral scripts, marimo pair makes agents active participants in research and data work. In our early experimentation [4], we've found that marimo pair accelerates data exploration, makes it easy to steer agents while testing research hypotheses, and can serve as a backend for RLMs, yielding a notebook as an executable trace of how the model answered a query. We even use marimo pair to find and fix bugs in itself and marimo [5]. In these examples the notebook is not only a computational substrate but also a canvas for collaboration between humans and agents, and an executable, literate artifact comprised of prose, code, and visuals.<p>marimo pair is early and experimental. We would love your thoughts.<p>[1] <a href="https://github.com/marimo-team/marimo-pair" rel="nofollow">https://github.com/marimo-team/marimo-pair</a><p>[2] <a href="https://marimo.io/blog/marimo-pair" rel="nofollow">https://marimo.io/blog/marimo-pair</a><p>[3] <a href="https://github.com/marimo-team/marimo" rel="nofollow">https://github.com/marimo-team/marimo</a><p>[4] <a href="https://www.youtube.com/watch?v=VKvjPJeNRPk" rel="nofollow">https://www.youtube.com/watch?v=VKvjPJeNRPk</a><p>[5] <a href="https://github.com/manzt/dotfiles/blob/main/.claude/skills/marimo-dev/SKILL.md" rel="nofollow">https://github.com/manzt/dotfiles/blob/main/.claude/skills/m...</a>
Show HN: A (marginally) useful x86-64 ELF executable in 301 bytes
Show HN: TUI-use: Let AI agents control interactive terminal programs
Show HN: Moon simulator game, ray-casting
Did this a few years ago. Seems apropos. Sources and more here: <a href="https://github.com/EngineersNeedArt/Mooncraft2000" rel="nofollow">https://github.com/EngineersNeedArt/Mooncraft2000</a>
Show HN: Moon simulator game, ray-casting
Did this a few years ago. Seems apropos. Sources and more here: <a href="https://github.com/EngineersNeedArt/Mooncraft2000" rel="nofollow">https://github.com/EngineersNeedArt/Mooncraft2000</a>
Show HN: I pipe free sports streams into Jellyfin – no ads, just HLS
Show HN: 41 years sea surface temperature anomalies
Show HN: 41 years sea surface temperature anomalies
Show HN: I built a Cargo-like build tool for C/C++
I love C and C++, but setting up projects can sometimes be a pain.<p>Every time I wanted to start something new I'd spend the first hour writing CMakeLists.txt, figuring out find_package, copying boilerplate from my last project, and googling why my library isn't linking. By the time the project was actually set up I'd lost all momentum.<p>So, I built Craft - a lightweight build and workflow tool for C and C++. Instead of writing CMake, your project configuration goes in a simple craft.toml:<p><pre><code> [project]
name = "my_app"
version = "0.1.0"
language = "c"
c_standard = 99
[build]
type = "executable"
</code></pre>
Run craft build and Craft generates the CMakeLists.txt automatically and builds your project. Want to add dependencies? That's just a simple command:<p><pre><code> craft add --git https://github.com/raysan5/raylib --links raylib
craft add --path ../my_library
craft add sfml
</code></pre>
Craft will clone the dependency, regenerate the CMake, and rebuild your project for you.<p>Other Craft features: craft init - adopt an existing C/C++ project into Craft or initialize an empty directory.
craft template - save any project structure as a template to be initialized later. craft gen - generate header and source files with starter boilerplate code. craft upgrade - keeps itself up to date.<p>CMakeLists.extra.cmake for anything that Craft does not yet handle.<p>Cross platform - macOS, Linux, Windows.<p>It is still early (I just got it to v1.0.0) but I am excited to be able to share it and keep improving it.<p>Would love feedback. Please also feel free to make pull requests if you want to help with development!