The best Hacker News stories from Show from the past day
Latest posts:
Show HN: I built a tool to expand your network (that introverts will love)
As someone who struggles with social anxiety, expanding my network through traditional means has always been challenging. I found existing networking apps either too spammy (LinkedIn) or too much like professional dating (Bumble Bizz), and they just didn’t work for me.<p>About a year ago, I developed a matching system for a local startup accelerator. This system connected founders, mentors, and investors based on industries, skills, and job functions, facilitating over 5,000 meetings that led to some amazing outcomes. Inspired by this success, I enhanced the system to focus on email introductions. Here’s how it works:
- It analyzes backgrounds and interests.
- It sends intro proposals to each person.
- If both respond, it makes the intro.<p>My goal is to help people meet interesting contacts without the stress, using email to keep the process simple and integrated into daily routines.
I’d love for you to try it out and share your feedback. Your thoughts and suggestions for improvement are greatly appreciated!
Show HN: Convert HTML DOM to semantic markdown for use in LLMs
Show HN: Convert HTML DOM to semantic markdown for use in LLMs
Show HN: Convert HTML DOM to semantic markdown for use in LLMs
Show HN: Convert HTML DOM to semantic markdown for use in LLMs
Show HN: Lisp in C#
Show HN: Briefer – Multiplayer notebooks with schedules, SQL, and built-in LLMs
Hi HN! We're Lucas and Lucas from Briefer and we're building better notebooks.<p>Our notebooks are kind of a mix between Notion and Jupyter with extra features, like the ability to schedule notebooks, turn them into dashboards and apps, and write SQL queries whose results turn into data frames automatically.<p>We're building better notebooks because we think they're a great idea poorly executed - for three reasons.<p>The first problem with notebooks is that they're difficult to share. Non-technical people don't want to download docker containers and install Python libraries to see what the data team is doing. Then, the data team takes screenshots of their work and pastes them somewhere else. The issue with this approach is that the data gets stale, and the output is not interactive, so it's difficult to get feedback and iterate.<p>The second problem with notebooks is that they get too messy too quickly. One morning you have 10 blocks, and by the end of the day you have 192, but only six of them are meant to be seen by other people and the rest is just you jiu-jitsuing with the data. Consequently, even if non-technical people could see your work, they'd have a hard time figuring out what's happening.<p>The third problem with notebooks is that it takes too much work to do simple things like when you want to query a database. In that case, you need to have the database credentials in your machine, and you have to write a bunch of wrapper code. Calling APIs, plotting simple graphs, and adding interactive components is equally as annoying.<p>We're solving the sharing problem by bringing notebooks to the cloud (so you can schedule them) and using CRDTs to manage their state. Whenever you edit a Briefer notebook, we reconcile that using Yjs, and then propagate it to everyone else who's editing that notebook. Regarding compute instances, each workspace gets its own, and we provision them on demand.<p>By the way, we manage the execution state of your blocks using Yjs too, which makes it much more stable and responsive across all clients. When you click "run", for example, we don't immediately send a request to run the block. Instead, we change the block's state to "execution-requested". Then, the observers in the back-end react to the change and update the block's state with the results. In other words, the front end and the server communicate with each other through the notebook's state. One side updates the state, and the other reacts.<p>To solve the "messiness" issue, we've invested a lot of time in designing clean notebooks and allowing you to organize blocks in ways that make them more presentable. In Briefer, you can group multiple blocks into tabs and decide which blocks appear in the published version of your notebook. That way, you can hide all that data wrangling and focus on results. We also know that a vertical format is not always the best way to display results, so you can use your notebook's outputs to build dashboards too.<p>Last but not least, we're reducing friction in simple tasks like plotting graphs and querying databases. In Briefer, you can plot graphs using a click-through interface, and if you need to plot something more intricate like a Sankey chart there's also a built-in AI assistant that you can prompt to generate code. When it comes to queries, we turn their results into dataframes automatically, and you can use SQL to query uploaded files too (we use DuckDB for that).<p>We're really happy we get to show this to you all, thank you for reading about it! Please let us know your thoughts and questions in the comments.
Show HN: Briefer – Multiplayer notebooks with schedules, SQL, and built-in LLMs
Hi HN! We're Lucas and Lucas from Briefer and we're building better notebooks.<p>Our notebooks are kind of a mix between Notion and Jupyter with extra features, like the ability to schedule notebooks, turn them into dashboards and apps, and write SQL queries whose results turn into data frames automatically.<p>We're building better notebooks because we think they're a great idea poorly executed - for three reasons.<p>The first problem with notebooks is that they're difficult to share. Non-technical people don't want to download docker containers and install Python libraries to see what the data team is doing. Then, the data team takes screenshots of their work and pastes them somewhere else. The issue with this approach is that the data gets stale, and the output is not interactive, so it's difficult to get feedback and iterate.<p>The second problem with notebooks is that they get too messy too quickly. One morning you have 10 blocks, and by the end of the day you have 192, but only six of them are meant to be seen by other people and the rest is just you jiu-jitsuing with the data. Consequently, even if non-technical people could see your work, they'd have a hard time figuring out what's happening.<p>The third problem with notebooks is that it takes too much work to do simple things like when you want to query a database. In that case, you need to have the database credentials in your machine, and you have to write a bunch of wrapper code. Calling APIs, plotting simple graphs, and adding interactive components is equally as annoying.<p>We're solving the sharing problem by bringing notebooks to the cloud (so you can schedule them) and using CRDTs to manage their state. Whenever you edit a Briefer notebook, we reconcile that using Yjs, and then propagate it to everyone else who's editing that notebook. Regarding compute instances, each workspace gets its own, and we provision them on demand.<p>By the way, we manage the execution state of your blocks using Yjs too, which makes it much more stable and responsive across all clients. When you click "run", for example, we don't immediately send a request to run the block. Instead, we change the block's state to "execution-requested". Then, the observers in the back-end react to the change and update the block's state with the results. In other words, the front end and the server communicate with each other through the notebook's state. One side updates the state, and the other reacts.<p>To solve the "messiness" issue, we've invested a lot of time in designing clean notebooks and allowing you to organize blocks in ways that make them more presentable. In Briefer, you can group multiple blocks into tabs and decide which blocks appear in the published version of your notebook. That way, you can hide all that data wrangling and focus on results. We also know that a vertical format is not always the best way to display results, so you can use your notebook's outputs to build dashboards too.<p>Last but not least, we're reducing friction in simple tasks like plotting graphs and querying databases. In Briefer, you can plot graphs using a click-through interface, and if you need to plot something more intricate like a Sankey chart there's also a built-in AI assistant that you can prompt to generate code. When it comes to queries, we turn their results into dataframes automatically, and you can use SQL to query uploaded files too (we use DuckDB for that).<p>We're really happy we get to show this to you all, thank you for reading about it! Please let us know your thoughts and questions in the comments.
Show HN: Briefer – Multiplayer notebooks with schedules, SQL, and built-in LLMs
Hi HN! We're Lucas and Lucas from Briefer and we're building better notebooks.<p>Our notebooks are kind of a mix between Notion and Jupyter with extra features, like the ability to schedule notebooks, turn them into dashboards and apps, and write SQL queries whose results turn into data frames automatically.<p>We're building better notebooks because we think they're a great idea poorly executed - for three reasons.<p>The first problem with notebooks is that they're difficult to share. Non-technical people don't want to download docker containers and install Python libraries to see what the data team is doing. Then, the data team takes screenshots of their work and pastes them somewhere else. The issue with this approach is that the data gets stale, and the output is not interactive, so it's difficult to get feedback and iterate.<p>The second problem with notebooks is that they get too messy too quickly. One morning you have 10 blocks, and by the end of the day you have 192, but only six of them are meant to be seen by other people and the rest is just you jiu-jitsuing with the data. Consequently, even if non-technical people could see your work, they'd have a hard time figuring out what's happening.<p>The third problem with notebooks is that it takes too much work to do simple things like when you want to query a database. In that case, you need to have the database credentials in your machine, and you have to write a bunch of wrapper code. Calling APIs, plotting simple graphs, and adding interactive components is equally as annoying.<p>We're solving the sharing problem by bringing notebooks to the cloud (so you can schedule them) and using CRDTs to manage their state. Whenever you edit a Briefer notebook, we reconcile that using Yjs, and then propagate it to everyone else who's editing that notebook. Regarding compute instances, each workspace gets its own, and we provision them on demand.<p>By the way, we manage the execution state of your blocks using Yjs too, which makes it much more stable and responsive across all clients. When you click "run", for example, we don't immediately send a request to run the block. Instead, we change the block's state to "execution-requested". Then, the observers in the back-end react to the change and update the block's state with the results. In other words, the front end and the server communicate with each other through the notebook's state. One side updates the state, and the other reacts.<p>To solve the "messiness" issue, we've invested a lot of time in designing clean notebooks and allowing you to organize blocks in ways that make them more presentable. In Briefer, you can group multiple blocks into tabs and decide which blocks appear in the published version of your notebook. That way, you can hide all that data wrangling and focus on results. We also know that a vertical format is not always the best way to display results, so you can use your notebook's outputs to build dashboards too.<p>Last but not least, we're reducing friction in simple tasks like plotting graphs and querying databases. In Briefer, you can plot graphs using a click-through interface, and if you need to plot something more intricate like a Sankey chart there's also a built-in AI assistant that you can prompt to generate code. When it comes to queries, we turn their results into dataframes automatically, and you can use SQL to query uploaded files too (we use DuckDB for that).<p>We're really happy we get to show this to you all, thank you for reading about it! Please let us know your thoughts and questions in the comments.
Show HN: Briefer – Multiplayer notebooks with schedules, SQL, and built-in LLMs
Hi HN! We're Lucas and Lucas from Briefer and we're building better notebooks.<p>Our notebooks are kind of a mix between Notion and Jupyter with extra features, like the ability to schedule notebooks, turn them into dashboards and apps, and write SQL queries whose results turn into data frames automatically.<p>We're building better notebooks because we think they're a great idea poorly executed - for three reasons.<p>The first problem with notebooks is that they're difficult to share. Non-technical people don't want to download docker containers and install Python libraries to see what the data team is doing. Then, the data team takes screenshots of their work and pastes them somewhere else. The issue with this approach is that the data gets stale, and the output is not interactive, so it's difficult to get feedback and iterate.<p>The second problem with notebooks is that they get too messy too quickly. One morning you have 10 blocks, and by the end of the day you have 192, but only six of them are meant to be seen by other people and the rest is just you jiu-jitsuing with the data. Consequently, even if non-technical people could see your work, they'd have a hard time figuring out what's happening.<p>The third problem with notebooks is that it takes too much work to do simple things like when you want to query a database. In that case, you need to have the database credentials in your machine, and you have to write a bunch of wrapper code. Calling APIs, plotting simple graphs, and adding interactive components is equally as annoying.<p>We're solving the sharing problem by bringing notebooks to the cloud (so you can schedule them) and using CRDTs to manage their state. Whenever you edit a Briefer notebook, we reconcile that using Yjs, and then propagate it to everyone else who's editing that notebook. Regarding compute instances, each workspace gets its own, and we provision them on demand.<p>By the way, we manage the execution state of your blocks using Yjs too, which makes it much more stable and responsive across all clients. When you click "run", for example, we don't immediately send a request to run the block. Instead, we change the block's state to "execution-requested". Then, the observers in the back-end react to the change and update the block's state with the results. In other words, the front end and the server communicate with each other through the notebook's state. One side updates the state, and the other reacts.<p>To solve the "messiness" issue, we've invested a lot of time in designing clean notebooks and allowing you to organize blocks in ways that make them more presentable. In Briefer, you can group multiple blocks into tabs and decide which blocks appear in the published version of your notebook. That way, you can hide all that data wrangling and focus on results. We also know that a vertical format is not always the best way to display results, so you can use your notebook's outputs to build dashboards too.<p>Last but not least, we're reducing friction in simple tasks like plotting graphs and querying databases. In Briefer, you can plot graphs using a click-through interface, and if you need to plot something more intricate like a Sankey chart there's also a built-in AI assistant that you can prompt to generate code. When it comes to queries, we turn their results into dataframes automatically, and you can use SQL to query uploaded files too (we use DuckDB for that).<p>We're really happy we get to show this to you all, thank you for reading about it! Please let us know your thoughts and questions in the comments.
Show HN: Zerox – Document OCR with GPT-mini
This started out as a weekend hack with gpt-4-mini, using the very basic strategy of "just ask the ai to ocr the document".<p>But this turned out to be better performing than our current implementation of Unstructured/Textract. At pretty much the same cost.<p>I've tested almost every variant of document OCR over the past year, especially trying things like table / chart extraction. I've found the rules based extraction has always been lacking. Documents are meant to be a visual representation after all. With weird layouts, tables, charts, etc. Using a vision model just make sense!<p>In general, I'd categorize this solution as slow, expensive, and non deterministic. But 6 months ago it was impossible. And 6 months from now it'll be fast, cheap, and probably more reliable!
Show HN: Zerox – Document OCR with GPT-mini
This started out as a weekend hack with gpt-4-mini, using the very basic strategy of "just ask the ai to ocr the document".<p>But this turned out to be better performing than our current implementation of Unstructured/Textract. At pretty much the same cost.<p>I've tested almost every variant of document OCR over the past year, especially trying things like table / chart extraction. I've found the rules based extraction has always been lacking. Documents are meant to be a visual representation after all. With weird layouts, tables, charts, etc. Using a vision model just make sense!<p>In general, I'd categorize this solution as slow, expensive, and non deterministic. But 6 months ago it was impossible. And 6 months from now it'll be fast, cheap, and probably more reliable!
Show HN: Zerox – Document OCR with GPT-mini
This started out as a weekend hack with gpt-4-mini, using the very basic strategy of "just ask the ai to ocr the document".<p>But this turned out to be better performing than our current implementation of Unstructured/Textract. At pretty much the same cost.<p>I've tested almost every variant of document OCR over the past year, especially trying things like table / chart extraction. I've found the rules based extraction has always been lacking. Documents are meant to be a visual representation after all. With weird layouts, tables, charts, etc. Using a vision model just make sense!<p>In general, I'd categorize this solution as slow, expensive, and non deterministic. But 6 months ago it was impossible. And 6 months from now it'll be fast, cheap, and probably more reliable!
Show HN: Shade/Bs – Modern Web UIs Without Node.js
Show HN: OpenDataCapture an electronic data capture platform for data collection
Hi HN,<p>We're the Douglas Neuroinformatics Platform[1], and we've been working on Open Data Capture, a web-based electronic data capture (EDC) platform for continuous clinical and research data collection. You can use it to administer instruments (like forms and interactive tasks) either in-person or remotely.<p>The platform is based on a fundamentally longitudinal data model. Unlike other EDC platforms, which are centered around the concept of a study with rigid timepoints, Open Data Capture is designed for continuous data capture. Data is associated with a given session, which includes metadata such as date, time, and mode (i.e., in-person or remote).<p>We've designed the system around the core restriction that many hospital institutions demand that data remain on-premise, while clinician-researchers often want to evaluate clients outside the institution with research questions. This has resulted in our innovative gateway concept, where assigned remote assessments are pushed onto an internet accessible service, and responses are encrypted in-place with HPKE[2] until the backend pulls them into the backend database. This makes the deployment firewall-friendly provided you can launch a minimal VPS or VM host somewhere globally accessible.<p>We're also a big fan of making things easy to deploy, so we supply a docker-compose stack which can bring up a demo instance easily to run locally.<p>The platform is free, open source, and written in TypeScript, with a NoSQL database underneath. Users can write instruments in TypeScript using a type-safe declarative form system (with native i18n support built in) or wrap and integrate completely arbitrary interactive tasks written in JavaScript (with optional support for TypeScript and JSX). Under the hood, this is based on dynamic imports and native ESM. There’s a browser-based IDE (the Instrument Playground) with live reloading and full Intellisense where you can try creating your own instruments.<p>We have a local deployment going live at our institution and appropriately-licensed (free) instruments we're deploying here will be integrated directly into the codebase.<p>Our future plans include expanding our instrument types to allow for binary data storage with an s3-like backend, and with abstractions for data types, like actigraphy, and MRI.<p>Check it out on GitHub[3], try the Instrument Playground[4], or see the Live Demo[5].<p>Would love to hear everybody’s thoughts!<p>Links:<p>[1] <a href="https://github.com/DouglasNeuroInformatics/">https://github.com/DouglasNeuroInformatics/</a><p>@gdevenyi @joshunrau<p>[2] <a href="https://datatracker.ietf.org/doc/rfc9180/" rel="nofollow">https://datatracker.ietf.org/doc/rfc9180/</a><p>[3] <a href="https://github.com/DouglasNeuroInformatics/OpenDataCapture">https://github.com/DouglasNeuroInformatics/OpenDataCapture</a><p>[4] <a href="https://playground.opendatacapture.org" rel="nofollow">https://playground.opendatacapture.org</a><p>[5] <a href="https://demo.opendatacapture.org" rel="nofollow">https://demo.opendatacapture.org</a>
Show HN: OpenDataCapture an electronic data capture platform for data collection
Hi HN,<p>We're the Douglas Neuroinformatics Platform[1], and we've been working on Open Data Capture, a web-based electronic data capture (EDC) platform for continuous clinical and research data collection. You can use it to administer instruments (like forms and interactive tasks) either in-person or remotely.<p>The platform is based on a fundamentally longitudinal data model. Unlike other EDC platforms, which are centered around the concept of a study with rigid timepoints, Open Data Capture is designed for continuous data capture. Data is associated with a given session, which includes metadata such as date, time, and mode (i.e., in-person or remote).<p>We've designed the system around the core restriction that many hospital institutions demand that data remain on-premise, while clinician-researchers often want to evaluate clients outside the institution with research questions. This has resulted in our innovative gateway concept, where assigned remote assessments are pushed onto an internet accessible service, and responses are encrypted in-place with HPKE[2] until the backend pulls them into the backend database. This makes the deployment firewall-friendly provided you can launch a minimal VPS or VM host somewhere globally accessible.<p>We're also a big fan of making things easy to deploy, so we supply a docker-compose stack which can bring up a demo instance easily to run locally.<p>The platform is free, open source, and written in TypeScript, with a NoSQL database underneath. Users can write instruments in TypeScript using a type-safe declarative form system (with native i18n support built in) or wrap and integrate completely arbitrary interactive tasks written in JavaScript (with optional support for TypeScript and JSX). Under the hood, this is based on dynamic imports and native ESM. There’s a browser-based IDE (the Instrument Playground) with live reloading and full Intellisense where you can try creating your own instruments.<p>We have a local deployment going live at our institution and appropriately-licensed (free) instruments we're deploying here will be integrated directly into the codebase.<p>Our future plans include expanding our instrument types to allow for binary data storage with an s3-like backend, and with abstractions for data types, like actigraphy, and MRI.<p>Check it out on GitHub[3], try the Instrument Playground[4], or see the Live Demo[5].<p>Would love to hear everybody’s thoughts!<p>Links:<p>[1] <a href="https://github.com/DouglasNeuroInformatics/">https://github.com/DouglasNeuroInformatics/</a><p>@gdevenyi @joshunrau<p>[2] <a href="https://datatracker.ietf.org/doc/rfc9180/" rel="nofollow">https://datatracker.ietf.org/doc/rfc9180/</a><p>[3] <a href="https://github.com/DouglasNeuroInformatics/OpenDataCapture">https://github.com/DouglasNeuroInformatics/OpenDataCapture</a><p>[4] <a href="https://playground.opendatacapture.org" rel="nofollow">https://playground.opendatacapture.org</a><p>[5] <a href="https://demo.opendatacapture.org" rel="nofollow">https://demo.opendatacapture.org</a>
Show HN: TinkerBird – A Chrome-native vector database
Show HN: TinkerBird – A Chrome-native vector database
Show HN: A source-available billing system I've spent 18 months building
Show HN: A source-available billing system I've spent 18 months building