To pile on, here's mine: https://github.com/linsomniac/apt-cacher-ultra
It is a robust, reliable cache of apt packages, with the additional goal of still being able to serve packages from the cache even when the upstream is down. This was started shortly after that DDoS of Canonical this past year. We've run apt-cacher-ng and apt-cacher over the last dozen years, but (a) it requires hand-holding about once a month and (b) it did absolutely nothing for us when Canonical was under DDoS.
I've put well over 100 hours of my time into it. Still running into a lot of people knee-jerk calling it "slop", but I've had 200-ish machines pulling from it for 6 months and it has worked way better than apt-cacher-ng.
I'm not really sure what to do with people who dismiss AI-assisted projects, while dehumanizing the 100 hours of my time I've put into it. I fear we're running the very real risk of both sides losing: the people trying to thoughtfully create with AI losing because of the AI, and the people avoiding AI losing because they can't keep pace.
That's pretty naive.
This isn't just a simple http proxy and checking if the requested URL exists on disc. It's a pretty subtle snapshotting system that fully understands and vets apt repos, detecting when the repo changes, proactively downloading "interesting" packages that have updated, verifying and validating all packages, and then promoting the repo to active when it is healthy. Plus a web-based admin interface.
The core of it is around 20K LOC, with another 40K in tests. The COCOMO model gives that an estimate of around 2 developer years of effort assuming full time work.
What the fuck does this even mean?
Like za_creature said you can use a language more towards the YOLO end of the spectrum - more Go or Python or JavaScript than assembly or Rust.
Your commit history shows you had an issue of high background CPU use. You probably wouldn't have it in a manually coded implementation.
Why even write one of those? Just set up an nginx proxy cache and call it done.
But that doesn't even scratch the surface of what this project does. We already have a few simple approaches to this problem: apt-cacher and apt-cacher-ng. Neither of which were any help when Canonical was under DDoS. Both of which have proven unreliable.
As I said elsewhere, apt-cacher-ultra is a pretty subtle piece of software, it doesn't just do a naive cache, it fully understands the apt repo structure, validates the repo, and snapshots it, understands what packages your clients frequently request and preemptively downloads updates to them as part of the snapshot promotion, etc. A DDoS of the package sources, even in the middle of an upstream releasing updates, is something a-c-u will handle no problem. I've simulated this by firewall rules blocking upstream traffic. It's also proven much more reliable than apt-cacher-ng.
I've been in the software game ~40 years, I've seen it time and time again: "How hard could it be" and then when you get into it you realize there are a lot of devils in the details.
You might want to change the way you phrase this idea. I think you meant that Go/Python/JS are more "YOLO-friendly languages" (you'll get into far less trouble if you write slop in them). My initial reading was the opposite. It sounded like you were saying the languages themselves are the slapped together garbage.
Assembly is most certainly not "YOLO-friendly", but is more YOLO.
Indeed. The number of hours is my goto defence too. So far I've put in maybe 200 hours of time into design, iteration, playtesting, QA, and balance of my game. Sure - almost zero has gone directly into writing code but this is still a major project.
People who one shot a crappy game have no idea how much work it still takes to get something really good over the finish line.
>I'm not really sure what to do with people who dismiss AI-assisted projects
Mostly I've stopped worrying or trying to convince the haters. I'm having a blast and building great things (lots more than just Asteria).
Good luck with your apt project!