The best Hacker News stories from Show from the past week
Latest posts:
Show HN: Slow Social, a social network built for friends, not influencers
Show HN: Slow Social, a social network built for friends, not influencers
Show HN: I made a website to search for half loaves of bread
Show HN: Monocle – bidirectional code generation library
I just published a bidirectional code generation library. Afaik it's the first of its kind, and it opens up a lot of possibilities for cool new types of dev tools. The PoC is for ruby, but the concept is very portable. <a href="https://blog.luitjes.it/posts/monocle-bidirectional-code-generation/" rel="nofollow">https://blog.luitjes.it/posts/monocle-bidirectional-code-gen...</a>
Show HN: Discover the IndieWeb, one blog post at a time
Inspired by the "Ask HN: Share your personal site" last week, I finally came around and built a thing I wanted for a long time: a simple website to randomly explore all the awesome personal blogs without having to subscribe to them all.<p>So this is what I built over the weekend. You click a button and indieblog.page will redirect you to a random page from a personal page...<p>I'm happy to answer any questions you might have.
Show HN: How to compile C/C++ for WASM, pure Clang, no libs, no framework
A little help for programmers, who wants to run C/C++ code in the browser.<p>(This is my second attempt to show it, first time I got banned bcoz of my personal page domain, I don't really understand it why is is suspicious.)
Show HN: Multiplayer Demo Built with Elixir
Hey HN, I’m an engineer at Supabase [0] and one of the creators of this demo. My team and I have been working hard to bring developers the next version of Supabase Realtime.<p>The current version of Realtime [1] is a Change Data Capture (CDC) server for a PostgreSQL database that broadcasts changes via WebSockets to authorized subscribers. It’s written in Elixir/Phoenix.<p>The server utilizes PostgreSQL’s logical replication functionality, which writes database changes to Write-Ahead Logging (WAL) segment files, and a replication slot, responsible for managing and retaining WAL files.<p>Database changes are polled from WAL by the server using PostgreSQL’s replication function pg_logical_slot_get_changes and changes converted to JSON objects using the wal2json [2] extension by setting it as the output plugin.<p>Security is enforced through two checks - each check ensures only authorized client subscribers are sent database changes. The first check validates a JWT that is sent by clients subscribing to database changes. This JWT must contain an existing database role and optional claims, both of which can be referenced in Row Level Security (RLS) policies. Every valid client subscription is then inserted into the realtime.subscription table with an assigned UUID, database role, and claims. The second check calls the realtime.apply_rls SQL function from Write Ahead Log Realtime Unified Security (WALRUS) utility lib [3]. This function takes the database changes, executes a prepared statement to verify if the database role and claims have SELECT permissions on the changes, and outputs an array of authorized UUIDs. Then, the server finds all the subscribers whose UUIDs are in that array and broadcasts the changes to them.<p>The next version of Supabase Realtime will offer three features: Broadcast, Presence, and Extensions.<p>Broadcast, our Pub/Sub offering, can be used to pass ephemeral data from client to client such as cursor movements. This runs on a distributed cluster of nodes built on top of Phoenix PubSub + Channels.<p>Presence, can be used for tracking online/offline users and their state. This is built into Phoenix, and uses replicated state across a cluster using an Observe-Remove-Set-Without-Tombstones (ORSWOT) CRDT [4] which prefers adds over removes when resolving conflicts.<p>Extensions, are a way for the community to add additional functionality to take advantage of the WebSocket infrastructure. We have converted the existing Change Data Capture system to an extension that supports connecting to multiple customer databases (multi-tenancy). Other possible extensions include listening to other databases like MySQL and getting stock market events server-side [5], then broadcasting them to connected clients.<p>This demo is built using a Supabase project, Supabase Realtime, and Next.js and deployed on 20 Fly [6] nodes located around the world. You can find an introduction and walkthrough of the demo here [5].<p>Supabase Realtime is entirely open source and you can find the demo code here [7]. Once we have stabilized the release we will add it to the self-hosted offering [8]. This demo is a way to highlight the upcoming features and gather feedback/ideas.<p>Feel free to ask me anything and let me know what you think!<p>[0] <a href="https://supabase.com" rel="nofollow">https://supabase.com</a><p>[1] <a href="https://github.com/supabase/realtime" rel="nofollow">https://github.com/supabase/realtime</a><p>[2] <a href="https://github.com/eulerto/wal2json" rel="nofollow">https://github.com/eulerto/wal2json</a><p>[3] <a href="https://github.com/supabase/walrus" rel="nofollow">https://github.com/supabase/walrus</a><p>[4] <a href="https://gsd.di.uminho.pt/members/cbm/ps/delta-crdt-draft16may2014.pdf" rel="nofollow">https://gsd.di.uminho.pt/members/cbm/ps/delta-crdt-draft16ma...</a><p>[5] <a href="https://supabase.com/blog/2022/04/01/supabase-realtime-with-multiplayer-features" rel="nofollow">https://supabase.com/blog/2022/04/01/supabase-realtime-with-...</a><p>[6] <a href="https://fly.io" rel="nofollow">https://fly.io</a><p>[7] <a href="https://github.com/supabase/realtime/tree/multiplayer" rel="nofollow">https://github.com/supabase/realtime/tree/multiplayer</a><p>[8] <a href="https://github.com/supabase/supabase/tree/master/docker" rel="nofollow">https://github.com/supabase/supabase/tree/master/docker</a>
Show HN: I made a website for you to travel the world in first-person POV
Show HN: Zaplib – Speed up your webapp with Rust+Wasm
Show HN: I made a puzzle game in HTML5
Show HN: I made a puzzle game in HTML5
Show HN: Redditle.com – For those of us who add 'Reddit' to every Google search
Show HN: Redditle.com – For those of us who add 'Reddit' to every Google search
Show HN: HomeSheet – easy-to-use home inventory software
Hi HN!<p>I've spent the last few months building HomeSheet - The all in one tool to track your personal assets. I built HomeSheet to make organizing and documenting my belongings a breeze. I've always wanted to put together a home inventory to protect myself in the event of a disaster, but I never found a solution that I liked.<p>Right now HomeSheet is in early access, and I'm still working on determining what additional features users would like. I'll be around in the comments if you have any feedback, questions, or just want to say hi!
Show HN: Datagridxl2.js – Fast Excel-like data table library
I'm Robbert, the creator of DataGridXL.js. Last month I released version 2 which includes many new features.<p>DataGridXL is a free (and commercial) editable data table library written in ES6.<p>My goal is to develop the most performant & user-friendly spreadsheet-like data table out there:<p>- It has zero dependencies. You don’t need any framework to use DataGridXL.
- It is lightweight (~250kb) and easy to use. It does not even require messing with CSS.
- It has its own Virtual DOM implementation to prevent DOM errors.
- Developer friendly. Supports all modern web browsers<p>Please take a look at the performance demo (<a href="https://www.datagridxl.com/demos/one-million-cells" rel="nofollow">https://www.datagridxl.com/demos/one-million-cells</a>) to see the difference with other data grids out there. And let us know if you have any suggestions.<p>Please let me know if you have any suggestions or comments!
Show HN: Warp, a Rust-based terminal
Hi HN community,<p>I’m Zach, founder and CEO of Warp, and am excited to show you Warp, a fast Rust-based terminal that’s easy to use and built for teams. As of today, Warp is in public beta and any Mac user can download it. It works with bash, zsh, and fish.<p>The terminal’s teletype-like interface has made it hard for the CLI to thrive. After 20 years of programming, I still find it hard to copy a command’s output; I always forget how to use `tar`; and I always have to relearn how to move my cursor. To fix fundamental accessibility issues, I believe we need to start innovating on the terminal, and keep pushing further into the world of shells, ultimately ending up with a better integrated experience.<p>At Warp we are building a Rust-based terminal that keeps what’s best about the CLI while modernizing the experience. We’ve built<p>1) An input area that works just like a code editor: selections, cursor positioning and completion menus
2) Grouped commands and outputs: so you can easily copy, search, and share terminal outputs
3) AI-powered Command Generation and Community-sourced Workflows [0]: so you can find useful commands without leaving the terminal
4) The ability to share your outputs with teammates: no more pasting long unformatted code into Slack
5) Project Workflows: save your team’s common commands into your project so your teammates can run them from Warp
See a demo here: [1]<p>We built Warp in Rust with GPU-accelerated graphics, and along the way we built our own UI framework, a text editor that’s a CRDT, and an out-of-the-box theming system. You can learn more here [2]. Huge thanks to our early collaborators: Atom co-founder Nathan Sobo, Nushell co-founder Andres Robalino, and Fish shell lead developer Peter Ammon.<p>We are planning to first open-source our Rust UI framework, and then parts and potentially all of our client. As of now, the community has already been contributing new themes [3]. And we’ve just opened a repository for the community to contribute common useful commands. [4]<p>Our business model is to make the terminal so useful for individuals that their companies will want to pay for the team features. We will never sell your data.<p>We are calling today’s release a “beta” because we know there are still some issues to smooth out. You will notice that a log-in is required and that we do collect usage data and crash reports. We do so to enable team features and also to keep improving the product. Post-beta, we will allow users to opt out of usage data. You can see our privacy policy here [5].<p>While it is a “beta”, we are confident that even today the experience is meaningfully better than in other terminals. If you use a Mac, please give it a shot at warp.dev and let us know how it goes. Otherwise, sign up here [6] to be notified when Warp is ready for your platform.<p>Join our community on Discord [7] and follow us on Twitter [8]<p>Let me know what you think! Ask me anything!<p>[0] <a href="https://docs.warp.dev/features/workflows" rel="nofollow">https://docs.warp.dev/features/workflows</a>
[1] <a href="https://youtu.be/X0LzWAVlOC0" rel="nofollow">https://youtu.be/X0LzWAVlOC0</a>
[2] <a href="https://blog.warp.dev/how-warp-works/" rel="nofollow">https://blog.warp.dev/how-warp-works/</a>
[3] <a href="https://github.com/warpdotdev/themes" rel="nofollow">https://github.com/warpdotdev/themes</a>
[4] <a href="https://github.com/warpdotdev/workflows" rel="nofollow">https://github.com/warpdotdev/workflows</a>
[5] <a href="https://warp.dev/privacy" rel="nofollow">https://warp.dev/privacy</a>
[6] <a href="https://github.com/warpdotdev/warp/issues/120" rel="nofollow">https://github.com/warpdotdev/warp/issues/120</a> and <a href="https://github.com/warpdotdev/Warp/issues/204" rel="nofollow">https://github.com/warpdotdev/Warp/issues/204</a>
[7] warp.dev/discord
[8] twitter.com/warpdotdev
Show HN: I gamified a habit tracker to fight procrastination
Show HN: A tiny solar-powered server only awake during the day
Solar Witch is a little webpage and server which receives and displays messages, so I suppose it's a tiny message board. It's coded in very dubious Arduino C.<p>It's not a 24/7 website. Depending on the state of the battery, the server itself might run all night, but all the messages it receives during the day are deleted at sunset, and the messaging function itself is only active between sunrise and sunset. This is for two reasons:<p>1. Less usage of Solar Witch during the night conserves battery power.<p>2. I like the idea of websites which _aren't_ constantly available. Websites which have to sleep too. Websites living on servers which aren't somewhere in the cloud, but which are bound to a particular location, giving you a sense of where in the world they actually live.<p>Solar Witch is very much inspired by the solar-powered version of Low Tech Magazine (<a href="https://solar.lowtechmagazine.com/" rel="nofollow">https://solar.lowtechmagazine.com/</a>) and the not-always-online chatroom Gossips Cafe (<a href="https://gossips.cafe/" rel="nofollow">https://gossips.cafe/</a>), but at a far, far smaller scale.<p>PSA: Solar Witch is a teensy hand-written C server running on a teensy microcontroller attached to a teensy solar panel which can only handle one HTTP request at a time and may have buffer overrun issues due to my ineptitude with C. If it's gone down, please don't be surprised, and rest assured I'll hit the reset button soon! Solar Witch encourages patience.
Show HN: A tiny solar-powered server only awake during the day
Solar Witch is a little webpage and server which receives and displays messages, so I suppose it's a tiny message board. It's coded in very dubious Arduino C.<p>It's not a 24/7 website. Depending on the state of the battery, the server itself might run all night, but all the messages it receives during the day are deleted at sunset, and the messaging function itself is only active between sunrise and sunset. This is for two reasons:<p>1. Less usage of Solar Witch during the night conserves battery power.<p>2. I like the idea of websites which _aren't_ constantly available. Websites which have to sleep too. Websites living on servers which aren't somewhere in the cloud, but which are bound to a particular location, giving you a sense of where in the world they actually live.<p>Solar Witch is very much inspired by the solar-powered version of Low Tech Magazine (<a href="https://solar.lowtechmagazine.com/" rel="nofollow">https://solar.lowtechmagazine.com/</a>) and the not-always-online chatroom Gossips Cafe (<a href="https://gossips.cafe/" rel="nofollow">https://gossips.cafe/</a>), but at a far, far smaller scale.<p>PSA: Solar Witch is a teensy hand-written C server running on a teensy microcontroller attached to a teensy solar panel which can only handle one HTTP request at a time and may have buffer overrun issues due to my ineptitude with C. If it's gone down, please don't be surprised, and rest assured I'll hit the reset button soon! Solar Witch encourages patience.
Show HN: Visualize your day as 144 rectangles