I'm not here to defend DHH --- but I think "AI" has materially changed since 2024. I think that it's entirely reasonable to have shifted perspective on the technology and its applications since 2024.
I've never written code by hand, I've always used a text editor on my laptop. I still design and develop software with my brain, and in conversation and collaboration with my team and stakeholders --- and these days frequently an LLM. Sometimes (often) I make edits by hand, but it has reached a point where generating code by prompt is so much faster that it allows me to allocate more time and brainpower to the actual bottlenecks.
I'm sure a lot of the signatories on this list feel the same.
There's a lot here I agree with and a lot I disagree with. If I'm doing any kind of serious data work I'm probably not reaching for a spreadsheet for things like processing, manipulation, statistical analysis. But if I'm presenting tabular data, or god forbid editing it? I'm using a spreadsheet --- and I've built a whole side project out of making working with CSVs as tabular data as pleasant as opening my favorite text editor.
I'm very intrigued by AI note takers, but I'm absolutely unwilling to expose me or my clients to this exact problem.
The solution (theoretically) is a purely local note taker, but I haven't found one that's any good. Tried meetily and others in the same vein, including briefly rolling my own. The breakdown in the pipeline seems to be reliable local diarization and speaker identification; even if the transcription is good, when speakers aren't accurately identified and speech isn't well grouped, there's no rescuing it in the summary step.
> I'm very intrigued by AI note takers, but I'm absolutely unwilling to expose me or my clients to this exact problem
Unfortunately it’s mostly not up to you. It’s a weakest-link problem. It doesn’t matter if you don’t use a note taker AI, if even one person on the call uses one. Their tool doesn’t notify you and usually the person doesn’t either.
It also has the reverse impact to the person using the note taker, where people say less around them. Same as if I'm talking to someone with Meta glasses.
I wonder if the people who use these tools know the people they meet with speak less during their meetings, and then all of the participants have a post-meeting call without them to say what they really thought.
Thank you, great question! Hard one to answer, thought about it a lot and it's going to be the diarisation of more than 5+ speakers per audio stream (your microphone + system audio for a max of 10). I actually spent a lot of time that went completely nowhere trying to fine tune my own diarisation model, it was fun to a degree but painful to see my output end up worse than what I currently had after days of work. Having a bot join the call would be such an easy way of diarising, the call software has already done it for you, but feels like a bit of a cop out.
Two more improvements, audio quality improvements which is currently in the works and close to release and a new document generation model. I'm currently using a custom fine tuned Phi-4 (released December 2024!) model, that's _so old_ in the grand scheme of LLMs, I just haven't had time to benchmark and properly test some new models whilst this currently does a good job as it is. There has to be some gains here, but who knows!
I think this is just to capture the audio to ship off to their servers and do the crunching. You mentioned the word "extension" and thank you so much, I've been thinking about how to do integrations as it's something a few users have mentioned, but keep the whole "completely offline" angle. I could build standalone extensions that integrate with it if it's something a user wants. So damn obvious in hindsight!
Ahh yea as for the models:
Speech to text - Nvidia Parakeet TDT 0.6b V3
Diarisation - Nvidia Marblenet for the speech detection, TitaNet-Large for the embeddings and then using NeMo multi-scale to do clustering around them
I tried something similar by putting together a "global ledger" of speaker identities. This was more happening during the call than having a predefined one but I just couldn't get it to work properly. The issue being that as soon as some speech gets assigned to a new label or an incorrect one, everything ends up getting misaligned and gets messy quickly.
I might take another look into doing it in a different way that gradually builds up from successful calls, I just need to think of how to do this in a simple(ish) way for non-technical users and a way that still works well enough on low to mid tier laptops.
I know this is hn and not a product development meeting, but:
If you’re targeting data for people to use on the same call then requires more intense work, while if you’re targeting data for people to use after or on an ongoing basis (eg an established business meeting with staff/vendors/etc) then having a predefined one seems good. Same interface as a CRM: picture, some audio clips for users to choose from, and confidence scores on each section of the recording for cases where people sound similar or are talking over each other. Over time the diarization gets better as users accept/reject/tag samples and that work helps them feel more aligned with the tool.
100% looking at it from an after use basis, whilst there is live transcription, trying to do anything above that on 6 year old laptop CPU just grinds stuff to a halt.
Some great suggestions, appreciate you taking the time to write it out, it's given me some things to think about.
That’s a very fair concern. I completely understand why you’d want to avoid exposing yourself or your clients to that risk.
I also agree that diarization and speaker identification are probably one of the hardest parts to get right if the speakers aren’t separated correctly, even a great summary won’t fix it.
We’re looking into more privacy preserving approaches for MindNote (a multimodal AI Notetaker), including local/on-device processing, so this is really useful feedback. Thanks for sharing your experience!
> The breakdown in the pipeline seems to be reliable local diarization
Yep, diarization just hasn't been well solved yet. As soon as it has, the quality in note-takers, meeting transcripts, etc, will sky-rocket across the board.
Drafts.app is hideous but it has great routing capability and a dictation feature.
I use it to capture what my thoughts and route based on content.
I have a button that routes to an internal voice agent named KiKo.
Ideas get routed to Things or todoist.
Issues get routed to github, etc.
It’s one universal surface for note capture.
My ideal use case is to pipe audio from both my microphone and capture system audio so things like our weekly team standup or my 1:1s with my devs can all have reliable, decent notes without taking me out of the flow of the conversation.
I think clearly the _leader_ in the space is granola, but I'm just not going to use a cloud provider for this.
Still plugging away on Cassava, a CSV editor that sits somewhere between sublime text and Excel: https://cassava.dev/. Our most recent releases added first-class xls/xlsx file opening and an autofill handle.
The project goals are simple:
* Treat CSV files like first-class spreadsheets; don't do anything that isn't supported by serializing to/from CSV files
* Be as performant as your favorite text editor while retaining the ergonomics of a tabular data editor
This past week I've been working on the spreadsheets in https://blackbear.app hoping to get the latest changes released sometime today -- how do you think they stack up? also how are you testing performance?
(note, you can test the spreadsheets by continuing through the login page at https://my.blackbear.app as an anonymous user)
I've got a suite of CSVs that represent both edge case and performance issues, and I script timing opening/common operations using Apple Scripting. It's not perfect, but it gives us a sense if we're introducing back-breaking regressions. I try for our large files to test specifically with real-world, large data dumps from US government sources; I feel these are representative of actual large-CSV workloads. You can see me popping off about it on bluesky: https://bsky.app/profile/wyattkirby.com/post/3mnfvma4cgk2g
We're not necessarily aiming to be the fastest application in the world; find/replace is probably still faster to just do sed in the terminal. But if you're looking to do something like sort, filter, actually engage with the tabular data, then we can handle hundreds of thousands of rows --- files that excel won't even open.
I'll take a look at blackbear. One core difference I see is that we're a native app, fully offline. There is a single handshake with the licensing server on app start, but it's optional. License validation is handled fully locally, and missing network access is non-blocking for any features.
Look cool! This might turn out to be a really nice tool to use when teaching SQL to my students. If you ever consider an educational license, of course.
The integrated SQL bench runs a full duckdb so it should be super accessible. Let me know what kind of licensing terms you'd need to make this work --- you can drop me a line at wyatt[at]apsis[dot]io.
I've spent the last 8 weeks or so building the spreadsheet tool I want to see in the world. CSVs as first-class citizens with the ergonomics and speed of my text editor. It's been a great opportunity to explore building GUIs in rust, and to really experiment with coding assistants.
I like working in native apps on my Mac for spreadsheets, so I've used Numbers a little bit, but if you have the same iCloud file open on two machines they conflict and don't merge nicely. Does this have a better story there?
Almost certainly not; it really depends on how iCloud handles the sync. Cassava supports (at the moment) CSV (and its variants TSV, etc.) and JSON files. If your sync mechanism works well for those files in a text editor like vscode or sublime, then it will work well with Cassava. If not, there's not much we can do on our end - that's really a problem with how the sync mechanism works.
Replying for the ~5 people who happened to download earlier this afternoon, the rc20 build that was uploaded earlier today was missing the update server URL. Re-downloading rc20 should have a corrected build that will notify you of any updates in the future.
Linux support is there and working, half my team uses arch btw. Windows is working, I just don't build for it right now.
Excel is cripplingly slow (thought more capable). I don't like using text editors for sheet data; it's simply not as ergonomic to browse a CSV as a text file.
My experience thus far is that the local models are a) pretty slow and b) prone to making broken tool calls. Because of (a) the iteration loop slows down enough to where I wander off to do other tasks, meaning that (b) is way more problematic because I don't see it for who knows how long.
This is, however, a major improvement from ~6 months ago when even a single token `hi` from an agentic CLI could take >3 minutes to generate a response. I suspect the parallel processing of LMStudio 0.4.x and some better tuning of the initial context payload is responsible.
Open models are trained more generically to work with "Any" tool.
Closed models are specifically tuned with tools, that model provider wants them to work with (for example specific tools under claude code), and hence they perform better.
I think this will always be the case, unless someone tunes open models to work with the tools that their coding agent will use.
> Open models are trained more generically to work with "Any" tool. Closed models are specifically tuned with tools, that model provider wants them to work with (for example specific tools under claude code), and hence they perform better.
Some open models have specific training for defined tools (a notable example is OpenAI GPT-OSS and its "built in" tools for browser use and python execution (they are called built in tools, but they are really tool interfaces it is trained to use if made available.) And closed models are also trained to work with generic tools as well as their “built in” tools.
I see this as the next great wave of work for me and my team. We sustained our business for a good 5–8 years on rescuing legacy code from offshore teams as small-to-medium sized companies re-shored their contract devs. We're currently in a demand lull as these same companies have started relying heavily on LLMs to "write" "code" --- but as long as we survive the next 18 months, I see a large opportunity as these businesses start to feel the weight of their accumulated tech debt accrued by trusting claude when it says "your code is now production ready."
Looking forward to trying this out. An early comment: I would love to be able to override tool descriptions and system prompts from a config. Especially when working with local models, context management is king and the tool descriptions can be a hidden source of uncontrollable context.