To anyone else who had to parse early KiCad file formats, where the parentheses and quoting on S-expressions was more of a guideline than a rule, I salute you.
I thought early KiCad was non or only partially S-expressions, but new KiCad is all S-expressions? Anyway haven't had parsing issues in years and exports to MCAD work very well.
If you don't need insert/remove in middle, only at the end, there are more optimal data structures for Lists like RAOTS[1].
Btrees are O(log n) random access, O(log n) cons and use O(log n) excess space.
Unrolled linked lists are still O(n) random access because we ignore the constant factor of block size. They also use O(n) excess space for pointers, but have O(1) cons.
RAOTS are O(1) random access, O(1) amortized cons [O(√n) worse case], and use O(√n) excess space.
RAOTS is basically a tree of depth 1. The root is an "index block" of pointers to data blocks which grow in size proportional to the square root of the data length (similar to Hashed Array Trees, but doesn't require restructuring on each power of 2). The index block has length ~√n.
The square root is an approximation - the structure grows in "superblocks" where each superblock has `~√n` blocks of size `~√n` The pattern is: [1x1, 1x2, 2x2, 2x4, 4x4, 4x8, 8x8, 8x16, 16x16, 16x32, ...] Even indexed superblocks double the data block size, odd indexed superblocks double the number of blocks per superblock. It doesn't use an actual `sqrt()` call uses but some bit tricks via `clz`.
A simpler trick, which has no single name but have been known as "segmented lists", is where the index block points to blocks increasing in size geometrically, essentially like a dynamic array but where we don't need to `realloc`. The index block is length 1+log₂n and each index i points to a block of length 2⁽ⁱ⁻¹⁾. These have O(1) random access, O(1) amortized cons [O(n) worst case] and waste O(n) space [with constant factor of 1/2]. The random access is very efficient as it's only two dereferences and a few bit tricks:
index_block[bit_width(idx)][idx - bit_floor(idx)]
This is more cache friendly than the other approaches.
There's also Bagwell's VList[2] which is like a mashup of the "segmented list" and an unrolled list - the blocks grow geometrically in size, but still contain the pointer the the next block rather than them being in a separate index block.
Yes, since 7.3. But in that typical verbose and awkward PowerShell way. My quip about PowerShell is that if they called it PowerScript, you'd realize it was bad Python.
Great tool for Windows admins who haven't realized they can write quick and dirty C# scripts cross platform for a decade now.
I mean it's just patently absurd. It is trendy to use this hubristic, and frankly bureaucratic, definition or requirement on math.
People can do math alone. They don't have to share it with others. Mochizuki was doing math (with errors). The aliens from Arrival could do math and we wouldn't necessarily be entitled to that. It doesn't make these things not valid math.
The only benefit of defining math through this vulgar social reductivism is to benefit the status quo. So you see some experts and expert-adjacent commentators using these math slogans but never critically justifying those words. Case in point, the above commenter asserts "...math is foremost about communication.", but the very next sentence does not explain why it is foremost, it just uses the sentence as a premise for the following sentence. Guess what, that is exactly how ideologues argue, by question begging fallacy. Ironic that STEM people who ought know better fail to catch this simple rational mistake.
Math that isn't communicated is valueless - by definition.
Applies to STEM generally, because the foundation of STEM is peer review and independent testing and confirmation.
Even if the practice never quite lives up to the theory (true) that's no excuse to hand-wave away the requirement as if it doesn't matter.
Proofs that can't be confirmed are valueless because no one learns anything from them. The value of a proof isn't just in proving something but in inventing new techniques and insights that can be reused for other applications.
Brute force searches are fundamentally less valuable, because the creative foundation of math is discovering leaps of logic that solve problems with insightful shortcuts that can be generalised and reused for other applications.
> Math that isn't communicated is valueless - by definition.
That is quite a bold claim.
Math can always be used as a tool just to achieve results. This can include even novel math. Due to the maturity of the field it is just becoming more and more unlikely that somebody will come up with something novel without realizing the significance.
One example: Quicksort was almost not published because Tony Hoare initially considered the idea behind the algorithm trivial. In the end, all he wanted to do was to sort some numbers.
Maybe there is a polynomial time SAT solver running somewhere just because some overworked engineer implemented it for a completely different problem. And he was just annoyed that all existing libraries were so slow and he doesn't realize that he is sitting on a proof that P=NP. Who knows.
Opus 5.5 rewrote an awful, legacy Drupal app from scratch in my preferred stack in four hours. This included handling abandoned plugins, migration to a not-insane database schema, and content fixups from a Drupal 4 backup that fixed truncated cells somewhere in a botched Drupal 6-7-8 upgrade I wasn't part of.
If you want to know everything you need to know about Drupal, have a peek at the community discussion around sitemaps. There are genuine reasons behind the complexity, but a CMS that cannot generate a list of its own URLs, leaving thousands of people baffled, is quite an achievement.
Sure, but it doesn't change the argument. Adobe is doing really well if you look at the revenue. Adobes business is selling to governments and other large corporations that need compliance, its not to cater to the HN developers. Apple is the same, except in their case its the status symbol of having Apple products.
No-one gives a shit if some subset of internet warriors thinks that you will have a downfall in 10 years because of some obscure esoteric corner cases that don't affect your mainline business. Even if they are right you will probably not be around the business at that time and will have made bank.
I have a business. Sometimes I buy things on Amazon. At tax time, I search for the big business items and categorize them in QuickBooks until I give up.
You know who doesn't give up? Claude, who doesn't seem to realize how shitty and slow QuickBooks Online is. It's even happy to click 19 times to do a split because I dared to add a router and shampoo to the same Amazon cart in a weak moment of convenience one night back in February 2025.
Some so-called skills are worth letting atrophy. Whatever I used to do with a janky browser plugin and two monitors full of Excel windows at tax time is one of them.
I wonder if you could get claude to serve up amazon in a reasonable way:
- the search terms you asked for
- filter out results you want to remove
- no sponsored results
- no recommendations
for example, say I don't want "smart" . I can't get rid of them from the results. "not smart" uses smart as a search term. Not only that, amazon devices always show up, I drown in sponsored results, and a good part of the page is my shopping cart, recommendations, and sometimes ask alexa popups.
Amazon does not want this. The more stuff you wade through, the more ad revenue they get. The more impulse sales they get. The more amazon devices they sell. (and then amazon devices become a surveillance cash register sitting in your house)
I agree that ecommerce interfaces (with the exception of McMaster-Carr) are all terrible. However, the next phase will probably leapfrog "make the interface better" to have a concierge agent do the shopping, or at least present a tight list of options and pros/cons.
> Whatever I used to do with a janky browser plugin and two monitors full of Excel windows at tax time is one of them.
Yeah the amount of time the taxman has wasted in my life is beyond belief. I automated a lot of it myself over the years but now having the help of LLMs to fill the bullshit, pointless, Brazilian (the movie, not the country) crap to please mister taxman is a godsend.
By running a Tax Summary report and looking at it, just like I always did. Except this time, with fresh eyes and in a good mood. It's still just a bookkeeper and frankly does a more thorough job than I did.
notably, in my experience book keepers have been doing a terrible job since COVID, often committing what seem to be highly negligent mistakes. so i’m really not sure that is a compliment. but does seem to be somewhat useful?
the only way I found out w/ my bookkeeper was reviewing individual entries
Or maybe you'll have better luck in a week when somebody familiar with RAW and a 20 year grudge against Adobe chooses to spend a day of tokens on the problem. Maybe me.
Rome wasn't built in a day, nor Adobe destroyed in a single git push. But they both shall fall.
And 500 levels of org tree, and grumpy customers that freak out if you change anything about their workflows, and decades of legacy code across dozens of micro-services, and backwards compatibility requirements with 20 year old formats...
That's exactly what I was thinking. It's only a matter of time. Surely the models, when well directed, can get most or all of the way there in short order.
reply