The best Hacker News stories from Show from the past day

Go back

Latest posts:

Show HN: Interactive ECS Systems/Component Explorer for Cities: Skylines 2

Hello Hacker News! Long time reader but first time poster here...<p>Recently I've been diving into doing mods for Cities: Skylines 2, which been very interesting as it's one of the first games that is using ECS and that I also have a deep interest into. I've mainly used ECS via Bevy before, but this time it's Unity, but many things still work the same way.<p>In order to help myself and other modders to navigate the ECS Systems and Components from the decompiled code, I created this interactive D3 graph.<p>You can click on nodes to "navigate" to that system/component, and once you're zoomed in a particular System/Component, you get a sidebar with more details. Ctrl+click also removes nodes in case you want to temporarily filter something.<p>This is, in short, how it works:<p>1. A C# program extracts information from decompiled C# code: <a href="https://github.com/Captain-Of-Coit/cs2-ecs-explorer/blob/master/src/cli.cs">https://github.com/Captain-Of-Coit/cs2-ecs-explorer/blob/mas...</a><p>2. The program outputs that info as JSON: <a href="https://github.com/Captain-Of-Coit/cs2-ecs-explorer/blob/master/data/Systems.json">https://github.com/Captain-Of-Coit/cs2-ecs-explorer/blob/mas...</a><p>3. Render with D3.js: <a href="https://github.com/Captain-Of-Coit/cs2-ecs-explorer/blob/master/index.js">https://github.com/Captain-Of-Coit/cs2-ecs-explorer/blob/mas...</a><p>Basically it helps people to navigate the Systems and Components references for the game.<p>If you're feeling brave, you can also browse the full graph which has something like ~700 nodes and ~1200 links: <a href="https://captain-of-coit.github.io/cs2-ecs-explorer/" rel="nofollow noreferrer">https://captain-of-coit.github.io/cs2-ecs-explorer/</a> (it'll take a while to first load)<p>A big problem was to figure out how to make the D3 not too messy when there are large graphs, and I don't think I've succeeded very well with this, but everything I tried (link distance based on how many connections, clustering based on namespaces and so on) made it even worse.<p>Happy to hear what you think and what I could do better.

Show HN: Interactive ECS Systems/Component Explorer for Cities: Skylines 2

Hello Hacker News! Long time reader but first time poster here...<p>Recently I've been diving into doing mods for Cities: Skylines 2, which been very interesting as it's one of the first games that is using ECS and that I also have a deep interest into. I've mainly used ECS via Bevy before, but this time it's Unity, but many things still work the same way.<p>In order to help myself and other modders to navigate the ECS Systems and Components from the decompiled code, I created this interactive D3 graph.<p>You can click on nodes to "navigate" to that system/component, and once you're zoomed in a particular System/Component, you get a sidebar with more details. Ctrl+click also removes nodes in case you want to temporarily filter something.<p>This is, in short, how it works:<p>1. A C# program extracts information from decompiled C# code: <a href="https://github.com/Captain-Of-Coit/cs2-ecs-explorer/blob/master/src/cli.cs">https://github.com/Captain-Of-Coit/cs2-ecs-explorer/blob/mas...</a><p>2. The program outputs that info as JSON: <a href="https://github.com/Captain-Of-Coit/cs2-ecs-explorer/blob/master/data/Systems.json">https://github.com/Captain-Of-Coit/cs2-ecs-explorer/blob/mas...</a><p>3. Render with D3.js: <a href="https://github.com/Captain-Of-Coit/cs2-ecs-explorer/blob/master/index.js">https://github.com/Captain-Of-Coit/cs2-ecs-explorer/blob/mas...</a><p>Basically it helps people to navigate the Systems and Components references for the game.<p>If you're feeling brave, you can also browse the full graph which has something like ~700 nodes and ~1200 links: <a href="https://captain-of-coit.github.io/cs2-ecs-explorer/" rel="nofollow noreferrer">https://captain-of-coit.github.io/cs2-ecs-explorer/</a> (it'll take a while to first load)<p>A big problem was to figure out how to make the D3 not too messy when there are large graphs, and I don't think I've succeeded very well with this, but everything I tried (link distance based on how many connections, clustering based on namespaces and so on) made it even worse.<p>Happy to hear what you think and what I could do better.

Show HN: Wave – Modern Open-Source Terminal (macOS and Linux)

Hi HN, I’m Mike, the founder and creator of Wave, a cross-platform open-source terminal that supports inline rendering, modern UI, and persistent sessions. I love the command line; I’ve been using it for over 25 years, starting with a Linux box I made with spare parts in my college dorm room. But while other devtools have been modernized, the terminal has been stuck, with the same basic functionality for over 40-years.<p>What if your command line terminal could display more than just text? That’s crazy right (I can hear the screams of thousands of graybeard sysadmins). Not all the time, but maybe just when you want it to. Like displaying Markdown, Images, ChatGPT output, or CSVs (that you can copy from and paste directly into Excel). Or running a VSCode style editor inline in your terminal that has mouse support, copy/paste, indentation, and syntax highlighting support right out of the box for when you need to edit your remote .bashrc file.<p>That’s why I built Wave, to keep what’s best about the command line while adding the power of the open web. Wave has inline renderers for terminal content and remote files to help keep you in flow and reduce context switches. We have 5 initial plugins: remote file editor, markdown viewer, image viewer, CSV viewer, and a ChatGPT interface, with more coming soon. We’re proudly built on Electron (just like VSCode, Slack, and Discord) with all of the network code and heavy lifting done in a local Go backend. This enables us to deliver a consistent cross-platform experience and the ability to leverage high-quality web components for our UI and plugins.<p>Openness is a core part of our mission. Our code is open source (Apache 2.0), and our plugins are written in TypeScript/React. We don’t require an email, login, or payment to use our terminal (it is free as in speech and as in beer). We’re also proud to be shipping a Linux version of Wave alongside the MacOS version (with a Windows WSL port coming soon). Yes, we do plan on making money in the future, through opt-in team collaboration features. Basic rule of thumb is if it runs on your own computer with your own resources it will be free, if it hits our servers using our resources it will be paid.<p>But Wave isn’t just a simple renderer trick. We’ve been working on Wave for over a year and have over 1200 commits. We’re on a mission to improve terminal DevEx across the board and fix all sorts of terminal micro-frustrations. Wave manages your remote SSH connections, seamlessly restoring sessions, persisting sessions, and giving you a searchable contextual history of all the commands you’ve run, across all of your sessions and remote machines.<p>If you’re interested, please give it a try and give us a Star on Github to show your support for Open Source! Feedback, bugs, feature requests, and contributions are all welcome. Happy Hacking!<p><a href="https://www.waveterm.dev" rel="nofollow noreferrer">https://www.waveterm.dev</a> | <a href="https://github.com/wavetermdev/waveterm">https://github.com/wavetermdev/waveterm</a>

Show HN: Wave – Modern Open-Source Terminal (macOS and Linux)

Hi HN, I’m Mike, the founder and creator of Wave, a cross-platform open-source terminal that supports inline rendering, modern UI, and persistent sessions. I love the command line; I’ve been using it for over 25 years, starting with a Linux box I made with spare parts in my college dorm room. But while other devtools have been modernized, the terminal has been stuck, with the same basic functionality for over 40-years.<p>What if your command line terminal could display more than just text? That’s crazy right (I can hear the screams of thousands of graybeard sysadmins). Not all the time, but maybe just when you want it to. Like displaying Markdown, Images, ChatGPT output, or CSVs (that you can copy from and paste directly into Excel). Or running a VSCode style editor inline in your terminal that has mouse support, copy/paste, indentation, and syntax highlighting support right out of the box for when you need to edit your remote .bashrc file.<p>That’s why I built Wave, to keep what’s best about the command line while adding the power of the open web. Wave has inline renderers for terminal content and remote files to help keep you in flow and reduce context switches. We have 5 initial plugins: remote file editor, markdown viewer, image viewer, CSV viewer, and a ChatGPT interface, with more coming soon. We’re proudly built on Electron (just like VSCode, Slack, and Discord) with all of the network code and heavy lifting done in a local Go backend. This enables us to deliver a consistent cross-platform experience and the ability to leverage high-quality web components for our UI and plugins.<p>Openness is a core part of our mission. Our code is open source (Apache 2.0), and our plugins are written in TypeScript/React. We don’t require an email, login, or payment to use our terminal (it is free as in speech and as in beer). We’re also proud to be shipping a Linux version of Wave alongside the MacOS version (with a Windows WSL port coming soon). Yes, we do plan on making money in the future, through opt-in team collaboration features. Basic rule of thumb is if it runs on your own computer with your own resources it will be free, if it hits our servers using our resources it will be paid.<p>But Wave isn’t just a simple renderer trick. We’ve been working on Wave for over a year and have over 1200 commits. We’re on a mission to improve terminal DevEx across the board and fix all sorts of terminal micro-frustrations. Wave manages your remote SSH connections, seamlessly restoring sessions, persisting sessions, and giving you a searchable contextual history of all the commands you’ve run, across all of your sessions and remote machines.<p>If you’re interested, please give it a try and give us a Star on Github to show your support for Open Source! Feedback, bugs, feature requests, and contributions are all welcome. Happy Hacking!<p><a href="https://www.waveterm.dev" rel="nofollow noreferrer">https://www.waveterm.dev</a> | <a href="https://github.com/wavetermdev/waveterm">https://github.com/wavetermdev/waveterm</a>

Show HN: Paradict – Streamable multi-format serialization with schema

Hi HN ! I'm Alex, a tech enthusiast. I'm excited to show you Paradict (<a href="https://github.com/pyrustic/paradict">https://github.com/pyrustic/paradict</a>), my solution for streamable multi-format serialization.<p>Although JSON, YAML, and TOML are all human-readable, they serve different purposes. For example, TOML is specifically designed for configuration files while JSON is used as a data interchange format.<p>Sometimes an initiative to create a binary version of JSON arises and as far as I know, it ends with an unidirectional mapping of datatypes.<p>There is no silver bullet, yet one coherent solution built from scratch that addresses multi-format (binary and textual) serialization and configuration files would be a step forward.<p>Earlier this year, I accidentally designed a textual data format to represent complex data structures inside a document divided into sections. The project, namely Jesth (Just Extract Sections Then Hack'em), generated an interesting discussion on HN (<a href="https://news.ycombinator.com/item?id=35991018">https://news.ycombinator.com/item?id=35991018</a>).<p>Out of curiosity, I ran some benchmarks using Jesth, JSON and MessagePack, with and without Gzip compression against a large JSON file downloaded from the web. The benchmarking gave me insights that led to the decision to evolve Jesth's ideas into a new multi-format serialization solution.<p>I designed and built Paradict from scratch to serialize and deserialize a dictionary data structure. Although Paradict's root data structure is a dictionary, lists, sets, and dictionaries can be nested within it at arbitrary depth.<p>A Paradict dictionary can be populated with strings, binary data, integers, floats, complex numbers, booleans, dates, times, datetimes, comments, extension objects, and grids (matrices). There is also a schema-based validation mechanism that can contain programmatic checkers.<p>The binary serialization format is designed with compactness in mind such as Pi with its first two decimal places, the Golden ratio with its first two decimal places, and the date of the funeral of Pope Benedict XVI would each be encoded on two bytes (not counting their respective 1-byte tag which starts each Paradict binary datum).<p>This binary format has two levels of granularity for continuous data stream processing: a datum at the low level, which is in some cases a 2-tuple composed of a tag and its payload, and the message at the high level which is a dictionary data structure.<p>The textual serialization format has two modes: data and config modes. Config mode implicitly treats dictionary keys as strings, removing the need to surround them with quotes, and unlike the colon (:) between a key-value pair in data mode, it uses the equal sign (=) as separator.<p>This textual format has two levels of granularity for continuous data stream processing: a single line of text at the low level and the message at the high level which is a dictionary data structure.<p>Here is a valid Paradict configuration document that contains a "user" section:<p><pre><code> [user] # no comment id = 42 name = 'alex' birthday = 2042-12-25T16:20:59Z photo = (bin) 54 68 69 73 20 69 73 20 6E 6F 74 20 61 20 70 68 6F 74 6F 67 72 61 70 68 weight_matrix = (grid) 1 0 1 0 0 1 0 1 1 0 1 0 books = (dict) romance = (list) 'Happy Place' 'Romantic Comedy' sci_fi = (list) 'Dune' 'Neuromancer' epitaph = (text) According to the law of conservation of energy, no a bit of you is gone; you are just less orderly. --- </code></pre> Under the hood, Paradict uses Braq (<a href="https://github.com/pyrustic/braq">https://github.com/pyrustic/braq</a>), the most obvious way to section a document (as shown just above), and Ustrid (<a href="https://github.com/pyrustic/ustrid">https://github.com/pyrustic/ustrid</a>), to uniquely generate string identifiers.<p>Paradict is available on PyPI and you can learn more by reading its README, browsing the source code or playing with its tests.<p>Let me know what you think about all this !

Show HN: Paradict – Streamable multi-format serialization with schema

Hi HN ! I'm Alex, a tech enthusiast. I'm excited to show you Paradict (<a href="https://github.com/pyrustic/paradict">https://github.com/pyrustic/paradict</a>), my solution for streamable multi-format serialization.<p>Although JSON, YAML, and TOML are all human-readable, they serve different purposes. For example, TOML is specifically designed for configuration files while JSON is used as a data interchange format.<p>Sometimes an initiative to create a binary version of JSON arises and as far as I know, it ends with an unidirectional mapping of datatypes.<p>There is no silver bullet, yet one coherent solution built from scratch that addresses multi-format (binary and textual) serialization and configuration files would be a step forward.<p>Earlier this year, I accidentally designed a textual data format to represent complex data structures inside a document divided into sections. The project, namely Jesth (Just Extract Sections Then Hack'em), generated an interesting discussion on HN (<a href="https://news.ycombinator.com/item?id=35991018">https://news.ycombinator.com/item?id=35991018</a>).<p>Out of curiosity, I ran some benchmarks using Jesth, JSON and MessagePack, with and without Gzip compression against a large JSON file downloaded from the web. The benchmarking gave me insights that led to the decision to evolve Jesth's ideas into a new multi-format serialization solution.<p>I designed and built Paradict from scratch to serialize and deserialize a dictionary data structure. Although Paradict's root data structure is a dictionary, lists, sets, and dictionaries can be nested within it at arbitrary depth.<p>A Paradict dictionary can be populated with strings, binary data, integers, floats, complex numbers, booleans, dates, times, datetimes, comments, extension objects, and grids (matrices). There is also a schema-based validation mechanism that can contain programmatic checkers.<p>The binary serialization format is designed with compactness in mind such as Pi with its first two decimal places, the Golden ratio with its first two decimal places, and the date of the funeral of Pope Benedict XVI would each be encoded on two bytes (not counting their respective 1-byte tag which starts each Paradict binary datum).<p>This binary format has two levels of granularity for continuous data stream processing: a datum at the low level, which is in some cases a 2-tuple composed of a tag and its payload, and the message at the high level which is a dictionary data structure.<p>The textual serialization format has two modes: data and config modes. Config mode implicitly treats dictionary keys as strings, removing the need to surround them with quotes, and unlike the colon (:) between a key-value pair in data mode, it uses the equal sign (=) as separator.<p>This textual format has two levels of granularity for continuous data stream processing: a single line of text at the low level and the message at the high level which is a dictionary data structure.<p>Here is a valid Paradict configuration document that contains a "user" section:<p><pre><code> [user] # no comment id = 42 name = 'alex' birthday = 2042-12-25T16:20:59Z photo = (bin) 54 68 69 73 20 69 73 20 6E 6F 74 20 61 20 70 68 6F 74 6F 67 72 61 70 68 weight_matrix = (grid) 1 0 1 0 0 1 0 1 1 0 1 0 books = (dict) romance = (list) 'Happy Place' 'Romantic Comedy' sci_fi = (list) 'Dune' 'Neuromancer' epitaph = (text) According to the law of conservation of energy, no a bit of you is gone; you are just less orderly. --- </code></pre> Under the hood, Paradict uses Braq (<a href="https://github.com/pyrustic/braq">https://github.com/pyrustic/braq</a>), the most obvious way to section a document (as shown just above), and Ustrid (<a href="https://github.com/pyrustic/ustrid">https://github.com/pyrustic/ustrid</a>), to uniquely generate string identifiers.<p>Paradict is available on PyPI and you can learn more by reading its README, browsing the source code or playing with its tests.<p>Let me know what you think about all this !

Show HN: SPF Deconstructor in Rust

This is rust library for deconstructing SPF DNS records. Written ha a project to learn some of the basics of rust.

Show HN: SPF Deconstructor in Rust

This is rust library for deconstructing SPF DNS records. Written ha a project to learn some of the basics of rust.

Show HN: Turn Kafka into an MQTT Broker for IoT with Zilla

Show HN: Turn Kafka into an MQTT Broker for IoT with Zilla

Show HN: Microagents: Agents capable of self-editing their prompts / Python code

Show HN: Microagents: Agents capable of self-editing their prompts / Python code

Show HN: Microagents: Agents capable of self-editing their prompts / Python code

Show HN: A free text-to-image website that supports SDXL Turbo

The homepage of the website allows for free image generation, and in the workflows, there are introductions to nodes related to ComfyUI. In the AI tools section, Pixart-Alpha is currently available for free use. I am still updating this website, and feedback and communication are welcome.

Show HN: WebGPU Particles Simulation

This is a small particles simulation that can run either with WebGPU (GPU Compute) or with the CPU, and it can be changed in real time

Show HN: WebGPU Particles Simulation

This is a small particles simulation that can run either with WebGPU (GPU Compute) or with the CPU, and it can be changed in real time

Show HN: Made a forum for depressed founders to confide

Show HN: NowDo – MacOS todo app for procrastinators

Show HN: NowDo – MacOS todo app for procrastinators

Show HN: Get any piece of Google Earth as a single normalized glTF 3D model

Google released an API in May to get fetch 3D Tiles of anywhere on Earth. Using this in standard 3D engines like Blender is tricky because (1) the tiles are in a geographic coordinate system (2) you get a lot of little tiles at varying quality levels<p>I wanted to simplify this so all you need to do is get an API key, select a map region and a zoom level, and get one combined glTF file that you can throw into any engine. Especially if you're just prototyping and want to see how this data looks in your engine before investing in figuring out all the nuances of the API & coordinate system.<p>(Note that the API prohibits offline use, as in you can't distribute a processed glTF file like this. But you can do this preprocessing in memory whenever you're fetching tiles).

< 1 2 3 ... 291 292 293 294 295 ... 841 842 843 >