The best Hacker News stories from Show from the past day
Latest posts:
Show HN: I wrote a new BitTorrent tracker in Elixir
Hello everyone!<p>I'm currently in a journey to learn and improve my Elixir and Go skills (my daily job uses C++) and looking through my backlog for projects to take on I decided Elixir is the perfect language to write a highly-parallel BitTorrent tracker.
So I have spent my free time these last 3 months writing one! Now I think it has enough features to present it to the world (and a docker image to give it a quick try).<p>I know some people see trackers as relics of the past now that DHT and PEX are common but I think they still serve a purpose in today's Internet (purely talking about public trackers). That said there is not a lot going on in terms of new developments since everyone just throws opentracker in a vps a calls it a day (honorable exceptions: aquatic and torrust).<p>I plan to continue development for the foreseeable future and add some (optional) esoteric features along the way so if anyone currently operates a tracker please give a try and enjoy the lack of crashes.<p>note: only swarm_printout.ex has been vibe coded, the rest has all been written by hand.
Show HN: Unregistry – “docker push” directly to servers without a registry
I got tired of the push-to-registry/pull-from-registry dance every time I needed to deploy a Docker image.<p>In certain cases, using a full-fledged external (or even local) registry is annoying overhead. And if you think about it, there's already a form of registry present on any of your Docker-enabled hosts — the Docker's own image storage.<p>So I built Unregistry [1] that exposes Docker's (containerd) image storage through a standard registry API. It adds a `docker pussh` command that pushes images directly to remote Docker daemons over SSH. It transfers only the missing layers, making it fast and efficient.<p><pre><code> docker pussh myapp:latest user@server
</code></pre>
Under the hood, it starts a temporary unregistry container on the remote host, pushes to it through an SSH tunnel, and cleans up when done.<p>I've built it as a byproduct while working on Uncloud [2], a tool for deploying containers across a network of Docker hosts, and figured it'd be useful as a standalone project.<p>Would love to hear your thoughts and use cases!<p>[1]: <a href="https://github.com/psviderski/unregistry">https://github.com/psviderski/unregistry</a><p>[2]: <a href="https://github.com/psviderski/uncloud">https://github.com/psviderski/uncloud</a>
Show HN: Unregistry – “docker push” directly to servers without a registry
I got tired of the push-to-registry/pull-from-registry dance every time I needed to deploy a Docker image.<p>In certain cases, using a full-fledged external (or even local) registry is annoying overhead. And if you think about it, there's already a form of registry present on any of your Docker-enabled hosts — the Docker's own image storage.<p>So I built Unregistry [1] that exposes Docker's (containerd) image storage through a standard registry API. It adds a `docker pussh` command that pushes images directly to remote Docker daemons over SSH. It transfers only the missing layers, making it fast and efficient.<p><pre><code> docker pussh myapp:latest user@server
</code></pre>
Under the hood, it starts a temporary unregistry container on the remote host, pushes to it through an SSH tunnel, and cleans up when done.<p>I've built it as a byproduct while working on Uncloud [2], a tool for deploying containers across a network of Docker hosts, and figured it'd be useful as a standalone project.<p>Would love to hear your thoughts and use cases!<p>[1]: <a href="https://github.com/psviderski/unregistry">https://github.com/psviderski/unregistry</a><p>[2]: <a href="https://github.com/psviderski/uncloud">https://github.com/psviderski/uncloud</a>
Show HN: Unregistry – “docker push” directly to servers without a registry
I got tired of the push-to-registry/pull-from-registry dance every time I needed to deploy a Docker image.<p>In certain cases, using a full-fledged external (or even local) registry is annoying overhead. And if you think about it, there's already a form of registry present on any of your Docker-enabled hosts — the Docker's own image storage.<p>So I built Unregistry [1] that exposes Docker's (containerd) image storage through a standard registry API. It adds a `docker pussh` command that pushes images directly to remote Docker daemons over SSH. It transfers only the missing layers, making it fast and efficient.<p><pre><code> docker pussh myapp:latest user@server
</code></pre>
Under the hood, it starts a temporary unregistry container on the remote host, pushes to it through an SSH tunnel, and cleans up when done.<p>I've built it as a byproduct while working on Uncloud [2], a tool for deploying containers across a network of Docker hosts, and figured it'd be useful as a standalone project.<p>Would love to hear your thoughts and use cases!<p>[1]: <a href="https://github.com/psviderski/unregistry">https://github.com/psviderski/unregistry</a><p>[2]: <a href="https://github.com/psviderski/uncloud">https://github.com/psviderski/uncloud</a>
Show HN: Free local security checks for AI coding in VSCode, Cursor and Windsurf
Hi HN!<p>We just launched Codacy Guardrails, an IDE extension with a CLI for code analysis and MCP server that enforces security & quality rules on AI-generated code in real-time. It hooks into AI coding assistants (like VS Code Agent Mode, Cursor, Windsurf), silently scanning and fixing AI-suggested code that has vulnerabilities or violates your coding standards, while the code it’s being generated.<p>We built this because coding agents can be a double-edged sword. They do boost productivity, but can easily introduce insecure or non-compliant code. One recent research team at NYU found that 40% of Copilot’s outputs were buggy or exploitable [1]. Other surveys mention that people are spending more time debugging AI-generated code [2].<p>That's why we created “guardrails” to catch security problems early.<p>Codacy Guardrails uses a collection of open-source static analyzers (like Semgrep and Trivy) to scan the AI’s output against 2000+ rules. We currently support JavaScript/TypeScript, Python, and Java, focusing on things like OWASP Top 10 vulns, hardcoded secrets, dependency checks, code complexity and styling violations, and you can customize the rules to match your project’s needs. We're not using any AI models, it's “classic” static code analysis working alongside your AI assistant.<p>Here’s a quick demo: <a href="https://youtu.be/pB02u0ntQpM" rel="nofollow">https://youtu.be/pB02u0ntQpM</a><p>The extension is free for all developers. (We do have paid plans for teams to apply rules centrally, but that’s not needed to use the extension and local code analysis with agents.)<p>Setup is pretty straightforward: Install the extension and enable Codacy’s CLI and MCP Server from the sidebar.<p>We’re eager to hear what the HN community thinks! Does this approach sound useful in your AI coding workflow? Have you encountered security issues from AI-generated code?<p>We hope Codacy Guardrails can make AI-assisted development a bit safer and more trustworthy. Thanks for reading!<p>Get extension: <a href="https://www.codacy.com/get-ide-extension" rel="nofollow">https://www.codacy.com/get-ide-extension</a>
Docs: <a href="https://docs.codacy.com/codacy-guardrails/codacy-guardrails-getting-started/" rel="nofollow">https://docs.codacy.com/codacy-guardrails/codacy-guardrails-...</a><p>Sources
[1]: NYU Research: <a href="https://www.researchgate.net/publication/388193053_Asleep_at_the_Keyboard_Assessing_the_Security_of_GitHub_Copilot's_Code_Contributions" rel="nofollow">https://www.researchgate.net/publication/388193053_Asleep_at...</a>
[2]: <a href="https://devops.com/survey-ai-tools-are-increasing-amount-of-bad-code-needing-to-be-fixed" rel="nofollow">https://devops.com/survey-ai-tools-are-increasing-amount-of-...</a>
Show HN: I built a tensor library from scratch in C++/CUDA
Hi HN,<p>Over the past few months, I've been building `dsc`, a tensor library from scratch in C++/CUDA. My main focus has been on getting the basics right, prioritizing a clean API, simplicity, and clear observability for running small LLMs locally.<p>The key features are:
- C++ core with CUDA support written from scratch.
- A familiar, PyTorch-like Python API.
- Runs real models: it's complete enough to load a model like Qwen from HuggingFace and run inference on both CUDA and CPU with a single line change[1].
- Simple, built-in observability for both Python and C++.<p>Next on the roadmap is adding BF16 support and then I'll be working on visualization for GPU workloads.<p>The project is still early and I would be incredibly grateful for any feedback, code reviews, or questions from the HN community!<p>GitHub Repo: <a href="https://github.com/nirw4nna/dsc">https://github.com/nirw4nna/dsc</a><p>[1]: <a href="https://github.com/nirw4nna/dsc/blob/main/examples/models/qwen2_5.py">https://github.com/nirw4nna/dsc/blob/main/examples/models/qw...</a>
Show HN: I built a tensor library from scratch in C++/CUDA
Hi HN,<p>Over the past few months, I've been building `dsc`, a tensor library from scratch in C++/CUDA. My main focus has been on getting the basics right, prioritizing a clean API, simplicity, and clear observability for running small LLMs locally.<p>The key features are:
- C++ core with CUDA support written from scratch.
- A familiar, PyTorch-like Python API.
- Runs real models: it's complete enough to load a model like Qwen from HuggingFace and run inference on both CUDA and CPU with a single line change[1].
- Simple, built-in observability for both Python and C++.<p>Next on the roadmap is adding BF16 support and then I'll be working on visualization for GPU workloads.<p>The project is still early and I would be incredibly grateful for any feedback, code reviews, or questions from the HN community!<p>GitHub Repo: <a href="https://github.com/nirw4nna/dsc">https://github.com/nirw4nna/dsc</a><p>[1]: <a href="https://github.com/nirw4nna/dsc/blob/main/examples/models/qwen2_5.py">https://github.com/nirw4nna/dsc/blob/main/examples/models/qw...</a>
Show HN: I built a tensor library from scratch in C++/CUDA
Hi HN,<p>Over the past few months, I've been building `dsc`, a tensor library from scratch in C++/CUDA. My main focus has been on getting the basics right, prioritizing a clean API, simplicity, and clear observability for running small LLMs locally.<p>The key features are:
- C++ core with CUDA support written from scratch.
- A familiar, PyTorch-like Python API.
- Runs real models: it's complete enough to load a model like Qwen from HuggingFace and run inference on both CUDA and CPU with a single line change[1].
- Simple, built-in observability for both Python and C++.<p>Next on the roadmap is adding BF16 support and then I'll be working on visualization for GPU workloads.<p>The project is still early and I would be incredibly grateful for any feedback, code reviews, or questions from the HN community!<p>GitHub Repo: <a href="https://github.com/nirw4nna/dsc">https://github.com/nirw4nna/dsc</a><p>[1]: <a href="https://github.com/nirw4nna/dsc/blob/main/examples/models/qwen2_5.py">https://github.com/nirw4nna/dsc/blob/main/examples/models/qw...</a>
Show HN: I made an online Unicode Cuneiform digital clock
I got the idea to pay homage to the people who gave us base-60 time, and in the process discovered that Cuneiform is in Unicode.
Show HN: I made an online Unicode Cuneiform digital clock
I got the idea to pay homage to the people who gave us base-60 time, and in the process discovered that Cuneiform is in Unicode.
Show HN: Lstr – A modern, interactive tree command written in Rust
Hi HN,<p>(First time poster!)<p>I'm the author of `lstr`. I've always loved the classic Linux `tree` command for its simplicity, but I often found myself wanting more modern features like interactivity and Git integration. So, I decided to build my own version in Rust with a philosophy of being fast, minimalist, and interactive. It was also an excuse to help learn more about Rust\!<p>Here's a quick look at the interactive mode:<p><a href="https://raw.githubusercontent.com/bgreenwell/lstr/main/assets/lstr-demo.gif" rel="nofollow">https://raw.githubusercontent.com/bgreenwell/lstr/main/asset...</a><p>I've just released v0.2.0 with some features I think this community might find useful:<p><pre><code> * **Interactive TUI Mode:** You can launch it with `lstr interactive`. It allows for keyboard-driven navigation, expanding/collapsing directories, and opening files in your default editor.
* **Git Status Integration:** Using the `-G` flag, `lstr` will show the Git status of every file and directory right in the tree output.
* **Shell Integration:** This is my favorite feature. In interactive mode, you can press `Ctrl+s` to quit and have `lstr` print the selected path to stdout. This lets you pipe it into other commands or use it as a visual `cd`. For example, you can add this function to your `.bashrc`/`.zshrc`:
```bash
lcd() {
local selected_path
selected_path="$(lstr interactive -gG)"
if [[ -n "$selected_path" && -d "$selected_path" ]]; then
cd "$selected_path"
fi
}
```
Then just run `lcd` to visually pick a directory and jump to it.
</code></pre>
It also supports file-type icons (via Nerd Fonts), file sizes, permissions, and respects your `.gitignore`.<p>The project is open-source and I would love to get your feedback.<p>GitHub: <a href="https://github.com/bgreenwell/lstr">https://github.com/bgreenwell/lstr</a><p>Crates.io: <a href="https://crates.io/crates/lstr" rel="nofollow">https://crates.io/crates/lstr</a><p>Thanks for checking it out!
Show HN: Lstr – A modern, interactive tree command written in Rust
Hi HN,<p>(First time poster!)<p>I'm the author of `lstr`. I've always loved the classic Linux `tree` command for its simplicity, but I often found myself wanting more modern features like interactivity and Git integration. So, I decided to build my own version in Rust with a philosophy of being fast, minimalist, and interactive. It was also an excuse to help learn more about Rust\!<p>Here's a quick look at the interactive mode:<p><a href="https://raw.githubusercontent.com/bgreenwell/lstr/main/assets/lstr-demo.gif" rel="nofollow">https://raw.githubusercontent.com/bgreenwell/lstr/main/asset...</a><p>I've just released v0.2.0 with some features I think this community might find useful:<p><pre><code> * **Interactive TUI Mode:** You can launch it with `lstr interactive`. It allows for keyboard-driven navigation, expanding/collapsing directories, and opening files in your default editor.
* **Git Status Integration:** Using the `-G` flag, `lstr` will show the Git status of every file and directory right in the tree output.
* **Shell Integration:** This is my favorite feature. In interactive mode, you can press `Ctrl+s` to quit and have `lstr` print the selected path to stdout. This lets you pipe it into other commands or use it as a visual `cd`. For example, you can add this function to your `.bashrc`/`.zshrc`:
```bash
lcd() {
local selected_path
selected_path="$(lstr interactive -gG)"
if [[ -n "$selected_path" && -d "$selected_path" ]]; then
cd "$selected_path"
fi
}
```
Then just run `lcd` to visually pick a directory and jump to it.
</code></pre>
It also supports file-type icons (via Nerd Fonts), file sizes, permissions, and respects your `.gitignore`.<p>The project is open-source and I would love to get your feedback.<p>GitHub: <a href="https://github.com/bgreenwell/lstr">https://github.com/bgreenwell/lstr</a><p>Crates.io: <a href="https://crates.io/crates/lstr" rel="nofollow">https://crates.io/crates/lstr</a><p>Thanks for checking it out!
Show HN: Workout.cool – Open-source fitness coaching platform
I was the main contributor to workout.lol, an open-source fitness app to easily build a workout routine. The project had traction (1.4k GitHub stars, 95 forks, ~20K visits/month), but was eventually sold due to video licensing hurdles.
The new owner stopped maintaining it, and the repo went abandoned.<p>Over the next 9 months, I sent 15 emails to try to save it : no replies. Feature requests & issues were ignored. The community was left with a "broken" tool let's say.<p>I couldn't just let it die So I built the new version from scratch with the same open-source spirit, but a better architecture long-term vision, more features and no license problems.<p>It's called : Workout.cool (<a href="https://workout.cool" rel="nofollow">https://workout.cool</a>). What it offers: 100% open-source, MIT-licensed - 1200+ exercises (with videos, attributes, translations) - Progress tracking - Multilingual-ready - Self-hostable<p>I'm not doing this for money. I'm doing it because I believe in open fitness tools, and I’ve been passionate about strength training for 15+ years.<p>If this resonates with you, feel free to: - Star the repo - Share with fitness/tech friends - Suggest features - Contribute code/design/docs<p>Together, we can build the open-source fitness platform we all wanted to easily build a workout routine and get in shape<p>Website: <a href="https://workout.cool" rel="nofollow">https://workout.cool</a>
GitHub: <a href="https://github.com/Snouzy/workout-cool">https://github.com/Snouzy/workout-cool</a>
Show HN: Workout.cool – Open-source fitness coaching platform
I was the main contributor to workout.lol, an open-source fitness app to easily build a workout routine. The project had traction (1.4k GitHub stars, 95 forks, ~20K visits/month), but was eventually sold due to video licensing hurdles.
The new owner stopped maintaining it, and the repo went abandoned.<p>Over the next 9 months, I sent 15 emails to try to save it : no replies. Feature requests & issues were ignored. The community was left with a "broken" tool let's say.<p>I couldn't just let it die So I built the new version from scratch with the same open-source spirit, but a better architecture long-term vision, more features and no license problems.<p>It's called : Workout.cool (<a href="https://workout.cool" rel="nofollow">https://workout.cool</a>). What it offers: 100% open-source, MIT-licensed - 1200+ exercises (with videos, attributes, translations) - Progress tracking - Multilingual-ready - Self-hostable<p>I'm not doing this for money. I'm doing it because I believe in open fitness tools, and I’ve been passionate about strength training for 15+ years.<p>If this resonates with you, feel free to: - Star the repo - Share with fitness/tech friends - Suggest features - Contribute code/design/docs<p>Together, we can build the open-source fitness platform we all wanted to easily build a workout routine and get in shape<p>Website: <a href="https://workout.cool" rel="nofollow">https://workout.cool</a>
GitHub: <a href="https://github.com/Snouzy/workout-cool">https://github.com/Snouzy/workout-cool</a>
Show HN: Workout.cool – Open-source fitness coaching platform
I was the main contributor to workout.lol, an open-source fitness app to easily build a workout routine. The project had traction (1.4k GitHub stars, 95 forks, ~20K visits/month), but was eventually sold due to video licensing hurdles.
The new owner stopped maintaining it, and the repo went abandoned.<p>Over the next 9 months, I sent 15 emails to try to save it : no replies. Feature requests & issues were ignored. The community was left with a "broken" tool let's say.<p>I couldn't just let it die So I built the new version from scratch with the same open-source spirit, but a better architecture long-term vision, more features and no license problems.<p>It's called : Workout.cool (<a href="https://workout.cool" rel="nofollow">https://workout.cool</a>). What it offers: 100% open-source, MIT-licensed - 1200+ exercises (with videos, attributes, translations) - Progress tracking - Multilingual-ready - Self-hostable<p>I'm not doing this for money. I'm doing it because I believe in open fitness tools, and I’ve been passionate about strength training for 15+ years.<p>If this resonates with you, feel free to: - Star the repo - Share with fitness/tech friends - Suggest features - Contribute code/design/docs<p>Together, we can build the open-source fitness platform we all wanted to easily build a workout routine and get in shape<p>Website: <a href="https://workout.cool" rel="nofollow">https://workout.cool</a>
GitHub: <a href="https://github.com/Snouzy/workout-cool">https://github.com/Snouzy/workout-cool</a>
Show HN: PMDb – Public Movie Database
Show HN: StellarSnap – Explore NASA APODs, simulate orbits, learn astronomy
I built StellarSnap as a calm, ad-free space to explore NASA’s Astronomy Picture of the Day (APOD) and learn astronomy along the way.<p>What it includes:<p>- A clean APOD archive browser with a Random APOD button<p>- A growing Glossary with term highlighting across the site<p>- A 2D Orbit Simulator where you can test satellite motion with real physics<p>- A deeper Encyclopedia, still early, but expanding<p>- Subtle touches like “see past APODs using this term”<p>- And more to come<p>It’s entirely ad-free, cookie-free, and not affiliated with NASA, but I was honored to have StellarSnap mentioned on the official APOD About page by Professor Robert Nemiroff:
<a href="https://apod.nasa.gov/apod/lib/about_apod.html" rel="nofollow">https://apod.nasa.gov/apod/lib/about_apod.html</a><p>Always open to ideas, critiques, or ways to make it better.
Show HN: I built a FOSS tool to run your Steam games in the Cloud
I wanted to play my Steam games but my aging PC couldn’t keep up, so I built Cloudy Pad - a tool to run Steam in the Cloud (GitHub: <a href="https://github.com/PierreBeucher/cloudypad">https://github.com/PierreBeucher/cloudypad</a>)<p>It runs on AWS, Azure, GCP, Scaleway and Paperspace with various cost optimizations and safeties:<p>- Cost alerts<p>- Auto stop inactive instances to avoid unwanted cost<p>- Disk snapshots and data cleanup for cost efficiency<p>- Spot instance support<p>Under the hood: a Linux VM and a container running Sunshine (a streaming server <a href="https://github.com/LizardByte/Sunshine">https://github.com/LizardByte/Sunshine</a>) with Steam. Most Windows games work just fine thanks to Proton.<p>It streams effortlessly at 1080p 100+ FPS - I recently played Baldur’s Gate III and Clair Obscur in Ultra, ran like a breeze.<p>Cost-wise it’s great for occasional players: ~30h or less per month typically cost less than 25$. Though admittedly for heavy gamers it may be less cost-effective due to cloud pricing.<p>I’d love feedback from the HN community !
Show HN: Socket-call – Call socket.io events like normal JavaScript functions
Hello HN,<p>I built a Typescript library (named socket-call, for lack of a more sexy name) whose goal is to be able to call socket.io events as regular functions.<p>So you declare your server-side like so:<p><pre><code> ...
const listenEvents = (services: UserServices) => ({
// Add your events here, the name of the event is the name of the function
login: async (username: string) => {
services._socket.data.user = { username };
console.log(`User ${username} logged in`);
setInterval(() => {
// Calling an event that's handled client-side
services.showServerMessage(`You're still logged in ${username}!`)
}, 1000);
return `You are now logged in ${username}!`;
},
});
</code></pre>
and then on the client side you call them like normal async Javascript functions (and you can also create client-side event handlers):<p><pre><code> ...
const user = socket.addNamespace<UserEmitEvents, UserListenEvents>(
'/user'
);
// Calling an event that's declared server-side
user.login(username.value).then((message) => {
console.log('Server acked with', message);
});
// Handling an event that is sent by the server
user.showServerMessage = (message) => {
console.log('Server sent us the message', message);
}
</code></pre>
I use this library for my own projects and would be interested to receive feedback about it :-)
Show HN: dk – A script runner and cross-compiler, written in OCaml
I've always found it cool to be in roles where I can help a younger generation learn skills to have a bright future. That role is something I do in a few ways (as a parent, robotics mentor, school board advisor and Sunday school teacher) and I suspect most HN readers share the same role and appreciation. And for developing software skills, it was obvious that both the students and I had to have a productive software environment where we could work together. That theme of experienced/inexperienced engineers working together is the context in which I created `dk` as a scripting tool.<p>My testing ground has been students with one or two AP CS courses (high school computer science in the US), some of whom interned with me. I had to tackle a few problems:<p>- The development environment had to be simple to setup and the programming language couldn't be complicated
- The recognition that writing small, easily testable units of work (ex. "scripts") has been the only way I've found for very junior programmers to develop a large application
- Cheap, locked-down development hardware (ex. school computers with limited RAM and no Administrator privileges) is sometimes used for deployment to cheap hardware targets (ex. hand-me-down Android tablets)<p>My solution was to write a standalone binary called `dk` that uses scripts as the atom of work, cross-compiles to standalone executables, and downloads the runtimes and sysroots it needs on-demand. It sits roughly in the same space as Python and Go.<p>`dk` is available for Windows, macOS and Linux/glibc host machines with a growing list of cross-compilation targets.
Your `dk` scripts are written in an almost complete subset of OCaml 4: all `dk` scripts are OCaml, but not all OCaml code can run in `dk`. The other differences from conventional OCaml are that `dk` comes with a large library included, and that I treat any feature as buggy if the feature does not work on all supported OS-es.<p>The above origin of `dk` is admittedly odd (and abbreviated), so I was not expecting that `dk` would now be a general-purpose scripting tool. Yet it is. I can wrap, re-use and organize most of my hand-written software as a set of `dk` scripts.<p>Fair warning: The cross-compilation support in `dk` has had a recent overhaul and not every bug is closed. The error messages suck (you have to scroll up to see the root cause and resolution) but they will improve. Some progress bars are missing. There are also a few experimental features ... `uv`-style imports and an interactive interpreter are the big ones ... which are purposely under-documented because I am worried about `dk`'s API surface.<p>But it still works well, and you can see some real applications in the Examples section. I'd love if you could give it a kick in the tires and give `dk` some feedback! The issue list is at <<a href="https://github.com/diskuv/dk/issues">https://github.com/diskuv/dk/issues</a>>.