I was the biggest stickler for “code quality” and ease of editing. I have two blog posts ranting about semicolons, but the code doesn’t really matter as much anymore.
Before TypeScript the JavaScript code in a function mattered a lot because you’d need to follow it and confirm it was right while reading, after TypeScript you could just trust the input and output types, after AI we’re trying to go up a layer, where we have many e2e tests, fuzz testing, visual regression tests, benchmarking, and if those are right we don’t care so much about the code anymore, and we can even easily rewrite it or optimize performance. We can actually make the code higher quality than ever, it’s not that the code looks right, it’s that the output a user sees looks right, and we can validate that. This could be done before but it was prohibitively expensive, automating things, dealing with flakes, writing new cases for new code, it was hard, and now it’s easy, and we can create better results than ever before.
I updated React Native Fast Image, a lot of updates, and it actually does pretty well in benchmarks against other libraries
In the end it mostly comes down to the native libraries and how they're used. The one benchmark Fast Image blows the other libraries out of the water on is the one where it wins because I basically replaced Glide's scheduler by putting my own on top. This costs about a frame or two in most normal operation though in exchange for much better prioritization control. Funny enough SDWebImage also has a prioritization bug in the latest releases. So it seems the next frontier in terms of performance would be improving SDWebImage and Glide, or maybe totally replacing them
I'm not really sure this is the most valuable thing I could be doing with AI right now, but it's kind of interesting. Need to be more ambitious
@MatejKnopp I believe it also runs React Native first, which could potentially bias things due to memory usage and throttling, giving RN an advantage because it’s run first. Things should be interleaved
If I really wanted to slop fork something, and had unlimited tokens, not only would I slop fork it, but I'd have agents watching all PRs, issues, changes, on the original repo with instructions to bring over any applicable improvements the original makes. OSS is kind of cooked
I can’t say what’s better for everyone and the ecosystem. In my case it was better to fork my thing, totally understandable. I can say it didn’t feel great, there’s a human cost, and with AI this sort of thing is going to be happening more and more, even to great projects and maintainers. Architecturally and product-wise, it’s maybe better for them to do it this way. Talking about it isn’t necessarily going to change the fact that they’d rather vendor things
It’s generally pretty good in my benchmarks, and in terms of features. Benchmarks are based on detecting loaded images on video over several runs on real devices so they should be realistic, although to be honest I don’t entirely trust them yet. The native libraries are the same (between Expo and RNFI, both use SDWebImage and Glide) so it makes sense perf would be similar, this is the case I was mentioned - https://t.co/voKdWxTqng
This is one reason I was burnt out with open source. I know I wasn't a great maintainer, but when things got forked up I though "Well what's the point of all this then?". I guess now at least it's easy to copy things back. Fight fire with fire, but to what end? You're in a particularly hard place because they have unlimited tokens and models that aren't even publicly available.
I have already implemented replacements for Glide and SDWebImage that beat them on almost all metrics I'm measuring. Implementations are based on what I learned doing all the updates. I would want to implement more testing before I'd be comfortable releasing them though, maybe for native iOS and Android as well. There's also the question of what is even the point if it's relatively easy to vibe code it. Although I think having the tests and benchmarking done is valuable maybe, it took a bunch of tokens, and some judgement was exercised during the process so maybe not anyone could vibe code them. Interesting times
Yeah, for now, probably the foreseeable future. Lot easier to work on using AI.
Reason for the delay: Burnt out with OSS, not getting paid for it vs other things I was busy with, not as optimistic about React Native generally (maybe I'll write a post on it).
Reasons for being back: Not too busy at the moment, wanted to try using AI to triage things and implement regression testing and benchmarking.
I made a huge amount of changes and haven't seen any new issues yet, interested to see if that will hold 🤞
@c100k_ 🙏 Software is resolved. Thank Claude
Checkout the amount of regression testing and benchmarking in the repo now, it took some guidance and a lot of time and tokens, so maybe OSS is useful as a cache of that
@yacineMTB Yeah a common failure mode is the ai making poor decisions because it underestimates itself because it’s trained on human estimates/decisions
I'm pro-AI and don't entirely doubt your productivity but this is kind of vague. People would like to hear something more like "what are the top 10 concrete changes / features you merged last week/month", or maybe from a given month a few months back since maybe can't reveal current work. It's what Elon would ask for
@c100k_ 🙏 Software is resolved. Thank Claude
Checkout the amount of regression testing and benchmarking in the repo now, it took some guidance and a lot of time and tokens, so maybe OSS is useful as a cache of that