The best Hacker News stories from Show from the past week
Latest posts:
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.
Show HN: A modern Jupyter client for macOS
I love Jupyter – it's how I learned to code back when I was working as a scientist. But I was always frustrated that there wasn't a simple and elegant app that I could use with my Mac. I made do by wrapping JupyterLab in a chrome app, and then more recently switching to VS Code to make use of Copilot. I've always craved a more focused and lighter-weight experience when working in a notebook. That's why I created Satyrn.<p>It starts up really fast (faster time-to-execution than VS Code or JupyterLab), you can launch notebooks right from the Finder, and the design is super minimalist. It's got an OpenAI integration (use your own API key) for multi-cell generation with your notebook as context (I'll add other LLMs soon). And many more useful features like a virtual environment management UI, Black code formatting, and easy image/table copy buttons.<p>Full disclosure: it's built with Electron. I originally wrote it in Swift but couldn't get the editor experience to where I wanted it. Now it supports autocomplete, multi-cursor editing, and moving the cursor between cells just like you'd expect from JupyterLab or VS Code.<p>Satyrn sits on top of the jupyter-server, so it works with all your existing python kernels, Jupyter configuration, and ipynb files. It only works with local files at the moment, but I'm planning to extend it to support remote servers as well.<p>I'm an indie developer, and I will try to monetize at some point, but it's free while in alpha. If you're interested, please try it out!<p>I'd love your feedback in the comments, or you can contact me at jack-at-satyrn-dot-app.
Show HN: A modern Jupyter client for macOS
I love Jupyter – it's how I learned to code back when I was working as a scientist. But I was always frustrated that there wasn't a simple and elegant app that I could use with my Mac. I made do by wrapping JupyterLab in a chrome app, and then more recently switching to VS Code to make use of Copilot. I've always craved a more focused and lighter-weight experience when working in a notebook. That's why I created Satyrn.<p>It starts up really fast (faster time-to-execution than VS Code or JupyterLab), you can launch notebooks right from the Finder, and the design is super minimalist. It's got an OpenAI integration (use your own API key) for multi-cell generation with your notebook as context (I'll add other LLMs soon). And many more useful features like a virtual environment management UI, Black code formatting, and easy image/table copy buttons.<p>Full disclosure: it's built with Electron. I originally wrote it in Swift but couldn't get the editor experience to where I wanted it. Now it supports autocomplete, multi-cursor editing, and moving the cursor between cells just like you'd expect from JupyterLab or VS Code.<p>Satyrn sits on top of the jupyter-server, so it works with all your existing python kernels, Jupyter configuration, and ipynb files. It only works with local files at the moment, but I'm planning to extend it to support remote servers as well.<p>I'm an indie developer, and I will try to monetize at some point, but it's free while in alpha. If you're interested, please try it out!<p>I'd love your feedback in the comments, or you can contact me at jack-at-satyrn-dot-app.
Show HN: I’ve made a cheaper SEO research tool
In the last 13 months I've spent total $1297 for Ahrefs subscription. Sounds like a little too much so I've build my own Keywords Research tool - Telescope.<p>While building it my total bill was $51 for 2 months and 41k+ keywords found. Every page of keywords costs $0.03 - $0.05. 2 payment options - usage-based subscription or just top up your balance with the amount you'd like to.<p>Telescope includes a couple of things:<p>- Keywords Explorer - finding keywords based on seed phrase and filters<p>- Keywords Ideas - keywords on interception on provided keywords<p>- Ranked Keywords - keywords a domain you specified with their positions and change since last DB update<p>- Saved Keywords - to store found keywords and plan the SEO strategy<p>I've put a lot of love into it and would love to get some feedback. IMPORTANT: every new account gets some free balance to start with. Appreciate it!
Show HN: Xcapture-BPF – like Linux top, but with Xray vision
Show HN: Adding Mistral Codestral and GPT-4o to Jupyter Notebooks
Hey HN! We’ve forked Jupyter Lab and added AI code generation features that feel native and have all the context about your notebook. You can see a demo video (2 min) here: <a href="https://www.tella.tv/video/clxt7ei4v00rr09i5gt1laop6/view">https://www.tella.tv/video/clxt7ei4v00rr09i5gt1laop6/view</a><p>Try a hosted version here: <a href="https://pretzelai.app" rel="nofollow">https://pretzelai.app</a><p>Jupyter is by far the most used Data Science tool. Despite its popularity, it still lacks good code-generation extensions. The flagship AI extension <i>jupyter-ai</i> lags far behind in features and UX compared to modern AI code generation and understanding tools (like <a href="https://www.continue.dev">https://www.continue.dev</a> and <a href="https://www.cursor.com" rel="nofollow">https://www.cursor.com</a>). Also, GitHub Copilot <i>still</i> isn’t supported in Jupyter, more than 2 years after its launch. We’re solving this with Pretzel.<p>Pretzel is a free and open-source fork of Jupyter. You can install it locally with “pip install pretzelai” and launch it with “pretzel lab”. We recommend creating a new python environment if you already have jupyter lab installed. Our GitHub README has more information: <a href="https://github.com/pretzelai/pretzelai">https://github.com/pretzelai/pretzelai</a><p>For our first iteration, we’ve shipped 3 features:<p>1. Inline Tab autocomplete: This works similar to GitHub Copilot. You can choose between Mistral Codestral or GPT-4o in the settings<p>2. Cell level code generation: Click Ask AI or press Cmd+K / Ctrl+K to instruct AI to generate code in the active Jupyter Cell. We provide relevant context from the current notebook to the LLM with RAG. You can refer to existing variables in the notebook using the @variable syntax (for dataframes, it will pass the column names to the LLM)<p>3. Sidebar chat: Clicking the blue Pretzel Icon on the right sidebar opens this chat (Ctrl+Cmd+B / Ctrl+Alt+B). This chat always has context of your current cell or any selected text. Here too, we use RAG to send any relevant context from the current notebook to the LLM<p>All of these features work out-of-the-box via our “AI Server” but you have the option of using your own OpenAI API Key. This can be configured in the settings (Menu Bar > Settings > Settings Editor > Search for Pretzel). If you use your own OpenAI API Key but don’t have a Mistral API key, be sure to select OpenAI as the inline code completion model in the settings.<p>These features are just a start. We're building a modern version of Jupyter. Our roadmap includes frictionless, realtime collaboration (think pair-programming, comments, version history), full-fledged SQL support (both in code cells and as a standalone SQL IDE), a visual analysis builder, a VSCode-like coding experience powered by Monaco, and 1-click dashboard creation and sharing straight from your notebooks.<p>We’d love for you to try Pretzel and send us any feedback, no matter how minor (see my bio for contact info, or file a GitHub issue here: <a href="https://github.com/pretzelai/pretzelai/issues">https://github.com/pretzelai/pretzelai/issues</a>)
Show HN: Edna, note taking app for developers
I took a small break from coding SumatraPDF and wrote a note taking application that is perfect for me: <a href="https://edna.arslexis.io/" rel="nofollow">https://edna.arslexis.io/</a><p>Edna is a note taking app for developers and power users. A cross between Obsidian and Notational Velocity.<p>Markdown, plain text, code, works in browser so no installation required, private (notes are stored in your browser or disk) and secure (can encrypt notes with a password).<p>The story so far.<p>I was always attracted to editors with minimalistic UI, like <a href="https://mak.ink/" rel="nofollow">https://mak.ink/</a>, simplenote, Notational Velocity. I like having most of the screen estate for writing because writing and editing is what note taking apps are for.<p>But: most of them are very thin on features and UI.<p>I saw Heynote and it was one of those minimalistic writing UIs with not many features.<p>I liked their concept of dividing notes into blocks so I forked Heynote and started coding.<p>The goal was to combine writing-oriented, minimalistic main UI while also providing on-demand UI for features and efficient operation. Things like context menu, type-down note switcher, command palette, quick access shortcuts, plenty of keyboard shortcuts.<p>Another goal was privacy and security. The notes never leave your computer and can be encrypted with a password. It also makes the code simpler because I don't need any backend storage, user accounts and auth etc.<p>Sadly, only Chrome and Edge provide the necessary file system api, on other browser you can only store notes in local storage, which means no sharing between computers or accessing the notes with other software.<p>40 working days and 528 commits later, here's what I've added:<p><pre><code> * added support for multiple notes
* ability to store notes on disk
* and if you store notes in a directory managed by DropBox, OneDrive etc., you get sharing of notes between computers
* Ctrl + P: UI for switching between notes, creating new notes, deleting notes, inspired by Notational Velocity
* Ctrl + Shift + P: command palette like in vs code
* context menu to access frequently used functionality
* Ctrl + E to open note from history (list of recently opened notes)
* ability to assign Alt + 0 ... Alt + 9 quick access shortcuts
* ability to encrypt notes with a password
* export all notes to a .zip file
* automatic, daily backup of notes to a .zip file (optiona, see Settings)
* Ctrl + B to navigate between blocks
* re-designed Settings UI
* added ability to execute Go blocks
* support Svelte and Vue in code blocks
* ported the UI code from Vue to Svelte 5, just because I could
* converted from desktop app to run in the browser
</code></pre>
(Ctrl is on Windows, on Mac it's ⌘).<p>I've been using it daily while working on it. 94 notes and counting.<p>I still have ideas for improvements but it has all the core features for productive work.<p>The app: <a href="https://edna.arslexis.io/" rel="nofollow">https://edna.arslexis.io/</a><p>The code: <a href="https://github.com/kjk/edna">https://github.com/kjk/edna</a>
Show HN: Doggo – A powerful, human-friendly DNS client for the command line
Show HN: I created an After Effects alternative
Many years ago, I made VJ softwares (to mix live visuals in clubs) for unexpected platforms like the Game Boy Advance, the Playstation 2 and the Raspberry Pi. This year, I’m back with a new web-app: Pikimov.<p>Inspired by Photopea (a free Photoshop clone), I created this web-based motion design & video editor as an alternative to After Effects, to fill empty void.<p>It's free, without signup, without cloud uploads (your files stay on your machine), and your projects are not used for AI models training.
Show HN: I created an After Effects alternative
Many years ago, I made VJ softwares (to mix live visuals in clubs) for unexpected platforms like the Game Boy Advance, the Playstation 2 and the Raspberry Pi. This year, I’m back with a new web-app: Pikimov.<p>Inspired by Photopea (a free Photoshop clone), I created this web-based motion design & video editor as an alternative to After Effects, to fill empty void.<p>It's free, without signup, without cloud uploads (your files stay on your machine), and your projects are not used for AI models training.
Show HN: Drop-in SQS replacement based on SQLite
Hi! I wanted to share an open source API-compatible replacement for SQS. It's written in Go, distributes as a single binary, and uses SQLite for underlying storage.<p>I wrote this because I wanted a queue with all the bells and whistles - searching, scheduling into the future, observability, and rate limiting - all the things that many modern task queue systems have.<p>But I didn't want to rewrite my app, which was already using SQS. And I was frustrated that many of the best solutions out there (BullMQ, Oban, Sidekiq) were language-specific.<p>So I made an SQS-compatible replacement. All you have to do is replace the endpoint using AWS' native library in your language of choice.<p>For example, the queue works with Celery - you just change the connection string. From there, you can see all of your messages and their status, which is hard today in the SQS console (and flower doesn't support SQS.)<p>It is written to be pluggable. The queue implementation uses SQLite, but I've been experimenting with RocksDB as a backend and you could even write one that uses Postgres. Similarly, you could implement multiple protocols (AMQP, PubSub, etc) on top of the underlying queue. I started with SQS because it is simple and I use it a lot.<p>It is written to be as easy to deploy as possible - a single go binary. I'm working on adding distributed and autoscale functionality as the next layer.<p>Today I have search, observability (via prometheus), unlimited message sizes, and the ability to schedule messages arbitrarily in the future.<p>In terms of monetization, the goal is to just have a hosted queue system. I believe this can be cheaper than SQS without sacrificing performance. Just as Backblaze and Minio have had success competing in the S3 space, I wanted to take a crack at queues.<p>I'd love your feedback!