HN user

gnulinux

6,377 karma
Posts16
Comments2,266
View on HN

run on postgresql with no overhead at all

Citation needed. I love postgres as much as the next person, but it does have more overhead than Sqlite which is in an in-process db linked through compiled C code, it doesn't run as a separate server. Very significant difference that when you use Sqlite db, there is typically no db process other than your application logic, unless you implement the server yourself. If you don't want your application to have multiple processes (say, as a toy example) then it totally makes sense to prefer Sqlite just for this reason. Sqlite and postgres are different tools, they serve different purposes.

My 2 cents (I hope I don't offend anyone, and of course Emacs community is amazing). I've been using Emacs full-time since ~2010 but I must admit it's been more like part-time along with VSCode since ~2024.

This is largely a discoverability problem

In my experience it's not a discoverability problem at all. Not even a little bit. My problem with emacs batteries has always been stability between different combinations of packages. I know how to use dired, I know how to install elisp packages, I know how to write emacs lisp myself. The issue with emacs is that it's difficult to create large packages with "batteries" because any additional package added can bork some random, seemingly unrelated package. E.g. back in the day (maybe around ~2020s or a bit before?) I've been using Spacemacs without vim keybinding, and although batteries were included and I was happy, this issue I mentioned above was even bigger. Because I constantly had to deal with installing a package and discovering that it broke some unrelated LSP, programming, or autocomplete package. It gets quite a bit frustrating at some point. Since this LLM madness started, I never really installed anything LLM related to Emacs, and have been using other text editor for LLM related stuff, Emacs for everything else (especially if there is a strong Emacs package, e.g. agda2-mode is incredibly good, almost flawless!)

Again, just my humble two cents. Obvious Emacs is amazing, and in many ways it's still my go-to, I just think that the biggest issue for me has always been randomly broken packages. Maybe I'm a terrible elisp programmer, that's possible! But I've been using emacs everyday for decades, so idk...

To understand what's happening here, I'd recommend you to first understand Representation theory: https://en.wikipedia.org/wiki/Representation_theory

In representation theory we reduce problems of algebra to problems of linear algebra. E.g. the standard example is to find representations of groups, this way we can represent group operations as matrix operations. We do this because (1) linear algebra is mathematically very well-understood, (2) in terms of applications, linear algebra is computationally fast, faster than implementing the group with code manually (at least, in general).

In the OP post, author reduces quiver (which is a particular kind of algebra) to linear algebra. Once this is done, the intention is to solve problems of quivers in the language of linear algebra.

Quiver (a directed graph with multiple edges) is a standard mathematical term:

https://en.wikipedia.org/wiki/Quiver_(mathematics)

https://ncatlab.org/nlab/show/quiver

A quiver is simply just the data of a category, i.e. a "category" without any of the laws, namely identity and composition.

They're not isomorphic to DAGs since Quivers can have multiple edges between the same set of vertices, directed multigraphs, if you will. There is also no requirement of acyclicity (DAGs are acyclic).

For example, in the category of Sets, vertices are sets and edges are functions between sets, so between e.g. N and N there will be infinitely many edges (all functions between natural numbers) with a particular distinguished identity edge that maps f(n) = n due to category laws. So if you turn the category of Sets to a quiver, you'll have infinitely many edges N -> N and one of them will happen to be the identity function `f(n) = n` but you "forgot" its "identity" relationship/law when you reduced the category to a quiver. This is not a graph, since within your data you need to express that there are other edges between N -> N for example `f(n) = 2*n` is another edge (we can call these multigraphs).

Thank you so much for this! I've been working on exactly this problem this week (which OpenRouter providers have the highest cache rate on average) because cache cost is sometimes half your cost: I'd much rather use a provider with more input caching with a more expensive/better LLM. Your results and lists seem more comprehensive than what I've done so far. Very helpful!

Calling current AI subscription services (especially Claude) "flat rate" (implying infinite access for a flat fee) is misleading. There are pretty strict hourly, daily, weekly, and monthly limits. So there is a pretty easy-to-reach limit for all these subscriptions. They're hardly unlimited, and given how easy it is to run into limits, it's likely not super complicated/low-stddev for an accounting department to figure out avg cost per customer.

Mistral Medium 3.5 3 months ago

This github thread is incredible, thanks for sharing. This link should be its own HN topic.

They're still legal tender, you can pay things with them. They just stopped producing new ones. It's supposedly permanent, but they can continue producing it any time in the future if they really wanted to.

I experience a similar sensation. I even feel it for my own self. Sometimes I go weeks, months just thinking about AI, productivity, hustling, taxes etc and then suddenly something with a bit of humanity and weird shows up and I am relieved. It's not completely lost (for now).

Even in this thread people underestimate how good e.g. DuckDB can be if you swallow its quirks. Yeah SQL has many problems, but with a slightly extended language with QoL features and seamless parallelism DuckDB is extremely productive if you want to crunch bunch of numbers in the order of minutes, hours etc (not real time).

Sometimes I have a problem, I just generate bunch of "possible solutions" with a constraint solver (e.g. Minizinc) which generates GBs of CSVs describing bunch of solutions, then let DuckDB analyze which ones are suitable, DuckDB is amazing.

There are ways to do this efficiently but it'd have to be over engineered and thus probably not worth it. You write the code in C/C++/Rust or similar and compile to WebAssembly. Then package it all in the thinnest wrapper you can find, of which I'm familiar with: https://tauri.app/ This gets you a "webpage" that runs C++ which you can let your customers install and use as a desktop app. Your mileage will vary.

It all depends on how powerful computers you want to support, if you assume your users will allow WebGPU use and your application needs 2D or 3D graphics (or more niche, GPGPU compute) imho Godot engine is actually pretty good to develop any web app (not just games) since it can compile its shader language down to WebGPU. Again, you'll probably need to write most of the code in C++ and compile to WebAssembly, which is pretty doable with Godot. If you just need graphics and very light CPU processing, GDScript will be enough. Once you do this you still need to wrap the webpage as a desktop app, I think Chrome browser has tools that can help with that.

The other obvious way is to use something like Electron and writing most of the code in Javascript. This will probably get you far if you need something simple but the memory and CPU usage will be much higher than necessary. Since the app ends up being so bloated, I personally don't like things approach, but apps like VSCode exist.

I agree with you, I consistently find Gemini 2.5 Pro better than Claude and GPT-5 for the following cases:

* Creative writing: Gemini is the unmatched winner here by a huge margin. I would personally go so far as to say Gemini 2.5 Pro is the only borderline kinda-sorta usable model for creative writing if you squint your eyes. I use it to criticize my creative writing (poetry, short stories) and no other model understands nuances as much as Gemini. Of course, all models are still pretty much terrible at this, especially in writing poetry.

* Complex reasoning (e.g. undergrad/grad level math): Gemini is the best here imho by a tiny margin. Claude Opus 4.1 and Sonnet 4.5 are pretty close but imho Gemini 2.5 writes more predictably correct answers. My bias is algebra stuff, I usually ask things about commutative algebra, linear algebra, category theory, group theory, algebraic geometry, algebraic topology etc.

On the other hand Gemini is significantly worse than Claude and GPT-5 when it comes to agentic behavior, such as searching a huge codebase to answer an open ended question and write a refactor. It seems like its tool calling behavior is buggy and doesn't work consistently in Copilot/Cursor.

Overall, I still think Gemini 2.5 Pro is the smartest overall model, but of course you need to use different models for different tasks.

No, I didn't misread, input can be self-generated of course. If you're writing a system that's designed like UserInput -> [BlackBox] -> Output, clearly user input won't be auto-generated. But if you factor [BlackBox] into a system like A -> B -> C, A -> D -> C, C -> Output, then each of those arrows will represent an input into the next system that was generated by something our devs wrote. This could be bunch of jsonlines (related to this thread) interpreted as string, a database, some in-memory structure, whatever.

Exactly, knowing what we know about anthropology, it's extremely unlikely cuneiform was the oldest writing. What's more likely is that other human groups must have invented ways for storing information, but they didn't survive.

Hard to know but if you could express "traumatically" as a number, and "over-trained" as a number, it seems like we'd expect "traumatically" + "over-trained" to be close to "traumatically over-trained" as a number. LLMs work in mysterious ways.

GC is ok as long as you aren't writing some factorio-like etc. Modern computers are perfectly fine doing shit ton of useless stuff 120 times a second without blinking an eye.

Wow, I did a very similar thing on the first date with my now wife. I explained the halting problem, and Godel's incompleteness theorems. We also talked about her (biomedical) research, so it wasn't a one sided conversation.

I think dominating on a first date is a risk (which I was mindful of) but just being yourself, and talking about something you're truly passionate about is the key.

What do you think is the "intended purpose"? The fascinating and beautiful thing about the library systems in US is that there is no reason to have a purpose, you can literally just sit down and look outside the window. Breakneck-speed-modern-life needs this. I want a place to stop, think, read, write, listen... just somewhere to be human without fees for a second.

It sounds like you experienced this in some American city and generalized to all? This absolutely not true for Boston Public Library which is an immensely convenient place to WFH, read, or write. I also never experienced this in NYC public libraries, nor in the main Philadelphia library.

Imho public library systems in US cities are absolutely incredible, and arguably one of the best perks of living in the US period.

This is not my experience. In my experience Gemini 2.5 Pro is the best model in every use-case I tried. There are a few very hard (graduate level) logic or math problems that Claude 4.1 Opus edged-out over Gemini 2.5 Pro, but in general if you have no idea which model will perform best on a difficult question, imho Gemini 2.5 Pro is a safer bet especially since it's significantly cheaper. Gemini 2.5 Flash is really good but imho not nearly as good as Pro in (1) research math (2) creative/artistic writing (3) open ended programming debugging.

On the other hand, I do prefer using Claude 4 Sonnet on very open-ended agentic programming tasks because it seems to have a better integration with VSCode Copilot. Gemini 2.5 Pro bugs out much more often where Claude works fine almost every time.

Actually slightly more than that. A college level abstract algebra class is unlikely to cover much of commutative algebra. You'll want to know a fair amount of Module Theory for this book. Reading through the classic Atiyah MacDonald book should be more than enough.

A module is the "same" thing as a vector space (that we all know and love), except the underlying scalars are ring, instead of field (i.e. no division, e.g. integers). So it's like linear algebra when your scalars are stuff like integers or polynomials.

"How Rust Won"

I love Rust, I'm a fan of writing it and I love the tooling. And I love to see it's (hopefully) getting more popular. Despite this, I'm not sure if "won" is the right word because to my very uneducated eyes there is still considerable amount of Rust not succeeding. Admittedly I don't write so much Rust (I should do more!) but when I do it always baffles me how tons of the libraries recommended online are ghost town. There are some really useful Rust libraries out there that weren't maintained for many years. It still feels like Rust ecosystem is not quite there to be called a "successful" language. Am I wrong? This is really not a criticism of Rust per se, I'm curious about the answer myself. I want to dedicate so much more time and resources on Rust, but I'm worries 5 to 10 years from now everything will be unmaintained. E.g. Haskell had a much more vibrant community before Rust came and decent amount of Haskellers moved to Rust.

I don't want to debate, I just want to note that as a person who writes $1_G$ everyday, and also maintain Unicode char'd codebases (Agda) where have subscript G would be life saving: We understand that Unicode people think ^x _x is a formatting issue. It simply isn't any more than quotes, parenthesis, brackets are formatting. Subscript and superscript are their own thing regardless of formatting and they carry meaning and semantics. The simplest proof is $^{-1}$ which means "inverse" and has nothing to do with minus or 1 symbol, it's not a formatting thereof, it simply means "inverse", the same way recycle emoji mean "recycle".

I honestly don't understand why Unicode still doesn't have all subscript and superscript letters, which I personally need to use almost every day--and I imagine many people who write math/code as well--but has 8 different varieties of alien emoji to choose from. I still can't write something as trivially simple as $1_G$ which would mean the "1" of group "G" (which is like being unable to write the word "the" if math was a language) because unicode lacks subscript G (capital) but I can send my wife a slideshow made solely of emoji. It's unfortunate.

https://en.wikipedia.org/wiki/Unicode_subscripts_and_supersc...