The best Hacker News stories from Show from the past day
Latest posts:
Show HN: QBasic Gorillas (Repeeled)
I've found the most engaging way to practice techniques for AI-assisted development and test models is to build fun side projects in vanilla JS.<p>I spent many hours playing (and studying and editing) QBasic Gorillas, and this is a vanilla JS implementation using Fable and Opus.<p>Play 1-on-1 hotseat or against the computer. A bit of extra camera snazz as well.
Show HN: Be the ChatBOT
I made this experimental art project/game that's an LLM chat assistant, but where <i>you're</i> the AI.<p>I wanted people to get a visceral sense of what it's like to answer the kinds of things that people prompt their chatbots day in and day out.<p>If you're interested, I wrote up some more info on how I made it, including how the "user" prompts are generated with an eye for realism: <a href="https://bethechatbot.com/about" rel="nofollow">https://bethechatbot.com/about</a><p>Hope you enjoy it! I'd love to hear people's takeaways.
Show HN: A zoomable timeline of 4M Wikipedia events
I'm building a journal app in Kotlin Multiplatform and for this purpose I have created a zoomable timeline interface.<p>This is a side-project where I reuse the timeline interface to display 4 million events imported from Wikipedia / Wikidata, scored using PageRank. There is more information on the about page.<p>If you're interested in the stack: I use Kotlin Multiplatform extensively, with Compose Multiplatform for the UI, communicates with the backend using Kotlinx-RPC and behind the hood a simple Postgres database on a Hetzner machine.
Show HN: A zoomable timeline of 4M Wikipedia events
I'm building a journal app in Kotlin Multiplatform and for this purpose I have created a zoomable timeline interface.<p>This is a side-project where I reuse the timeline interface to display 4 million events imported from Wikipedia / Wikidata, scored using PageRank. There is more information on the about page.<p>If you're interested in the stack: I use Kotlin Multiplatform extensively, with Compose Multiplatform for the UI, communicates with the backend using Kotlinx-RPC and behind the hood a simple Postgres database on a Hetzner machine.
Show HN: A zoomable timeline of 4M Wikipedia events
I'm building a journal app in Kotlin Multiplatform and for this purpose I have created a zoomable timeline interface.<p>This is a side-project where I reuse the timeline interface to display 4 million events imported from Wikipedia / Wikidata, scored using PageRank. There is more information on the about page.<p>If you're interested in the stack: I use Kotlin Multiplatform extensively, with Compose Multiplatform for the UI, communicates with the backend using Kotlinx-RPC and behind the hood a simple Postgres database on a Hetzner machine.
Show HN: Mojibake – A low-level Unicode library written in C
I've written Mojibake because I don't like the other Unicode libraries for Unicode support.<p>It consists of only two amalgamation files: mojibake.h and mojibake.c. I've added all the most important Unicode algorithms, such as normalization, case conversion, segmentation, bidirectional text, collation, confusable, and others.<p>I regularly test it in these OSes: Linux, macOS, FreeBSD, OpenBSD, NetBSD, and Windows 11.<p>You can find a WASM demo on that site of all the public API functions and the documentation. If you want to participate, feel free to do it. Any kind of help is welcome. Check the CONTRIBUTING.md and API.md files in the GitHub repository for instructions on how to do it.
Show HN: Mojibake – A low-level Unicode library written in C
I've written Mojibake because I don't like the other Unicode libraries for Unicode support.<p>It consists of only two amalgamation files: mojibake.h and mojibake.c. I've added all the most important Unicode algorithms, such as normalization, case conversion, segmentation, bidirectional text, collation, confusable, and others.<p>I regularly test it in these OSes: Linux, macOS, FreeBSD, OpenBSD, NetBSD, and Windows 11.<p>You can find a WASM demo on that site of all the public API functions and the documentation. If you want to participate, feel free to do it. Any kind of help is welcome. Check the CONTRIBUTING.md and API.md files in the GitHub repository for instructions on how to do it.
Workspaces – Explore the workspaces of modern creators
Want to see what items show up in these setups time and time again?<p>I compiled all of the data from 500+ interviews into one easy to read report: <a href="https://workspaces.xyz/gear-report" rel="nofollow">https://workspaces.xyz/gear-report</a>
Show HN: Watch bots interact with an SSH honeypot in real time
Show HN: Watch bots interact with an SSH honeypot in real time
Show HN: Watch bots interact with an SSH honeypot in real time
Show HN: Watch bots interact with an SSH honeypot in real time
Show HN: E-- – A language you dial between English and Python
Show HN: Low-latency local LLM runner via OpenJDK Panama FFM (Java 22)
I wanted to run AI from inside the JVM. I started out with the standard REST sidecar, ripped that out to use Project Panama (Foreign Function & Memory API) in the new JDK versions to interface directly with llama.cpp. I still wasn't happy with how that functioned, so I built libargus.cc to get a clean ABI to expose a structured API up in the JVM landscape. It still uses Project Panama to interface directly with llama.cpp, whisper.cpp, and ggml compute graphs.<p>I have zero-allocation on the hot paths, memory segments for prompts and tokens are allocated once inside confined Arenas. Raw pointers pass straight through down to the low C level. This avoids primitive array cloning and heap churn.<p>I mapped out the native structures from llama.cpp and whisper.cpp while matching the compiler's padding to maintain safe memory access.<p>I bundle pre-compiled native binaries in the jar for easy deployment.<p>This execution engine provides the foundation I need for work I'm doing on a spatio-temporal memory layer (L-TABB) to replace RAGs. I'd love to get technical feedback to polish any issues while I continue working on the next layer.
Deep-dives from anyone hacking on Project Panama or low-latency systems in modern JDK would be very appreciated!<p>I'm much better with code than prose, so I'll let the code do most of the talking.<p>Happy Hacking!
/David<p>Code: <a href="https://libargus.cc" rel="nofollow">https://libargus.cc</a>
Project Landing Page: <a href="https://projectargus.cc" rel="nofollow">https://projectargus.cc</a>
Show HN: Clx – Compile Lua to Native Executables Through C++20
Hi HN,<p>clx is an ahead-of-time compiler for standard Lua that generates C++20 and produces standalone native executables through GCC, Clang or MSVC.<p>The project started as an experiment to see whether modern C++ could be used as a portable compiler backend instead of LLVM or direct machine code generation. The generated code is then compiled and optimized by the host toolchain.<p>The latest release replaces the previous NaN-tagged value representation with a new shadow-types implementation, adds full int64 support, improves native arithmetic code generation and adds ARM64 macOS coroutine support.<p>Performance is typically much faster than the Lua interpreter and can outperform LuaJIT on some computation-heavy workloads while remaining fully ahead-of-time compiled.<p>The repository also contains graphical examples written in Lua, including a Pong game and a Mandelbrot explorer using a Sokol binary module (using the clx C++ API)<p>I'd be very interested in feedback on clx :)
Show HN: Clx – Compile Lua to Native Executables Through C++20
Hi HN,<p>clx is an ahead-of-time compiler for standard Lua that generates C++20 and produces standalone native executables through GCC, Clang or MSVC.<p>The project started as an experiment to see whether modern C++ could be used as a portable compiler backend instead of LLVM or direct machine code generation. The generated code is then compiled and optimized by the host toolchain.<p>The latest release replaces the previous NaN-tagged value representation with a new shadow-types implementation, adds full int64 support, improves native arithmetic code generation and adds ARM64 macOS coroutine support.<p>Performance is typically much faster than the Lua interpreter and can outperform LuaJIT on some computation-heavy workloads while remaining fully ahead-of-time compiled.<p>The repository also contains graphical examples written in Lua, including a Pong game and a Mandelbrot explorer using a Sokol binary module (using the clx C++ API)<p>I'd be very interested in feedback on clx :)
Show HN: Clx – Compile Lua to Native Executables Through C++20
Hi HN,<p>clx is an ahead-of-time compiler for standard Lua that generates C++20 and produces standalone native executables through GCC, Clang or MSVC.<p>The project started as an experiment to see whether modern C++ could be used as a portable compiler backend instead of LLVM or direct machine code generation. The generated code is then compiled and optimized by the host toolchain.<p>The latest release replaces the previous NaN-tagged value representation with a new shadow-types implementation, adds full int64 support, improves native arithmetic code generation and adds ARM64 macOS coroutine support.<p>Performance is typically much faster than the Lua interpreter and can outperform LuaJIT on some computation-heavy workloads while remaining fully ahead-of-time compiled.<p>The repository also contains graphical examples written in Lua, including a Pong game and a Mandelbrot explorer using a Sokol binary module (using the clx C++ API)<p>I'd be very interested in feedback on clx :)
Show HN: Clx – Compile Lua to Native Executables Through C++20
Hi HN,<p>clx is an ahead-of-time compiler for standard Lua that generates C++20 and produces standalone native executables through GCC, Clang or MSVC.<p>The project started as an experiment to see whether modern C++ could be used as a portable compiler backend instead of LLVM or direct machine code generation. The generated code is then compiled and optimized by the host toolchain.<p>The latest release replaces the previous NaN-tagged value representation with a new shadow-types implementation, adds full int64 support, improves native arithmetic code generation and adds ARM64 macOS coroutine support.<p>Performance is typically much faster than the Lua interpreter and can outperform LuaJIT on some computation-heavy workloads while remaining fully ahead-of-time compiled.<p>The repository also contains graphical examples written in Lua, including a Pong game and a Mandelbrot explorer using a Sokol binary module (using the clx C++ API)<p>I'd be very interested in feedback on clx :)
Show HN: Leaves – A text-UI disk usage treemap visualizer
GUI disk analyzers are great for figuring out what's filling up your laptop/desktop drive.<p>On containers or remote servers, the options are limited to purely text based
utilities (e.g. du) or list-centric TUIs (e.g. ncdu) which are usually limited
to viewing one directory at a time.<p>I created <i>leaves</i> to fill that gap.<p>Inspired by classic utilities like WinDirStat and KDirStat, it uses a
2-dimensional treemap^1 visualization to show the entire directory hierarchy
with proportionally sized rectangles.<p>It's performant enough to handle millions of files, thanks to Rust and
multi-threading. However, block characters aren't as suited as pixels for
resolving a large number of items. Leaves can show file-type summaries per
directory or partition the top-level directories by extension, allowing you to
see not only where space is being used, but also how.<p>For instance, I can see the largest chunk of my home directory is taken up by
uv caches for python and old Linux ISOs that I could easily re-download if
needed. Or in a particular container, +600MB is used by standard Rust
documentation and tutorials, and that it is the only location with HTML/JS files,
when only the libraries and build tools are needed (note to self: remember to
use the <i>minimal</i> profile next time).<p>^1: <a href="https://github.com/shundhammer/qdirstat/blob/master/doc/Treemap.md" rel="nofollow">https://github.com/shundhammer/qdirstat/blob/master/doc/Tree...</a>
Show HN: Leaves – A text-UI disk usage treemap visualizer
GUI disk analyzers are great for figuring out what's filling up your laptop/desktop drive.<p>On containers or remote servers, the options are limited to purely text based
utilities (e.g. du) or list-centric TUIs (e.g. ncdu) which are usually limited
to viewing one directory at a time.<p>I created <i>leaves</i> to fill that gap.<p>Inspired by classic utilities like WinDirStat and KDirStat, it uses a
2-dimensional treemap^1 visualization to show the entire directory hierarchy
with proportionally sized rectangles.<p>It's performant enough to handle millions of files, thanks to Rust and
multi-threading. However, block characters aren't as suited as pixels for
resolving a large number of items. Leaves can show file-type summaries per
directory or partition the top-level directories by extension, allowing you to
see not only where space is being used, but also how.<p>For instance, I can see the largest chunk of my home directory is taken up by
uv caches for python and old Linux ISOs that I could easily re-download if
needed. Or in a particular container, +600MB is used by standard Rust
documentation and tutorials, and that it is the only location with HTML/JS files,
when only the libraries and build tools are needed (note to self: remember to
use the <i>minimal</i> profile next time).<p>^1: <a href="https://github.com/shundhammer/qdirstat/blob/master/doc/Treemap.md" rel="nofollow">https://github.com/shundhammer/qdirstat/blob/master/doc/Tree...</a>