hmijail
Then I tried to finish it off, and the next ~30h turned into a bug treadmill, where at each turn Claude broke as much as it fixed.
This is the experience report: what went wrong, why research (and Anthropic's own docs) suggest this is to be expected, how an YC-alum AI-tooling founder's public talks tell a similar story, and maybe how to salvage the good bits.
Show HN: A semantic fuzzer for Obsidian Sync... in spite of Claude
https://github.com/hmijail/ObsSyncBugHunt
The Obsidian forum has threads reporting Sync data loss for over 2 years. To help reproduce bugs, I built a fuzzer that runs Obsidian instances in containers, makes them edit notes while cutting off their network, and documents the failure rates.The fuzzer finds amusingly short sequences that cause data loss and that you can reproduce on your own in a minute (if you have an Obsidian Sync...
Java's architecture (and architecture idioms) might cause a blind spot (or is it a kind of Someone Else's Problem?); while C's architecture/tools or lack thereof disincentivize overwrought (or plain sophisticated) systems, for good and for bad.
Or more succinctly, Java makes you stop thinking about how things actually work, while C makes you stop thinking about how things should work.
Interesting!
[1] https://hmijailblog.blogspot.com/2018/08/you-could-have-inve...
I think this is rather ironic / off-mark, given that the 90s and 00s were so full of OOP - for example, growth of C++ impulsed by Windows, and if anything OOP lately seems to be (thankfully) going back to being just another tool in the toolbox. To me it feels like OOP had its moment/decades in the spotlight, it didn't fulfill hopes/expectations/SB and therefore things keep moving on, in search of that SB. Isn't it? Or is the implication that things were even worse in the 80's?
Note, I'm referring to OOP in the "industry standard" way it's commonly understood, not Alan Kay's message-passing original meaning - about which I'm still trying to learn more.
But, WOW - I just read David Lorge Parnas' part in [3]. I was already reeling from the paper's distilled self-serving, but this guy is crapping in every one, rather directly, and making sense while at it. I have a new hero to research.
[4 - 7] are really interesting, thank you (as is Betley's and McIlroy's mention). And also very interesting to see someone working in those things while developing another iteration of Smalltalk. This is really making me prioritize learning Smalltalk in my to-do queue...
QNX kernel = 23 KLOC, C [1]
Plan9 kernel = 50 KLOC, C [2]
Squeak VM = 9 KLOC, Smalltalk [3] (Squeak is a Smalltalk)
Note, those are the kernels - Smalltalk's 20 KLOC include the whole system (GUI, etc), IIRC.For clarity, I'm a bit out of my depth here, and I'm assuming that the Squeak VM is a bit akin to a kernel. And surely one could find more authoritative references for it all.
[1] http://www.gelato.unsw.edu.au/IA64wiki/JamieLennox/QNXvL4?ac...
[2] https://news.ycombinator.com/item?id=879101
[3] https://books.google.com.au/books?id=FM-pCAAAQBAJ&pg=PA136&l...
Actually, I think that talking about Java's multithreading here is a red herring; note that LMAX had to abandon multi-threading because it was destroying performance.
And this is important, because they explicitly made a very interesting point of current architectures being at odds with current thinking about best practices for concurrent programming.
But that's not "Java in the real world". If anything I'd presume that that's "well programmed Java".
"If you program it like it was C then you can get good performance" -> Note that one of the points of the post is that just using "like C" won't magically fix your performance!
If anything, you could say "If you program it like a system with limited memory then you can get good performance". That, I can imagine being a universally applicable thing.
My point is that, for example for the particular case of memory management, there is an associated cost, whatever your language is; and you need to deal with it. Ignorance of the law is no excuse, etc.
I agree. There's much too much "art", religion and cargo cultism in software development, and much too little science/engineering.
And it's hard to even say whether we're improving.
The post quotes both Brooks and Dijkstra; the first managed development of a system and got famous, the second saw the system's actual failures and reported his criticism on it.
So, care to explain what exactly is it that you find lacking? My experience with people who cite "failure to grasp the thinking" has been rather with "architecty" types that can't get past handwaving to make a point, so anything concrete would be appreciated.
For example: you say Dijkstra complains "on overblown marketing material mostly". Citation, please? Sounds like you mean that the marketing overpromised and underdelivered, but to me it looks like Dijkstra was pretty clear about the whole set of ideas being poppycock even if fully delivered; he says that it's fundamentally the wrong way to do things, and does so in a rather smug "told you so" mode.
... unless we want to argue that maybe Dijkstra didn't "grasp the depth of Brooks' thinking" either, nor the functionality of that thinking's actual, first hand implementation?