The best Hacker News stories from Show from the past week
Latest posts:
Show HN: Libmui is a macOS Classic widget lib for Linux
Not sure if I would post this for the last day of #marchintosh OR wait for tomorrow the 1st of April. Both apply equally.<p>Anyway, here's a pet project of mine, I made it as a glued on for another pet project of mine, but it developed a life of it's own now and can soar skyward toward success, fame, and glory.
Show HN: Libmui is a macOS Classic widget lib for Linux
Not sure if I would post this for the last day of #marchintosh OR wait for tomorrow the 1st of April. Both apply equally.<p>Anyway, here's a pet project of mine, I made it as a glued on for another pet project of mine, but it developed a life of it's own now and can soar skyward toward success, fame, and glory.
I scraped all of OpenAI's Community Forum
Show HN: I made a cheap alternative to college-level math & physics tutoring
Hi everyone! I’m the founder of Explanations (https://explanations.app). I’m building a website where students can get college level math & physics help for 1/10th the cost of private tutoring. You’d type a question, and your teacher replies by drawing a Youtube/KhanAcademy-style video; and this happens asynchronously throughout the week.<p>When I was studying at MIT, I often had to wait 40-60 minutes in line just to get 5 minutes of “help” from a TA - when I needed 1-2 hours. I understood that TAs can’t spend all their time helping me. That’s understandable. But what made me bitter was that, the school went the extra mile to ensure I don’t have the resources to learn on my own,<p>1. Blocking access to solutions for past problems (to prevent cheating)<p>2. Purposely not recording explanations to increase attendance: https://piazza.com/class/ky0jj3k89mz5d2/post/9<p>3. Insisting that Office Hours is a 1-by-1 format even when crowded (to prevent solutions from leaking)<p>These policies have good intentions - it’s to encourage a synchronous, in-person learning experience. But in practice, it had side-effects:<p>1. Help resources become inefficient - because so much material is restricted, and so much time is spent on delivering live lectures, there’d often be 40 students competing for help from 2 TAs in a 2-hour Office Hours<p>2. Because help resources are inefficient, it’s very hard to catch-up: once you fall behind, you have no way to review past material efficiently enough to compensate the difference - like credit card debt<p>3.Every day, I’d wake up, go to a lecture I don’t understand, go to Office Hours so I can hopefully ask for a review (which’d would take a few hours), realize TAs aren’t willing to do that, then realize there is nothing I can do to recover. I fell into a depression for many years, and my bitterness fueled me to work on the early versions of explanations.app<p>It turns out that universities succeed by being prestigious, not by teaching well. To win at prestige, be highly selective (by keeping supply low), keep a huge endowment (because it affects school rankings), and hire the best researchers (not teachers). This is actually the fundamental reason for the odd incentives in higher education, and something felt wrong.<p>So explanations.app is completely inspired by KhanAcademy and Youtube. The mystery to me was - why weren’t there more Youtube teachers & KhanAcademy videos? I believe it’s a combination of:<p>1. People who teach college subjects well often have better opportunities e.g. work, research<p>2. Lack of rewards: even Youtubers with 100K views and 10K subscribers would have at most 1-5 paying members on Patreon<p>On the one hand, there are all these free resources, where teachers changed the world way more than they ever got rewarded for. Then on the other hand, there is private tutoring - very effective - but very expensive e.g. $100/hour for college level subjects.<p>I believe the balanced solution is a system where lots of students pay $10/week to a few teachers who make videos, like a paid, Q&A Youtube/KhanAcademy, so it’s personalized, effective, but still affordable.<p>There are currently 2 teachers on explanations.app - Ben & Esther - both MIT grads, teaching physics & math for subjects like linear algebra and electromagnetism. 3 students - Laquazia, Lidija and Chandra from US, Serbia and Korea joined this month following r/physicsStudents launch: [https://www.reddit.com/r/PhysicsStudents/comments/1b2t5u6/i_started_a_program_where_mit_grads_do_physics/]<p>While explanations.app is focused on college-level math and physics, the platform is completely open for anyone to learn and/or teach. I hope you can try it :^) and give me the chance to work with you.
Show HN: Nano-web – a low latency one binary webserver designed for serving SPAs
I'd found that whilst there's a lot of good options out there for webservers, I was looking for something that is a single deployable binary for usage with containers or unikernels and solves some of the problems that you get with other setups like nginx.<p>It uses a single compiled binary, it's going to have extremely low latency on account of caching all files in memory at runtime, and also the fun feature and really useful that's good for SPAs (e.g. Vite) or things like Astro is that you can inject configuration variables into it at runtime and access them from within your frontend code, so you don't have to rebuild any images for different environments as part of your CI.<p>Whilst I'm sure this problem has been solved time and time again, I could never get a solution to be quite right.<p>Also, serving things like Astro from S3 gets to be tricky because CloudFront doesn't support index pages in subdirectories so the routing breaks. This fixes this.<p>Use it or don't, I think it's a cool little project and it's been a while since I worked on and released something :)
Show HN: Detecting adblock, without JavaScript, by abusing HTTP 103 responses
Show HN: Tracecat – Open-source security alert automation / SOAR alternative
Hi HN, we are building Tracecat (<a href="https://tracecat.com/">https://tracecat.com/</a>), an open source automation platform for security alerts. Tracecat automates the tasks a security analyst has to do when responding to a security alert: e.g. contact victims, investigate security logs, report vulnerability.<p>The average security analyst deals with 100 alerts per day. As soon as an alert comes in, you have to investigate and respond. An average alert takes ~30 minutes to analyze (and 100 x 30 min = 50 hours > one whole day) Lots of things get dropped, and this creates vulnerabilities. Many breaches can be traced back to week old alerts that didn’t get properly investigated.<p>Since the risks and costs are so high, top security teams currently pay Splunk SOAR $100,000/year to help automate alert processing. It’s a click-and-drag workflow builder with webhooks, REST API integrations, and JSON processors. A security engineer would use it to build alert automations that look like this: (1) webhook to receive alert (e.g. unusual powershell cmd) from Microsoft Defender; (2) send yes/no Slackbot to ask employee about the alert; (3) if confirmed as suspicious, send malware sample to VirusTotal for report (4) collect evidence from previous steps and dump it into a ticket.<p>If $100k a year seems wildly expensive for a Zapier-like platform, you’d be half right. Splunk SOAR is actually a Zapier + log search + Jira ticketing system.<p>Log storage—that’s how Splunk turns a $99/month workflow automation tool into a pricey enterprise product. Every piece of evidence collected (e.g. Slackbot response, malware report, GeoIP enrichment) and every past workflow trail has to be searchable by a human incident responder or auditor. Security teams need to know why every alert escalated to a SEV1 or not.<p>My cofounder and I are data engineers who fell into this space. We heard our security friends constantly complain about being priced out of a SOAR (security orchestration, automation, and response platform) like Splunk SOAR.<p>We both wrote a lot of event-driven code at school (Master’s thesis) and work (Meta / PwC). We’re also early adopters of Quickwit / Tantivy, an OSS alternative to Elasticsearch / Apache Lucene that is cheaper and faster. It didn’t seem that difficult to build a cheaper open source SOAR, so we decided to do it.<p>Tracecat is also different as it can run in a single VM / laptop. Splunk SOAR and Tines are built for Fortune 10 needs, which means expensive Kubernetes clusters. Most security teams don’t need that scale, but are forced to pay the K8s “premium” (high complexity, hard to maintain). Tracecat uses OSS embedded databases (SQLite) and an event processing engine we built using Python 3.12 asyncio.<p>So far, we’ve just got a bare-bones alpha but you can already do quite a few things with it. e.g. trigger event-driven workflows from webhooks; use REST API integrations; parse responses using JSONPath; control flow using conditional blocks; store logs cheaply in Tantivy; open cases directly from workflows; prioritize and manage cases in a Jira-like table.<p>Tracecat uses Pydantic V2 for fast input / output validation and Zod for fast form validation. We care a lot about data quality! It’s also Apache-2.0 licensed so anyone can self-host the platform.<p>On our roadmap: integrations with popular security tools (Crowdstrike, Microsoft defender); pre-built workflows (e.g. investigating phishing email); better docs; more AI features like auto-labeling tickets, extracting data from unstructured text etc.<p>We’re still early so would love your feedback and opinions. Feel free to try us out or share it with your security friends. We have a cloud version up and running: <a href="https://platform.tracecat.com">https://platform.tracecat.com</a>.<p>Dear HN readers, we’d love to hear your incident response stories and the software you use (or not) to automate the work. Stories from security, site reliability engineering, or even physical systems like critical infrastructure monitoring are all very welcome!
Show HN: Jampack – Optimizes static websites as a post-processing step
Hi!<p>Jampack is a post-processing tool that takes the output of your Static Site Generator (aka SSG) and optimizes it for best user experience and best Core Web Vitals scores.<p>As of today it can:<p>- Optimize local images, CDN images or external images<p>- Optimize above-the-fold vs below-the-fold<p>- Limit images max width<p>- Inline critical CSS<p>- Prefetch links on scroll<p>- Improve browser compatibility<p>- Auto-fixes HTML issues<p>- Warn for HTML accessibility issues<p>- Compress all assets in the end<p>It processes directly the static output so it's compatible with any SSG or framework. We are intensively using it as a post-processing step to our Astro websites for example.<p>With Jampack, we end-up focusing more on how simple, readable and maintainable our code is, throw images of any size, and let it optimize for maximum performance.<p>We hope this can be helpful to lot of people!
Cheers,
Georges and the ‹div›RIOTS team!
Show HN: Glossarie – a new, immersive way to learn a language
Hi HN, For over two years I've been working on an App to learn languages (currently French, Italian and Spanish), together with my partner, a language teacher. I think it is finally ready to share with this community!<p>The idea is to introduce vocabulary and grammar whilst you read eBooks in your own language. I've found that it is easier to remember vocabulary 'in context' and with regular repetition. Plus you don't have to carve out dedicated time for language learning. Other apps require you to build a habit around various exercises or ‘games’, whereas lots of people already read books.<p>From testing with early users so far it's proving effective for building a basic understanding of a language and quickly getting to the point where you can read and broadly understand text in the target language. It’s even better in combination with other apps that help with listening/speaking like Pimsleur.<p>There were lots of technical challenges making this. It turned out to be (reassuringly) hard to get accuracy to an acceptable level, requiring a rabbit-hole into machine translation. There was a lot of testing required to optimise the engine that chooses the translations to show and to reduce the friction when reading books. And the backend to support uploading books is a beast in itself. I’d love to share details if there is interest.<p>Roadmap<p>- Accuracy - 100% accuracy is the target, but at present there can be errors. Feedback from users will be important here so that accuracy issues can be generalised and solved at scale. Errors can be reported within the app - please do so if you spot anything!<p>- Dynamic difficulty - rather than have a progression of difficulty levels I’d prefer to introduce vocabulary and grammar automatically in response to user progress, balancing against the friction of seeing unfamiliar words. There’s a lot ‘under the hood’ to manage this today, but plenty of room to improve.<p>- More practice features - to reinforce vocabulary/grammar and support writing, listening and speaking.<p>- Better eBook support - improving the formatting of eBooks within the app and providing more methods for finding good books to read.<p>Use of AI<p>- LLMs provided a step change in accuracy and have enabled a feature that explains translations and grammar to the user<p>- vastly improving the utility versus a year ago.<p>- I believe apps like this, which use AI to enhance or scale functionality rather than simply acting as a wrapper over APIs, will be the major beneficiaries as LLMs improve.<p>Take a look, and let me know your thoughts or questions!
Show HN: Glossarie – a new, immersive way to learn a language
Hi HN, For over two years I've been working on an App to learn languages (currently French, Italian and Spanish), together with my partner, a language teacher. I think it is finally ready to share with this community!<p>The idea is to introduce vocabulary and grammar whilst you read eBooks in your own language. I've found that it is easier to remember vocabulary 'in context' and with regular repetition. Plus you don't have to carve out dedicated time for language learning. Other apps require you to build a habit around various exercises or ‘games’, whereas lots of people already read books.<p>From testing with early users so far it's proving effective for building a basic understanding of a language and quickly getting to the point where you can read and broadly understand text in the target language. It’s even better in combination with other apps that help with listening/speaking like Pimsleur.<p>There were lots of technical challenges making this. It turned out to be (reassuringly) hard to get accuracy to an acceptable level, requiring a rabbit-hole into machine translation. There was a lot of testing required to optimise the engine that chooses the translations to show and to reduce the friction when reading books. And the backend to support uploading books is a beast in itself. I’d love to share details if there is interest.<p>Roadmap<p>- Accuracy - 100% accuracy is the target, but at present there can be errors. Feedback from users will be important here so that accuracy issues can be generalised and solved at scale. Errors can be reported within the app - please do so if you spot anything!<p>- Dynamic difficulty - rather than have a progression of difficulty levels I’d prefer to introduce vocabulary and grammar automatically in response to user progress, balancing against the friction of seeing unfamiliar words. There’s a lot ‘under the hood’ to manage this today, but plenty of room to improve.<p>- More practice features - to reinforce vocabulary/grammar and support writing, listening and speaking.<p>- Better eBook support - improving the formatting of eBooks within the app and providing more methods for finding good books to read.<p>Use of AI<p>- LLMs provided a step change in accuracy and have enabled a feature that explains translations and grammar to the user<p>- vastly improving the utility versus a year ago.<p>- I believe apps like this, which use AI to enhance or scale functionality rather than simply acting as a wrapper over APIs, will be the major beneficiaries as LLMs improve.<p>Take a look, and let me know your thoughts or questions!
Show HN: Lapdev, a new open-source remote dev environment management software
Show HN: magick.css – Minimalist CSS for Wizards
Mapping almost every law, regulation and case in Australia
Hey HN,<p>After months of hard work, I am excited to share the first ever semantic map of Australian law.<p>My map represents the first attempt to map Australian laws, cases and regulations across the Commonwealth, States and Territories semantically, that is, by their underlying meaning.<p>Each point on the map is a unique document in the Open Australian Legal Corpus, the largest open database of Australian law (which, full disclosure, I created). The closer any two points are on the map, the more similar they are in underlying meaning.<p>As I cover in my article, there’s a lot you can learn by mapping Australian law. Some of the most interesting insights to come out of this initiative are that:<p>⦁ Migration, family and substantive criminal law are the most isolated branches of case law on the map;<p>⦁ Migration, family and substantive criminal law are the most distant branches of case law from legislation on the map;<p>⦁ Development law is the closest branch of case law to legislation on the map;<p>⦁ Case law is more of a continuum than a rigidly defined structure and the borders between branches of case law can often be quite porous; and<p>⦁ The map does not reveal any noticeable distinctions between Australian state and federal law, whether it be in style, principles of interpretation or general jurisprudence.<p>If you’re interested in learning more about what the map has to teach us about Australian law or if you’d like to find out how you can create semantic maps of your own, check out the full article on my blog, which provides a detailed analysis of my map and also covers the finer details of how I built it, with code examples offered along the way.
Show HN: Dropflow, a CSS layout engine for node or <canvas>
For the last 5 years I've been working on a layout engine that targets CSS2 and some more modern properties.<p>Live demo: <a href="https://chearon.github.io/dropflow/" rel="nofollow">https://chearon.github.io/dropflow/</a><p>It matches browsers in all cases I can find where they agree, and it's fast. It supports `position`, `inline-block`, `z-index`, and complex properties like `float` and `vertical-align`. It doesn't support high-level layout like flexbox or grid yet, but you can get intrinsics to easily divide space yourself and paint multiple layout trees. It has a great text layout implementation, and supporting non-Latin scripts is a top priority.<p>I've wanted this to exist as far back as 2013, and the desire kept coming up: for a way to get detailed intrinsics, for high quality rich text layout to canvas and SVG, and for server-side rich text. We currently use it in CellEngine for our new canvas-based spreadsheet library to layout text in hundreds of thousands of cells, and will be using it soon to render PDFs with thousands of pages in a few seconds.
Show HN: Memories – FOSS Google Photos alternative built for high performance
Memories is a FOSS Google Photos alternative that you can self-host (it runs as a Nextcloud plugin).<p>Website: <a href="https://memories.gallery/" rel="nofollow">https://memories.gallery/</a><p>GitHub: <a href="https://github.com/pulsejet/memories">https://github.com/pulsejet/memories</a><p>Demo Server: <a href="https://demo.memories.gallery/apps/memories/" rel="nofollow">https://demo.memories.gallery/apps/memories/</a>
(demo runs in San Francisco on a free-tier cloud vm)<p>Memories has been built ground-up for high performance and is extremely fast when configured correctly. In our testing environment, it can load a timeline view with 100k photos in under 500ms, including query and rendering time!<p>Some features to highlight:<p>* A timeline similar to Google Photos where you can skip to any time in history instantly.<p>* AI-based tagging that runs locally on your server, identifying and tagging people and objects.<p>* Albums and external sharing.<p>* Metadata editing support<p>* A world map of your photos, supported both on mobile and the web<p>* Did I mention it's extremely fast?<p>Would love to hear feedback from the HN community! :)
Show HN: GritQL, a Rust CLI for rewriting source code
Hi everyone!<p>I’m excited to open source GritQL, a Rust CLI for searching and transforming source code.<p>GritQL comes from my experiences with conducting large scale refactors and migrations.<p>Usually, I would start exploring a codebase with grep. This is easy to start with, but most migrations end up accumulating additional requirements like ensuring the right packages are imported and excluding cases which don’t have a viable migration path.<p>Eventually, to build a complex migration, I usually ended up having to write a full codemod program with a tool like jscodeshift. This comes with its own problems:<p>- Most of the exploratory work has to be abandoned as you figure out how to represent your original regex search as an AST.
- Reading/writing a codemod requires mentally translating from AST names back to what source code actually looks like.
- Performance is often an afterthought, so iterating on a large codemod can be painfully slow.
- Codemod frameworks are language-specific, so if you’re hopping between multiple languages—or trying to migrate a shared API—you have to learn different tools.<p>GritQL is an attempt to develop a powerful middle ground:
- Exploratory analysis is easy: just put a code snippet in backticks and use $metavariables for placeholders.
- Incrementally add complexity by introducing side conditions with where clauses.
- Reuse named patterns to avoid rebuilding queries, and use shared patterns from our standard library for common tasks like ensuring modules are imported.
- Iterate on large codebases quickly: we use Rust for maximum performance<p>GritQL has already been used on thousands of repositories for complex migrations[1] but we're excited to collaborate more with the open source community.<p>[1] Ex. <a href="https://github.com/openai/openai-python/discussions/742">https://github.com/openai/openai-python/discussions/742</a>
Show HN: jnv: interactive JSON filter using jq
Show HN: Not sure you're talking to a human? Create a human check
Show HN: Godspeed is a fast, 100% keyboard oriented todo app for Mac
Hi everybody, today I'm launching version 1.0 of Godspeed, a todo manager built with two priorities in mind: speed and 100% keyboard orientation. Every action in Godspeed can be done from your keyboard and will respond instantly. It's like Superhuman for your todo list.<p>Godspeed has everything you expect in a todo manager like shared lists, labels, smart lists, boolean search operators, and cloud sync. If you're already a user of an app like Todoist or OmniFocus you should be able find everything you need in Godspeed.<p>I think the most appealing thing to most HN users would be the keyboard orientation. Literally every single action in Godspeed is doable from your keyboard. I'm so serious about this that I built "hardcore mode" to completely disable the mouse - this both helps you break the habit of reaching for your mouse, and keeps us honest about 100% hotkey support.<p>You can fully customize the hotkeys, but if you're into Vim or Emacs you'll feel right at home by default.<p>We've got a 2 week free trial with no limitations, and then offer subscription or one-time purchase options.<p>Thanks for checking out Godspeed, I'd love to hear your feedback!<p><a href="https://godspeedapp.com/" rel="nofollow">https://godspeedapp.com/</a>
Show HN: Open-source, browser-local data exploration using DuckDB-WASM and PRQL
Hey HN! We’ve built Pretzel, an open-source data exploration and visualization tool that runs fully in the browser and can handle large files (200 MB CSV on my 8gb MacBook air is snappy). It’s also reactive - so if, for example, you change a filter, all the data transform blocks after it re-evaluate automatically. You can try it here: <a href="https://pretzelai.github.io/" rel="nofollow">https://pretzelai.github.io/</a> (static hosted webpage) or see a demo video here: <a href="https://www.youtube.com/watch?v=73wNEun_L7w" rel="nofollow">https://www.youtube.com/watch?v=73wNEun_L7w</a><p>You can play with the demo CSV that’s pre-loaded (GitHub data of text-editor adjacent projects) or upload your own CSV/XLSX file. The tool runs fully in-browser—you can disconnect from the internet once the website loads—so feel free to use sensitive data if you like.<p>Here’s how it works: You upload a CSV file and then, explore your data as a series of successive data transforms and plots. For example, you might: (1) Remove some columns; (2) Apply some filters (remove nulls, remove outliers, restrict time range etc); (3) Do a pivot (i.e, a group-by but fancier); (4) Plot a chart; (5) Download the chart and the the transformed data. See screenshot: <a href="https://imgur.com/a/qO4yURI" rel="nofollow">https://imgur.com/a/qO4yURI</a><p>In the UI, each transform step appears as a “Block”. You can always see the result of the full transform in a table on the right. The transform blocks are editable - for instance in the example above, you can go to step 2, change some filters and the reactivity will take care of re-computing all the cells that follow, including the charts.<p>We wanted Pretzel to run locally in the browser <i>and</i> be extremely performant on large files. So, we parse CSVs with the fastest CSV parser (uDSV: <a href="https://github.com/leeoniya/uDSV">https://github.com/leeoniya/uDSV</a>) and use DuckDB-Wasm (<a href="https://github.com/duckdb/duckdb-wasm">https://github.com/duckdb/duckdb-wasm</a>) to do all the heavy lifting of processing the data. We also wanted to allow for chained data transformations where each new block operates on the result of the previous block. For this, we’re using PRQL (<a href="https://prql-lang.org/" rel="nofollow">https://prql-lang.org/</a>) since it maps 1-1 with chained data transform blocks - each block maps to a chunk of PRQL which when combined, describes the full data transform chain. (PRQL doesn’t support DuckDB’s Pivot statement though so we had to make some CTE based hacks).<p>There’s also an AI block: This is the only (optional) feature that requires an internet connection but we’re working on adding local model support via Ollama. For now, you can use your own OpenAI API key or use an AI server we provide (GPT4 proxy; it’s loaded with a few credits), specify a transform in plain english and get back the SQL for the transform which you can edit.<p>Our roadmap includes allowing API calls to create new columns; support for an SQL block with nice autocomplete features, and a Python block (using Pyodide to run Python in the browser) on the results of the data transforms, much like a jupyter notebook.<p>There’s two of us and we’ve only spent about a week coding this and fixing major bugs so there are still some bugs to iron out. We’d <i>love</i> for you to try this and to get your feedback!