The best Hacker News stories from Show from the past day
Latest posts:
Show HN: I built a modern Goodreads alternative
Since 2005, Goodreads has been the default book tracking site, connecting millions of readers. But let’s be real—it’s barely changed in 20 years. It’s the same site it was, just with more ads.<p><pre><code> Still no half-star ratings.
No proper DNF (Did Not Finish) option.
UI still looks like it's from 2005.
Amazon owns it and doesn't care.
</code></pre>
So I built Kaguya, a modern alternative, over the past 9 months.<p>What’s live:<p><pre><code> Custom shelves (Organize however you want)
Rich-text reviews (format your thoughts properly)
10-star rating system (More nuance than 5 stars)
DNF, On-Hold, and other reading statuses
Likes, shares, comments on reviews
Import your library from Goodreads/StoryGraph
A beautiful design that doesn’t make you feel like you’re using an ancient website
Coming next:
Deep tagging system (Genres, moods, character traits, tropes)
Beautiful stats & insights (Visualize your reading habits)
Discussion forums for every book (Think subreddit-style discussions)
</code></pre>
Would love feedback. What do you think?
Show HN: I built a modern Goodreads alternative
Since 2005, Goodreads has been the default book tracking site, connecting millions of readers. But let’s be real—it’s barely changed in 20 years. It’s the same site it was, just with more ads.<p><pre><code> Still no half-star ratings.
No proper DNF (Did Not Finish) option.
UI still looks like it's from 2005.
Amazon owns it and doesn't care.
</code></pre>
So I built Kaguya, a modern alternative, over the past 9 months.<p>What’s live:<p><pre><code> Custom shelves (Organize however you want)
Rich-text reviews (format your thoughts properly)
10-star rating system (More nuance than 5 stars)
DNF, On-Hold, and other reading statuses
Likes, shares, comments on reviews
Import your library from Goodreads/StoryGraph
A beautiful design that doesn’t make you feel like you’re using an ancient website
Coming next:
Deep tagging system (Genres, moods, character traits, tropes)
Beautiful stats & insights (Visualize your reading habits)
Discussion forums for every book (Think subreddit-style discussions)
</code></pre>
Would love feedback. What do you think?
Show HN: Torii – a framework agnostic authentication library for Rust
Show HN: I took over Painteresque, a 14 year old Objective-C app and rebuilt it
Around 3 weeks ago, I came across a reddit post from someone who was looking to see if anyone was interested in taking over a 12-14 year old objective c app which hadn't been on the app store for many years. I responded and decided to do it.<p>The app is called Painteresque. It lets you turn photos to charcoal drawings, paintings etc while doing all the processing locally on device:<p><a href="https://apps.apple.com/ca/app/painteresque-photo-to-sketch/id6742038583">https://apps.apple.com/ca/app/painteresque-photo-to-sketch/i...</a><p>The app is entirely free to use, has no ads, third party analytics, trackers, subscriptions or other junk. It does offer 5 options for tips (which are basically consumable in app purchases), portion of which I will share with the original developer. However, based on my past experiences with tips, they are rarely given by users.<p>Here's a screenshot of the OLD app:<p><a href="https://i.imgur.com/fPhoqlp.jpeg" rel="nofollow">https://i.imgur.com/fPhoqlp.jpeg</a><p>The old app was built like 12-14 years ago in a combination of objective c and vanilla C. The "filters" were built in C while the UI was in objective c.<p>The codebase was so old that it wasn't even using ARC (Automatic Reference Counting).<p>The app would also instantly crash because back in those days, using the camera or adding photos to photo library didn't require declaring permission things like `NSCameraUsageDescription`, `NSLocationWhenInUseUsageDescription`.<p>Also had to remove obsolete frameworks to get it to run on devices iOS 12 onwards.<p>It was also not built for retina displays, nor handling safe area layout guides.<p>After fixing all these things, I got the old app to work on phone. But the UI was very rough and rudimentary. Back in those days, it would get approved by Apple. But nowadays, Apple is very strict about these things.<p>So, I decided to rebuild the app from scratch in Swift with, what I think, is a better UI design. I still used the old vanilla C code for the filters with some small changes and extra filters of my own. But the rest of the UI is all from scratch. I also incorporated things like `NSOperationQueue` for background processing of the image filtration as it can take a few seconds to generate. I incorporated caching of the images, preview thumbnails etc. to disk because the current phones have cameras which take humongous photos that can use a lot of ram if kept in memory.<p>The only package dependency the app uses is SnapKit to make auto layout simpler. The UI is made with code instead of storyboards.<p>The App Store screenshots are all made by me from scratch using Photopea, a browser alternative to Photoshop. The app icon is still the old icon, except I changed the background to be an off-white color instead of the old blue color to make it look a bit more modern.<p>Overall, this process took about 3 weeks. Most of the important work was done in about 1.5-2 weeks. The rest of the time was spent adding things like tipping in app purchases, UI improvements, tweaking the filters, adding feedback button etc.<p>The App Store review was fast. I submitted at 6:30 PM and it was approved at 4 AM. Also got an update approved last night to fix some slowness issue when opening new images.<p>The new app on iOS is only around 1.8 MB, most of it used by images for the buttons and app icon.<p>Ask me anything you'd like about this experience. Have any of you taken over an old app and rebuilt it?
Show HN: I took over Painteresque, a 14 year old Objective-C app and rebuilt it
Around 3 weeks ago, I came across a reddit post from someone who was looking to see if anyone was interested in taking over a 12-14 year old objective c app which hadn't been on the app store for many years. I responded and decided to do it.<p>The app is called Painteresque. It lets you turn photos to charcoal drawings, paintings etc while doing all the processing locally on device:<p><a href="https://apps.apple.com/ca/app/painteresque-photo-to-sketch/id6742038583">https://apps.apple.com/ca/app/painteresque-photo-to-sketch/i...</a><p>The app is entirely free to use, has no ads, third party analytics, trackers, subscriptions or other junk. It does offer 5 options for tips (which are basically consumable in app purchases), portion of which I will share with the original developer. However, based on my past experiences with tips, they are rarely given by users.<p>Here's a screenshot of the OLD app:<p><a href="https://i.imgur.com/fPhoqlp.jpeg" rel="nofollow">https://i.imgur.com/fPhoqlp.jpeg</a><p>The old app was built like 12-14 years ago in a combination of objective c and vanilla C. The "filters" were built in C while the UI was in objective c.<p>The codebase was so old that it wasn't even using ARC (Automatic Reference Counting).<p>The app would also instantly crash because back in those days, using the camera or adding photos to photo library didn't require declaring permission things like `NSCameraUsageDescription`, `NSLocationWhenInUseUsageDescription`.<p>Also had to remove obsolete frameworks to get it to run on devices iOS 12 onwards.<p>It was also not built for retina displays, nor handling safe area layout guides.<p>After fixing all these things, I got the old app to work on phone. But the UI was very rough and rudimentary. Back in those days, it would get approved by Apple. But nowadays, Apple is very strict about these things.<p>So, I decided to rebuild the app from scratch in Swift with, what I think, is a better UI design. I still used the old vanilla C code for the filters with some small changes and extra filters of my own. But the rest of the UI is all from scratch. I also incorporated things like `NSOperationQueue` for background processing of the image filtration as it can take a few seconds to generate. I incorporated caching of the images, preview thumbnails etc. to disk because the current phones have cameras which take humongous photos that can use a lot of ram if kept in memory.<p>The only package dependency the app uses is SnapKit to make auto layout simpler. The UI is made with code instead of storyboards.<p>The App Store screenshots are all made by me from scratch using Photopea, a browser alternative to Photoshop. The app icon is still the old icon, except I changed the background to be an off-white color instead of the old blue color to make it look a bit more modern.<p>Overall, this process took about 3 weeks. Most of the important work was done in about 1.5-2 weeks. The rest of the time was spent adding things like tipping in app purchases, UI improvements, tweaking the filters, adding feedback button etc.<p>The App Store review was fast. I submitted at 6:30 PM and it was approved at 4 AM. Also got an update approved last night to fix some slowness issue when opening new images.<p>The new app on iOS is only around 1.8 MB, most of it used by images for the buttons and app icon.<p>Ask me anything you'd like about this experience. Have any of you taken over an old app and rebuilt it?
Show HN: I made a website where you can create your own "Life in Weeks" timeline
Show HN: I made a website where you can create your own "Life in Weeks" timeline
Show HN: Berlin Swapfest – Electronics flea market
Hey HN,<p>After scrounging the local classifieds and our version of Craigslist to find pre-owned equipment and getting frustrated I decided that there needs to be a flea market but for electronics tools and homelab stuff. The Berlin Swapfest follows in the same spirit as the MIT Swapfest!<p>I’ve partners with a long time hacker space in Berlin c-base who will be hosting this event!<p>Would love for local hackers to come by and buy and sell their old gear!<p>Details on the site!
Show HN: Berlin Swapfest – Electronics flea market
Hey HN,<p>After scrounging the local classifieds and our version of Craigslist to find pre-owned equipment and getting frustrated I decided that there needs to be a flea market but for electronics tools and homelab stuff. The Berlin Swapfest follows in the same spirit as the MIT Swapfest!<p>I’ve partners with a long time hacker space in Berlin c-base who will be hosting this event!<p>Would love for local hackers to come by and buy and sell their old gear!<p>Details on the site!
Show HN: Berlin Swapfest – Electronics flea market
Hey HN,<p>After scrounging the local classifieds and our version of Craigslist to find pre-owned equipment and getting frustrated I decided that there needs to be a flea market but for electronics tools and homelab stuff. The Berlin Swapfest follows in the same spirit as the MIT Swapfest!<p>I’ve partners with a long time hacker space in Berlin c-base who will be hosting this event!<p>Would love for local hackers to come by and buy and sell their old gear!<p>Details on the site!
Show HN: Python micro event loop library (~250 LOC)
Show HN: Wireless video streaming on POV bike display
It took me a few years of fits and starts but I've finally got my DIY persistence of vision bike light to display video!<p>I designed and built the PCB for it and wrote the code for the wifi streaming of video frames with a bit of help from Claude. This was actually one thing I was dreading as I was hitting a wall being burned out on this project. With a little bit of Claude's help in getting the ESP32 wifi stack working It's finally finished!<p>Some tech specs:
Using an ESP32
42 LED's per strip, 4 strips total spaced 90 deg apart.
Angular resolution of the image is 1 deg so it updates all 168 LED's , 360 times per rotation.<p>The LED's are SK9822 individually addressable LED's (also known as DotStar from Adafruit).<p>Uses a magnet and hall effect sensor to keep track of rotation speed.<p>The server can be run from a phone and using termux with a python server to serve locally to the esp.<p>I need to periodically spin it up every time it slows down.<p>My video camera shutter speed needs to be slow to show the correct effect otherwise it is either incomplete or it shows too many "frames" in a video frame.<p>Gonna get around to making a blog post at some point to talk more about it in detail!
Show HN: Globstar – Open-source static analysis toolkit
Hey HN! We’re Jai and Sanket, co-founders of DeepSource (YC W20). We're open-sourcing Globstar (<a href="https://github.com/DeepSourceCorp/globstar">https://github.com/DeepSourceCorp/globstar</a>), a static analysis toolkit that lets you easily write and run custom code quality and security checkers in YAML [1] or Go [2].<p>After 5+ years of building AST-based static analyzers that process millions of lines of code daily at DeepSource, we kept hearing a common request from customers: "How do we write custom checks specific to our codebase?" AppSec and DevOps teams have a lot of learned anti-patterns and security rules they want to enforce across their orgs, and being able to do that without being a static analysis expert, came up as an important want.<p>We initially built an internal framework using tree-sitter [3] for our proprietary infrastructure-as-code analyzers, which enabled us to rapidly create new checkers. We realized that making the framework open-source could solve this problem for everyone.<p>Our key insight was that writing checkers isn't the hard part anymore. Modern AI assistants like ChatGPT and Claude are excellent at generating tree-sitter queries with very high accuracy. We realized that the tree-sitters' gnarly s-expression syntax isn’t a problem anymore (since the AI will be doing all the generation anyway), and we can instead focus on building a fast, flexible, and reliable checker runtime around it.<p>So instead of creating yet another DSL, we use tree-sitter's native query syntax. Yes, the expressions look more complex than simplified DSLs, but they give you direct access to your code's actual AST structure – which means your rules work exactly as you'd expect them to. When you need to debug a rule, you're working with the actual structure of your code, not an abstraction that might hide important details.<p>We've also designed Globstar to have a gradual learning curve: The YAML interface works well for simple checkers, and the Go Interface can handle complex scenarios when you need features like cross-file analysis, scope resolution, data flow analysis, and context awareness. The Go API gives you direct access to tree-sitter bindings, so you can write arbitrarily complex checkers on day one.<p>Key features:<p>- Written in Go with native tree-sitter bindings, distributed as a single binary<p>- MIT-licensed<p>- Write all your checkers in a “.globstar” folder in your repo, in YAML or Go, and just run “globstar check” without any build steps<p>- Multi-language support through tree-sitter (20+ languages today)<p>We have a long way to go and a very exciting roadmap for Globstar, and we’d love to hear your feedback!<p>[1] <a href="https://globstar.dev/guides/writing-yaml-checker" rel="nofollow">https://globstar.dev/guides/writing-yaml-checker</a><p>[2] <a href="https://globstar.dev/guides/writing-go-checker" rel="nofollow">https://globstar.dev/guides/writing-go-checker</a><p>[3] <a href="https://tree-sitter.github.io/tree-sitter/" rel="nofollow">https://tree-sitter.github.io/tree-sitter/</a>
Show HN: Globstar – Open-source static analysis toolkit
Hey HN! We’re Jai and Sanket, co-founders of DeepSource (YC W20). We're open-sourcing Globstar (<a href="https://github.com/DeepSourceCorp/globstar">https://github.com/DeepSourceCorp/globstar</a>), a static analysis toolkit that lets you easily write and run custom code quality and security checkers in YAML [1] or Go [2].<p>After 5+ years of building AST-based static analyzers that process millions of lines of code daily at DeepSource, we kept hearing a common request from customers: "How do we write custom checks specific to our codebase?" AppSec and DevOps teams have a lot of learned anti-patterns and security rules they want to enforce across their orgs, and being able to do that without being a static analysis expert, came up as an important want.<p>We initially built an internal framework using tree-sitter [3] for our proprietary infrastructure-as-code analyzers, which enabled us to rapidly create new checkers. We realized that making the framework open-source could solve this problem for everyone.<p>Our key insight was that writing checkers isn't the hard part anymore. Modern AI assistants like ChatGPT and Claude are excellent at generating tree-sitter queries with very high accuracy. We realized that the tree-sitters' gnarly s-expression syntax isn’t a problem anymore (since the AI will be doing all the generation anyway), and we can instead focus on building a fast, flexible, and reliable checker runtime around it.<p>So instead of creating yet another DSL, we use tree-sitter's native query syntax. Yes, the expressions look more complex than simplified DSLs, but they give you direct access to your code's actual AST structure – which means your rules work exactly as you'd expect them to. When you need to debug a rule, you're working with the actual structure of your code, not an abstraction that might hide important details.<p>We've also designed Globstar to have a gradual learning curve: The YAML interface works well for simple checkers, and the Go Interface can handle complex scenarios when you need features like cross-file analysis, scope resolution, data flow analysis, and context awareness. The Go API gives you direct access to tree-sitter bindings, so you can write arbitrarily complex checkers on day one.<p>Key features:<p>- Written in Go with native tree-sitter bindings, distributed as a single binary<p>- MIT-licensed<p>- Write all your checkers in a “.globstar” folder in your repo, in YAML or Go, and just run “globstar check” without any build steps<p>- Multi-language support through tree-sitter (20+ languages today)<p>We have a long way to go and a very exciting roadmap for Globstar, and we’d love to hear your feedback!<p>[1] <a href="https://globstar.dev/guides/writing-yaml-checker" rel="nofollow">https://globstar.dev/guides/writing-yaml-checker</a><p>[2] <a href="https://globstar.dev/guides/writing-go-checker" rel="nofollow">https://globstar.dev/guides/writing-go-checker</a><p>[3] <a href="https://tree-sitter.github.io/tree-sitter/" rel="nofollow">https://tree-sitter.github.io/tree-sitter/</a>
Show HN: Globstar – Open-source static analysis toolkit
Hey HN! We’re Jai and Sanket, co-founders of DeepSource (YC W20). We're open-sourcing Globstar (<a href="https://github.com/DeepSourceCorp/globstar">https://github.com/DeepSourceCorp/globstar</a>), a static analysis toolkit that lets you easily write and run custom code quality and security checkers in YAML [1] or Go [2].<p>After 5+ years of building AST-based static analyzers that process millions of lines of code daily at DeepSource, we kept hearing a common request from customers: "How do we write custom checks specific to our codebase?" AppSec and DevOps teams have a lot of learned anti-patterns and security rules they want to enforce across their orgs, and being able to do that without being a static analysis expert, came up as an important want.<p>We initially built an internal framework using tree-sitter [3] for our proprietary infrastructure-as-code analyzers, which enabled us to rapidly create new checkers. We realized that making the framework open-source could solve this problem for everyone.<p>Our key insight was that writing checkers isn't the hard part anymore. Modern AI assistants like ChatGPT and Claude are excellent at generating tree-sitter queries with very high accuracy. We realized that the tree-sitters' gnarly s-expression syntax isn’t a problem anymore (since the AI will be doing all the generation anyway), and we can instead focus on building a fast, flexible, and reliable checker runtime around it.<p>So instead of creating yet another DSL, we use tree-sitter's native query syntax. Yes, the expressions look more complex than simplified DSLs, but they give you direct access to your code's actual AST structure – which means your rules work exactly as you'd expect them to. When you need to debug a rule, you're working with the actual structure of your code, not an abstraction that might hide important details.<p>We've also designed Globstar to have a gradual learning curve: The YAML interface works well for simple checkers, and the Go Interface can handle complex scenarios when you need features like cross-file analysis, scope resolution, data flow analysis, and context awareness. The Go API gives you direct access to tree-sitter bindings, so you can write arbitrarily complex checkers on day one.<p>Key features:<p>- Written in Go with native tree-sitter bindings, distributed as a single binary<p>- MIT-licensed<p>- Write all your checkers in a “.globstar” folder in your repo, in YAML or Go, and just run “globstar check” without any build steps<p>- Multi-language support through tree-sitter (20+ languages today)<p>We have a long way to go and a very exciting roadmap for Globstar, and we’d love to hear your feedback!<p>[1] <a href="https://globstar.dev/guides/writing-yaml-checker" rel="nofollow">https://globstar.dev/guides/writing-yaml-checker</a><p>[2] <a href="https://globstar.dev/guides/writing-go-checker" rel="nofollow">https://globstar.dev/guides/writing-go-checker</a><p>[3] <a href="https://tree-sitter.github.io/tree-sitter/" rel="nofollow">https://tree-sitter.github.io/tree-sitter/</a>
Show HN: Probly – Spreadsheets, Python, and AI in the browser
Probly was built to reduce context-switching between spreadsheet applications, Python notebooks, and AI tools. It’s a simple spreadsheet that lets you talk to your data. Need pandas analysis? Just ask in plain English, and the code runs right in your browser. Want a chart? Just ask.<p>While there are tools available in this space like TheBricks, Probly is a minimalist, open-source solution built with React, TypeScript, Next.js, Handsontable, Hyperformula, Apache Echarts, OpenAI, and Pyodide. It's still a work in progress, but it's already useful for my daily tasks.
Show HN: Probly – Spreadsheets, Python, and AI in the browser
Probly was built to reduce context-switching between spreadsheet applications, Python notebooks, and AI tools. It’s a simple spreadsheet that lets you talk to your data. Need pandas analysis? Just ask in plain English, and the code runs right in your browser. Want a chart? Just ask.<p>While there are tools available in this space like TheBricks, Probly is a minimalist, open-source solution built with React, TypeScript, Next.js, Handsontable, Hyperformula, Apache Echarts, OpenAI, and Pyodide. It's still a work in progress, but it's already useful for my daily tasks.
Show HN: Probly – Spreadsheets, Python, and AI in the browser
Probly was built to reduce context-switching between spreadsheet applications, Python notebooks, and AI tools. It’s a simple spreadsheet that lets you talk to your data. Need pandas analysis? Just ask in plain English, and the code runs right in your browser. Want a chart? Just ask.<p>While there are tools available in this space like TheBricks, Probly is a minimalist, open-source solution built with React, TypeScript, Next.js, Handsontable, Hyperformula, Apache Echarts, OpenAI, and Pyodide. It's still a work in progress, but it's already useful for my daily tasks.
Show HN: Yaak – An open source, Git-friendly desktop API client
Hi HN! I'm Greg and I've been working on Yaak for just over a year. I usually describe it as a Postman alternative since most developers are familiar with that, but it's targeted more toward users that just want an API client (no mocking, testing, spec design, etc).<p>Having also created Insomnia for a similar purpose, I never thought I'd build another API client again. But, after selling Insomnia in 2019 and watching it expand into the broader feature set of Postman, I was left wanting a simpler tool again. Yaak was my answer to that.<p>It's hard to describe how it's better than the 100 other API clients, since its main benefit is design, but there are a few stand-out features:<p>- Optionally sync data to a local directory as plain-text, for use with Git/etc
- Build and install plugins for authentication, template functions, or generic actions
- Support for REST, GraphQL, WebSocket, server sent events, and gRPC<p>Yaak requires a license for commercial use but this only applies when using the prebuilt binaries. If building from source, a license is not required.<p>It's available for Mac, Windows, and Linux and the source is at <a href="https://github.com/mountain-loop/yaak">https://github.com/mountain-loop/yaak</a><p>I'd love to hear you think!
Show HN: Yaak – An open source, Git-friendly desktop API client
Hi HN! I'm Greg and I've been working on Yaak for just over a year. I usually describe it as a Postman alternative since most developers are familiar with that, but it's targeted more toward users that just want an API client (no mocking, testing, spec design, etc).<p>Having also created Insomnia for a similar purpose, I never thought I'd build another API client again. But, after selling Insomnia in 2019 and watching it expand into the broader feature set of Postman, I was left wanting a simpler tool again. Yaak was my answer to that.<p>It's hard to describe how it's better than the 100 other API clients, since its main benefit is design, but there are a few stand-out features:<p>- Optionally sync data to a local directory as plain-text, for use with Git/etc
- Build and install plugins for authentication, template functions, or generic actions
- Support for REST, GraphQL, WebSocket, server sent events, and gRPC<p>Yaak requires a license for commercial use but this only applies when using the prebuilt binaries. If building from source, a license is not required.<p>It's available for Mac, Windows, and Linux and the source is at <a href="https://github.com/mountain-loop/yaak">https://github.com/mountain-loop/yaak</a><p>I'd love to hear you think!