The best Hacker News stories from Show from the past week
Latest posts:
Show HN: Muse 2.0 with local-first sync
Hey HN, I want to share with you something I and my four colleagues have been working on for the last several years. It’s a whiteboarding and notes tool called Muse[1]. We just released a 2.0 version which includes local-first sync.<p>A little backstory: I’m one of the authors of the 2019 essay Local-first software[2]. (Past HN discussions[3][4].) The thesis is to reclaim some of the ownership over our data that we’ve lost in the transition from filesystems to cloud/SaaS. So I’m excited to bring CRDT technology “out of the lab” and into a commercial product as a chance to prove the value of local-first in real-world usage.<p>As a developer and computing enthusiast, I care about abstract ideas like data ownership. But for most users I think the benefits of local-first will surface in how it feels to use the software day-to-day. One example is ability to work offline or in unstable network conditions: any changes between devices will be automatically merged when you reconnect to the network, no matter how long you’ve been disconnected.<p>Another area is performance. The sync backend was written by my colleague Mark McGranaghan who has written extensively about software performance[5][6] and why we think the cloud will never be fast enough to make truly responsive software.<p>A few technical details:<p>– Client-side CRDT written in Swift, streaming sync server written in Go<p>– Sync server is generic, doesn’t have any knowledge of the Muse app domain (cards, boards, ink, etc). Just shuffles data between devices<p>– Transactional, blob, and ephemeral data are all managed by this one single state system. For example ephemeral data (someone wiggling a card around) for example, isn’t even transmitted if there are no other clients listening in realtime.<p>More in this Metamuse podcast episode.[7]<p>We draw heavily on research from people like Martin Kleppmann, Peter van Hardenberg[8], and many others. A huge thank you to this wonderful research community.<p>Even if you have no interest in the Muse concept of a digital thinking workspace, I’d encourage you to try the free version just to see how local-first sync feels in practice. My opinion is that is fundamentally different from web/cloud software is well as from classic file-based software—and an improvement on both. Would love to hear what you think.<p>[1]: <a href="https://museapp.com/" rel="nofollow">https://museapp.com/</a><p>[2]: <a href="https://www.inkandswitch.com/local-first/" rel="nofollow">https://www.inkandswitch.com/local-first/</a><p>[3]: <a href="https://news.ycombinator.com/item?id=19804478" rel="nofollow">https://news.ycombinator.com/item?id=19804478</a><p>[4]: <a href="https://news.ycombinator.com/item?id=21581444" rel="nofollow">https://news.ycombinator.com/item?id=21581444</a><p>[5]: <a href="https://www.inkandswitch.com/slow-software/" rel="nofollow">https://www.inkandswitch.com/slow-software/</a><p>[6]: <a href="https://news.ycombinator.com/item?id=18506170" rel="nofollow">https://news.ycombinator.com/item?id=18506170</a><p>[7]: <a href="https://museapp.com/podcast/56-sync/" rel="nofollow">https://museapp.com/podcast/56-sync/</a><p>[8]: <a href="https://www.inkandswitch.com/pushpin/" rel="nofollow">https://www.inkandswitch.com/pushpin/</a>
Show HN: Muse 2.0 with local-first sync
Hey HN, I want to share with you something I and my four colleagues have been working on for the last several years. It’s a whiteboarding and notes tool called Muse[1]. We just released a 2.0 version which includes local-first sync.<p>A little backstory: I’m one of the authors of the 2019 essay Local-first software[2]. (Past HN discussions[3][4].) The thesis is to reclaim some of the ownership over our data that we’ve lost in the transition from filesystems to cloud/SaaS. So I’m excited to bring CRDT technology “out of the lab” and into a commercial product as a chance to prove the value of local-first in real-world usage.<p>As a developer and computing enthusiast, I care about abstract ideas like data ownership. But for most users I think the benefits of local-first will surface in how it feels to use the software day-to-day. One example is ability to work offline or in unstable network conditions: any changes between devices will be automatically merged when you reconnect to the network, no matter how long you’ve been disconnected.<p>Another area is performance. The sync backend was written by my colleague Mark McGranaghan who has written extensively about software performance[5][6] and why we think the cloud will never be fast enough to make truly responsive software.<p>A few technical details:<p>– Client-side CRDT written in Swift, streaming sync server written in Go<p>– Sync server is generic, doesn’t have any knowledge of the Muse app domain (cards, boards, ink, etc). Just shuffles data between devices<p>– Transactional, blob, and ephemeral data are all managed by this one single state system. For example ephemeral data (someone wiggling a card around) for example, isn’t even transmitted if there are no other clients listening in realtime.<p>More in this Metamuse podcast episode.[7]<p>We draw heavily on research from people like Martin Kleppmann, Peter van Hardenberg[8], and many others. A huge thank you to this wonderful research community.<p>Even if you have no interest in the Muse concept of a digital thinking workspace, I’d encourage you to try the free version just to see how local-first sync feels in practice. My opinion is that is fundamentally different from web/cloud software is well as from classic file-based software—and an improvement on both. Would love to hear what you think.<p>[1]: <a href="https://museapp.com/" rel="nofollow">https://museapp.com/</a><p>[2]: <a href="https://www.inkandswitch.com/local-first/" rel="nofollow">https://www.inkandswitch.com/local-first/</a><p>[3]: <a href="https://news.ycombinator.com/item?id=19804478" rel="nofollow">https://news.ycombinator.com/item?id=19804478</a><p>[4]: <a href="https://news.ycombinator.com/item?id=21581444" rel="nofollow">https://news.ycombinator.com/item?id=21581444</a><p>[5]: <a href="https://www.inkandswitch.com/slow-software/" rel="nofollow">https://www.inkandswitch.com/slow-software/</a><p>[6]: <a href="https://news.ycombinator.com/item?id=18506170" rel="nofollow">https://news.ycombinator.com/item?id=18506170</a><p>[7]: <a href="https://museapp.com/podcast/56-sync/" rel="nofollow">https://museapp.com/podcast/56-sync/</a><p>[8]: <a href="https://www.inkandswitch.com/pushpin/" rel="nofollow">https://www.inkandswitch.com/pushpin/</a>
Show HN: VideoMentions – Search YouTube based on the spoken words in videos
Show HN: VideoMentions – Search YouTube based on the spoken words in videos
Show HN: IndigoStack – a new native macOS app for local web development
Hi HN,<p>I'm opening up the beta for IndigoStack. It's a native macOS app which provides a fresh take on how to run all the services you need for local web development. I've been building it for myself as a Laravel & Drupal developer and I'm now looking to get some beta testers on board!<p>Check it out, and don't forget to sign up to the forums to give us your feedback!<p><a href="https://indigostack.app" rel="nofollow">https://indigostack.app</a><p>My motivation:<p>Like many developers I've developed a love-hate relationship with the existing options for local development on a Mac. If they're virtualised, you'll often get...<p>* high CPU usage
* high RAM usage
* poor filesystem performance / syncing
* command line and configuration complexity<p>And existing native solutions tend to be either too simplistic, or command line-based or both.<p>So I've built IndigoStack with everything I liked and wanted, running everything natively on your Mac:<p>* services are all native & fast
* services are standalone; macOS updates won't ruin your setup
* able to run multiple services (eg PHPs) simultaneously
* easily build / start / stop / rebuild your stacks in the GUI
* run multiple projects which don't interfere with each other
* config-in-code; quickly and easily share stacks within a team
Show HN: IndigoStack – a new native macOS app for local web development
Hi HN,<p>I'm opening up the beta for IndigoStack. It's a native macOS app which provides a fresh take on how to run all the services you need for local web development. I've been building it for myself as a Laravel & Drupal developer and I'm now looking to get some beta testers on board!<p>Check it out, and don't forget to sign up to the forums to give us your feedback!<p><a href="https://indigostack.app" rel="nofollow">https://indigostack.app</a><p>My motivation:<p>Like many developers I've developed a love-hate relationship with the existing options for local development on a Mac. If they're virtualised, you'll often get...<p>* high CPU usage
* high RAM usage
* poor filesystem performance / syncing
* command line and configuration complexity<p>And existing native solutions tend to be either too simplistic, or command line-based or both.<p>So I've built IndigoStack with everything I liked and wanted, running everything natively on your Mac:<p>* services are all native & fast
* services are standalone; macOS updates won't ruin your setup
* able to run multiple services (eg PHPs) simultaneously
* easily build / start / stop / rebuild your stacks in the GUI
* run multiple projects which don't interfere with each other
* config-in-code; quickly and easily share stacks within a team
Show HN: Little Procedural Pixel Worlds
Took a break from the falling sand simulation blog posts this week to work on another small project. It's a little pixel world generator- each time you visit, you'll see a new little world. I really like this stuff and had a blast building it yesterday!
Show HN: Little Procedural Pixel Worlds
Took a break from the falling sand simulation blog posts this week to work on another small project. It's a little pixel world generator- each time you visit, you'll see a new little world. I really like this stuff and had a blast building it yesterday!
Automatic supercuts on the command line with Videogrep
Show HN: Remult – a CRUD framework for full-stack TypeScript
Show HN: WebApp to Create 3D Plants
Show HN: WebApp to Create 3D Plants
HelloInbox – Ultimate email deliverability checklist and toolkit
120k SVG logos, also available in PNG format
Show HN: Natural Language Processing Demystified (Part One)
Hi HN:<p>I published part one of my free NLP course. The course is intended to help anyone who knows Python and a bit of math go from the very basics all the way to today's mainstream models and frameworks.<p>I strive to balance theory and practice and so every module consists of detailed explanations and slides along with a Colab notebook (in most modules) putting the theory into practice.<p>In part one, we cover text preprocessing, how to turn text into numbers, and multiple ways to classify and search text using "classical" approaches. And along the way, we'll pick up useful bits on how to use tools such as spaCy and scikit-learn.<p>No registration required: <a href="https://www.nlpdemystified.org/" rel="nofollow">https://www.nlpdemystified.org/</a>
Show HN: Open-source Firebase Alternative? It's here
Show HN: AI generated Magic The Gathering cards
Show HN: Bike – macOS Native Outliner
Bike’s most original feature is the “fluid” text editing. Lots of text editors have animated some interactions (cursor movement, insert newline, etc), but I think Bike is the first designed from the ground up to support fluid editing.<p>Give it a try, it feels different. (movie on home page if you don't have Mac)<p>Other Features:<p>• In text mode Bike works like a normal text editor. In outline mode rows are constrained to outline hierarchy.<p>• .bike file format is HTML subset, so files are easy to parse and manipulate. Bike also supports .opml and .txt.<p>• Scriptable via AppleScript. Javascript plugin API also expected in future, though no timing on that.<p>• Architecture needed to support fluid editing also makes Bike faster/more scalable than most (all?) outliners and many text editors. I test performance using the Moby Dick Workout[^1].<p>Implementation Notes:<p>• View is built using CALayers[^2].<p>• Animations are performed by Core animation and Motion[^3] lib.<p>• View performance is determined by visible text, not document size.<p>Model representation is interesting in that it’s just a flat list of rows. Each row has a `level` property, outline structure is determined dynamically. View implementation requires that each row has a unique ID.<p>I’m using OrderedDictionary from Swift Collections[^4] to store rows. This is Bike’s performance bottleneck for large outlines. Eventually I may change to augmented b+tree and then should be able to work with gigabytes worth of outline. That will be fun, but not sure it’s actually needed. Already probably fast enough for 99% of use cases as is.<p>Hope you find Bike interesting. I’m happy to answer any questions.<p>[^1]: <a href="https://www.hogbaysoftware.com/posts/moby-dick-workout/" rel="nofollow">https://www.hogbaysoftware.com/posts/moby-dick-workout/</a><p>[^2]: <a href="https://developer.apple.com/documentation/quartzcore/calayer" rel="nofollow">https://developer.apple.com/documentation/quartzcore/calayer</a><p>[^3]: <a href="https://github.com/b3ll/Motion" rel="nofollow">https://github.com/b3ll/Motion</a><p>[^4]: <a href="https://github.com/apple/swift-collections" rel="nofollow">https://github.com/apple/swift-collections</a>
Show HN: Fruits – Sell digital products via your website, newsletter, etc
Hi HN!<p>Whilst trying to build an online community for content creators, we failed!
Taking the learnings and stripping down our product to a true MVP, we now started working on "fruits", which allows creators to sell files such as ebooks, designs, checklists, music and online coachings online in less than two minutes.<p><a href="https://fruits.de/en" rel="nofollow">https://fruits.de/en</a><p>It works as simple as this:<p>1. upload a file at "fruits" & set a price
2. you will receive your individual fruits-sales-link
3. share the link wherever your customers are (e.g. website, newsletter, social media)<p>In addition, we also take care of the tedious office work such as invoicing and VAT collection for you, and this is completely automated.<p>What do you think? We are looking forward to your feedback!
Show HN: A Full-Stack Web Framework for Go
Hey HN! I want to share my side project with you. It's called Bud and it's a full-stack web framework for Go.<p>I created a short video to show you how to create a minimal Hacker News clone with Bud: <a href="https://www.youtube.com/watch?v=LoypcRqn-xA" rel="nofollow">https://www.youtube.com/watch?v=LoypcRqn-xA</a>.<p>The framework is free, open source and MIT Licensed. You can find it on Github: <a href="https://github.com/livebud/bud" rel="nofollow">https://github.com/livebud/bud</a>.<p>I started working on Bud 2 years ago after watching the introductory Laracast videos about the Laravel web framework. I was just blown away by how productive you can be in Laravel. However, like many of you, I've been so spoiled by Go. I didn't want to go back to writing PHP, so I decided to try creating Laravel for the Go ecosystem.<p>At this point, I just had the following goal:<p>• Be as productive as Laravel in a typed language like Go.<p>I got the first version working in 6 months and tried building a blog from it... It fell flat. You needed to scaffold all these files just to get started. If you're coming from Rails or Laravel you may shrug, this is pretty normal. Unfortunately, I've also been spoiled by the renaissance in frontend frameworks like Next.js. What I love about Next is that it starts out barebones and every file you add incrementally enhances your web application. This keeps the initial complexity under control.<p>With these newly discovered constraints, I started working on the next iteration. Bud should:<p>• Generate files only as you need them. Keep these generated files away from your application code and give developers the choice to keep them out of source control.<p>• Feel like using a modern JS framework. This means it should work with modern frontend frameworks like Svelte and React, support live reload and have server-side rendering for better performance and SEO.<p>With these new goals, the Bud you see today started to take shape. But along the way, I discovered a few more project goals:<p>• The framework should be extensible from Day 1. Bud is too ambitious for one person. We're going to need an ambitious community behind this framework.<p>• Bud should be able to provide high-level APIs for developers while compiling down to performant low-level Go code for production.<p>• Bud should compile to a single binary. With platforms like Fly.io and Heroku, these days it's easy to not care about this, but I still cherish the idea that I can build a single binary that contains my entire web app and secure copy it up to a tiny server that doesn't even have Go installed.<p>It's still super early days. You can find the the Roadmap on Github: <a href="https://github.com/livebud/bud/discussions/9" rel="nofollow">https://github.com/livebud/bud/discussions/9</a>. I encourage you to contribute your thoughts.<p>And here's the current documentation for what's already in Bud: <a href="https://denim-cub-301.notion.site/Hey-Bud-4d81622cc49942f9917c5033e5205c69" rel="nofollow">https://denim-cub-301.notion.site/Hey-Bud-4d81622cc49942f991...</a>. Comments are enabled for anyone to chime in.<p>I have big plans for the framework. I hope you'll join me on this journey to build ambitious websites faster with Go!