The best Hacker News stories from Show from the past week
Latest posts:
Show HN: Sendune – open-source HTML email designer
Demo: <a href="https://designer.sendune.com/" rel="nofollow">https://designer.sendune.com/</a>
Code: <a href="https://github.com/SendWithSES/Drag-and-Drop-Email-Designer">https://github.com/SendWithSES/Drag-and-Drop-Email-Designer</a><p>HTML for email is probably the hardest code to write. Even a teeny-tiny deviation from the rules will break the email in untold combination of os/desktop/mobile clients.<p>It's mid 2024. Almost 50 years since email was invented and 35 years since HTML was born. A 'basic-open-source-HTML-email-designer' must be a solved problem, right? We thought so too.<p>Sadly, that's not the case.<p>There are a few decent open source email designers but they carry dependencies that make them cumbersome to embed within your app. That's why we decided to open source our HTML Email Designer.<p>The SENDUNE email designer focuses on simplicity and ease of use. It is light-weight. It does pure HTML - no intermediate code wranglers like mjml. There is no lock-in of any kind. Save HTML output as a template and use with ANY email service provider.<p>Feel free to fork the repository, make improvements, and submit pull requests.<p>AMA: hello at sendune dot com
Show HN: Product Hunt for Music
Show HN: Magic-cli – A copilot for your command line
Blog post: <a href="https://guywaldman.com/posts/introducing-magic-cli" rel="nofollow">https://guywaldman.com/posts/introducing-magic-cli</a>
Show HN: I quit my job and made an automatic time tracker
Hey Hacker News!<p>This is my first post here. About 5 months ago, I left my job because I was completely burnt out. After taking some time off, I started freelancing. But I found tracking my time to be a real hassle as I kept forgetting to start or stop the timer and often had no idea what I’d worked on.<p>So, I decided to build Taim as a side project, while also working now on some freelancing gigs. Taim is going to be automated time tracking tool for freelancers and teams. It’s designed to make tracking time effortless and accurate, so you can focus on your work and not worry about the clock.<p>I’m excited to share this with you all and would love your feedback! Currently planning to launch it to the public in a few months.
Show HN: Horizon – Private alternative to Imgur
Hey HN, I'm James, a 17-year old full-stack engineer from Canada with a strong passion for building software. During the day, I work for a California-based startup, and in the evenings, I enjoy working on side projects[1][2].<p>For the past 3 years, I've been building and iterating on a product I called Horizon Pics, which is a file hosting service, similar to mainstream services, like Imgur. Horizon allows you to quickly upload and store all types of files, from images and video, to PDFs and other documents. The biggest differentiating factor is that Horizon's incentives are much more aligned with you, the end-user.<p>Unlike Imgur, Horizon has absolutely no ads, doesn't sell your data, has built-in security and privacy controls, and is fully focused on your file sharing needs. No social media or other bloat.<p>This past week, I've launched a rebrand of Horizon which features a brand-new desktop app called Alpine[3], which serves as a local companion to Horizon. With it comes the capability to auto-upload screen captures and upload your clipboards as shareable pastes. For extra privacy, clipboard sharing can be automatically deleted after one view, or end-to-end encrypted with AES-256-GCM client-side. The desktop app is completely free to use! It's powered by Tauri using TypeScript, SvelteKit, Sass, and Rust.<p>Horizon offers a free plan with limited storage and upload sizes, while the paid plan offers higher limits.<p>Let me know what you think about the landing page[0]. Does it provide enough information as a new user?<p>[0]: <a href="https://horizon.pics" rel="nofollow">https://horizon.pics</a><p>[1]: <a href="https://httpjames.space" rel="nofollow">https://httpjames.space</a><p>[2]: <a href="https://github.com/httpjamesm">https://github.com/httpjamesm</a><p>[3]: <a href="https://horizon.pics/alpine" rel="nofollow">https://horizon.pics/alpine</a>
Show HN: I generated 70k audiobooks with OpenAI Text-to-Speech
Hey HN. I’m Ivan, hacker from Ukraine.<p>For about a year, I was working on Listenly — an app to listen to text content with OpenAI's natural-sounding text-to-speech model.<p>At some moment, I realized that it would be cool to take all the public domain e-books and create audio versions for them.
So I did it... kind-of.<p>It would cost an immense amount of money to generate all the audio right away (OpenAI TTS costs approximately $0.84/hour of audio; 11labs, for comparison, is 10 times more expensive).
So, I took a more gradual approach.<p>I took all the metadata from the Project Gutenberg catalog (it's about 70GB of dirty XML), cleaned it, put it into my database, and created a browsable catalog.
When the first user visits a book page on Listenly, I download the full text of the book, save it in my cloud storage, and calculate the price for audio generation based on the book's length. Then, if the user decides to purchase it, we generate the audio.<p>I know it’s not perfect.<p>I've burned out a couple of times already while doing it.<p>But still, I need to show it to the world. And I’ll be glad to hear your feedback.<p>Peace.
Show HN: I built a Jeopardy game maker with buzzer support
Sometime in early 2022, my wife and I started watching Jeopardy! regularly, almost by accident. Inspired, I thought it would be fun to create and host my own games with family and friends.<p>By September 2022, I debuted Buzzinga at a family reunion. Back then, it was just a website running locally on my MacBook. It was a total blast, and I knew this was something the world should enjoy too.<p>I launched Buzzinga.io in December 2023 and have been rolling out regular updates for our 2000+ users ever since.<p>Features:<p>- Built-in buzzer support (phones and physical buzzers)
- Automatic scorekeeping
- User-friendly host controls
- Highly customizable
- Supports multiple clue types: text, image, audio, and video<p>The site does not require sign up to play around with, only to create your own games.
Show HN: I built a Jeopardy game maker with buzzer support
Sometime in early 2022, my wife and I started watching Jeopardy! regularly, almost by accident. Inspired, I thought it would be fun to create and host my own games with family and friends.<p>By September 2022, I debuted Buzzinga at a family reunion. Back then, it was just a website running locally on my MacBook. It was a total blast, and I knew this was something the world should enjoy too.<p>I launched Buzzinga.io in December 2023 and have been rolling out regular updates for our 2000+ users ever since.<p>Features:<p>- Built-in buzzer support (phones and physical buzzers)
- Automatic scorekeeping
- User-friendly host controls
- Highly customizable
- Supports multiple clue types: text, image, audio, and video<p>The site does not require sign up to play around with, only to create your own games.
Show HN: I made a drag and drop CSS grid generator
Show HN: Resurrecting a dead Dune RTS game
Show HN: Resurrecting a dead Dune RTS game
Show HN: 30ms latency screen sharing in Rust
Show HN: 30ms latency screen sharing in Rust
Show HN: Dut – a fast Linux disk usage calculator
"dut" is a disk usage calculator that I wrote a couple months ago in C. It is multi-threaded, making it one of the fastest such programs. It beats normal "du" in all cases, and beats all other similar programs when Linux's caches are warm (so, not on the first run). I wrote "dut" as a challenge to beat similar programs that I used a lot, namely pdu[1] and dust[2].<p>"dut" displays a tree of the biggest things under your current directory, and it also shows the size of hard-links under each directory as well. The hard-link tallying was inspired by ncdu[3], but I don't like how unintuitive the readout is. Anyone have ideas for a better format?<p>There's installation instructions in the README. dut is a single source file, so you only need to download it and copy-paste the compiler command, and then copy somewhere on your path like /usr/local/bin.<p>I went through a few different approaches writing it, and you can see most of them in the git history. At the core of the program is a datastructure that holds the directories that still need to be traversed, and binary heaps to hold statted files and directories. I had started off using C++ std::queues with mutexes, but the performance was awful, so I took it as a learning opportunity and wrote all the datastructures from scratch. That was the hardest part of the program to get right.<p>These are the other techniques I used to improve performance:<p>* Using fstatat(2) with the parent directory's fd instead of lstat(2) with an absolute path. (10-15% performance increase)<p>* Using statx(2) instead of fstatat. (perf showed fstatat running statx code in the kernel). (10% performance increase)<p>* Using getdents(2) to get directory contents instead of opendir/readdir/closedir. (also around 10%)<p>* Limiting inter-thread communication. I originally had fs-traversal results accumulated in a shared binary heap, but giving each thread a binary-heap and then merging them all at the end was faster.<p>I couldn't find any information online about fstatat and statx being significantly faster than plain old stat, so maybe this info will help someone in the future.<p>[1]: <a href="https://github.com/KSXGitHub/parallel-disk-usage">https://github.com/KSXGitHub/parallel-disk-usage</a><p>[2]: <a href="https://github.com/bootandy/dust">https://github.com/bootandy/dust</a><p>[3]: <a href="https://dev.yorhel.nl/doc/ncdu2" rel="nofollow">https://dev.yorhel.nl/doc/ncdu2</a>, see "Shared Links"
Show HN: I made a Note-Taking app for people who keep texting themselves
This project began when I realized that despite trying many fantastic note-taking apps, I often defaulted to dumping notes into chat apps like Slack or iMessage. I wanted to bring that effortless “text yourself” note-taking experience to a dedicated note-taking app.<p>Originally developed as a macOS app, Strflow is now also available for iOS. Strflow is designed to make note-taking as quick and intuitive as possible, centered around a chronological timeline UI.<p>Here are some of its features:<p>* Tag system<p>* Rich editor with text formatting, images, and note linking<p>* Global shortcuts for quick access<p>* Share extension<p>* Encrypted iCloud backup & synchronization (becomes end-to-end encryption if you enable iCloud’s Advanced Data Protection)<p>Hope you find Strflow interesting. I’m happy to answer any questions.<p>## Some implementation details some of you might be interested in:<p>* The app is implemented natively using Swift.<p>* On macOS, it’s based on AppKit, and on iOS, it uses UIKit, with SwiftUI used partially.<p>* The editor intensively utilizes TextKit.<p>* The sync engine is custom-built using CloudKit.
Show HN: Tegon: Open-source alternative to Jira, Linear
Hi HN, we're Harshith, Manoj and Manik and we're building Tegon (<a href="https://github.com/tegonhq/tegon">https://github.com/tegonhq/tegon</a>), open-source issue tracking software that uses AI to smartly automate manual workflows or provide more context to engineers for a given task. There's a demo video here: <a href="https://www.loom.com/share/b664b01e9b064a02be5791c12b77a107" rel="nofollow">https://www.loom.com/share/b664b01e9b064a02be5791c12b77a107</a>, and you can try out the product at <a href="https://demo.tegon.ai">https://demo.tegon.ai</a> using these credentials:<p><pre><code> Email: elon@xyz.com
Password: XfFNw6GwVJVQv6PA
</code></pre>
As engineers, our experience with traditional tools like Jira hasn't been great. It is slow, bloated and often acts as a burden to engineers. These tools didn't help engineers in getting the work done faster, they only helped the management in tracking the work which enabled a lot of processes and micro-management which used to kill our productivity.<p>With the rise of LLMs, we thought about how project management and issue tracking would look 5-10 years from now. The current tools didn't match our vision, which excited us and started the journey of Tegon. We aim to build a tool where manual workflows are either automated or handled by AI. This tool will provide better context about a task to an engineer by smartly gathering data from all sources, helping teams with better prioritization.<p>Tegon loads all the data from local (indexed db) thus making it super fast to load and navigate. We make all of this happen by real-time sync in the background. Tegon also uses AI to simplify the issue-creation process by automatically creating titles, suggesting labels and assignees and identifying duplicates.
Tegon also simplifies the issue creation process from Slack, just apply an emoji to a Slack message and a tegon issue will be created making it easier for other teams to raise bugs or feature requests to engineering teams.<p>We deeply value the feedback from this community and have spent the last month revamping Tegon's design based on the feedback from our last launch. We just got started and there's a lot more to come. We're eager to get more feedback and keep building. Let us know what you think in the comments :)
Show HN: Crawlee for Python – a web scraping and browser automation library
Hey all,<p>This is Jan, the founder of Apify (<a href="https://apify.com/" rel="nofollow">https://apify.com/</a>) — a full-stack web scraping platform. After the success of Crawlee for JavaScript (<a href="https://github.com/apify/crawlee/">https://github.com/apify/crawlee/</a>) and the demand from the Python community, we're launching Crawlee for Python today!<p>The main features are:<p>- A unified programming interface for both HTTP (HTTPX with BeautifulSoup) & headless browser crawling (Playwright)<p>- Automatic parallel crawling based on available system resources<p>- Written in Python with type hints for enhanced developer experience<p>- Automatic retries on errors or when you’re getting blocked<p>- Integrated proxy rotation and session management<p>- Configurable request routing - direct URLs to the appropriate handlers<p>- Persistent queue for URLs to crawl<p>- Pluggable storage for both tabular data and files<p>For details, you can read the announcement blog post: <a href="https://crawlee.dev/blog/launching-crawlee-python" rel="nofollow">https://crawlee.dev/blog/launching-crawlee-python</a><p>Our team and I will be happy to answer here any questions you might have.
Show HN: Open-sourced Webflow for your own app
Hi HN,
I’m Kiet, one of the creators of Onlook studio. I made this app that allows you to visually edit your locally running React app and write the code back to it in real-time. The purpose is to allow you to develop UI while fully owning your code the whole time. There are other visual builders out there but they either require you to upload your code to the cloud or some lengthy setup process. Onlook runs locally, deterministically, and only requires adding a plugin for the compile step (2 lines of config change).<p>Technical details:
This is technically a web browser that can point to your localhost, which injects some CSS into the page that allows you to select, drag, and drop DOM elements, then track and translate those changes back into React code. Theoretically, you could do this with any compiled framework but I wanted a reasonable scope for the launch (the first version was actually in Svelte).<p>Some interesting challenges:
1. There is a React parser that is used to parse, insert the style, and serialize it back to code
2. There is a React pre-processor that traces the DOM elements to the corresponding code
3. There's also CSS parsing, injection, and converting to Tailwind
4. This is also an Electron app so there’s a browser within a browser within a node app which makes message passing… interesting<p>What’s next?
We’ve already built a proof-of-concept for inspecting and selecting layers, dragging to reorder, and inserting new DOM elements that I’m working on porting over from our private codebase. We’re also exploring opening more tabs in new frames in order to A/B test the changes before committing to code. There’s a long tail of exciting features we can do but I want to put this out there first and see what others would need.<p>Let me know what you think/feedback. It's been a blast working on this so far and I think it’s just neat :)
Show HN: Simulating 20M Particles in JavaScript
Had some fun with shared array buffers over many months of free time.<p>Skip to the end to play around with the final app.<p>Open to ideas on how to simulate more whilst staying in js land.
Show HN: Simulating 20M Particles in JavaScript
Had some fun with shared array buffers over many months of free time.<p>Skip to the end to play around with the final app.<p>Open to ideas on how to simulate more whilst staying in js land.