Hi all! I wrote this code, and for educational purposes, I’d be more than happy to answer any questions.
A gentle reminder that the whole history is here for show. This is very vulnerable — you can see the times I was in a rush, or when I took my time. You’ll find my mistakes. Either way, all I ask is please be kind. I know there are 50 things I could have done better, but this is a product of the reality at the time — a balance between something that works and something that was cost effective for Christian.
You made something that people got a lot of value out of. That’s incredible. The actual code and commits are just the journey. They’re not the product. I’m rather delighted every time someone shows a realistic journey full of all the things we all experience, but some of us pretend don’t happen. Thanks for being vulnerable and sharing this.
Having to ask people be kind about your code on HN is such a shame of reality to me. Half of brilliance is having your working version, used by many people. You had working code that brought reddit to so many reddit users every day that was better than what the official app of reddit provided.
Some of the 'code' running massively profitable departments in finance are spreadsheets, on shared drives, with thousands of linked cells thought up by a brilliant employee who left the company five or six years in the past.
So am I right in thinking that the backend was needed to poll the user account in order to generate notification? Was that one of the issues that reddit had with how apollo was using their apis?
Maybe a description of what we're looking at in the Readme would be helpful. Why wouldn't the Apollo client just directly call reddit? Or does it partially do that and this server component is additional for certain functionality? What functionality does this offer?
Why not point Apollo at a Reddit alternative, or use the open-source code for Reddit (or code like this https://github.com/libertysoft3/saidit) instead of shutting it down?
If Apollo's users (or a good percentage of them) moved over to an alternative platform, that would be poetic justice, at least.
To go even further, all the app devs should get together and create a new platform or pick one Reddit alternative and point all their apps at it.
That way it would be even more likely to get critical mass quickly.
3 weeks should be enough time to come up with a coordinated plan. Don't let Reddit push you out -- push them out and let your users stick with the app they love.
Reddit is only its users, nothing else. They don't own the users' loyalty -- the apps do. Take advantage of that and teach them a lesson by pointing the apps and users elsewhere!
FWIW, that just sounds like real code to me. You can spend your time polishing code until it shines and jerking off over the perfect crystal of logic you've created, or you can spend your time building something impressive that does cool stuff.
Especially when you're solo or on a small team, technical debt is actually something you can lean into. In this domain, refactoring is cheap and cutting corners can help you get where you need to go faster.
It's a too common mistake to think that because technical debt is a tar pit that kills many large products that this is universally true. The real trick is lowering the tolerance for flaws as the project grows and matures.
Your commit messages [1] are better than of many projects and seniors I have worked with. Nothing to be ashamed. You made something that "just worked" and delivered value. You should be proud!
Sample of latest commit messages:
batch size wants to be smaller for less locking time, not higher
> A gentle reminder that the whole history is here for show. This is very vulnerable — you can see the times I was in a rush, or when I took my time. You’ll find my mistakes. Either way, all I ask is please be kind. I know there are 50 things I could have done better, but this is a product of the reality at the time — a balance between something that works and something that was cost effective for Christian.
The way I took Reddit's comments were there were things that could be optimised to reduce costs. I've not seen a codebase yet where that isn't true.
Sadly, in the hands of Redditors who think you can host an API on AWS for $1 per million requests comments like come across as "Oh they did shoddy work".
What I think is we're seeing production quality code like the majority of us have running.
As another who will stop using Reddit when Apollo goes dark, I wanted to say thank you for your work with Christian!
Apollo saved my Reddit use after they bought and killed Alien Blue. I have gotten so much out of and out so much into the more obscure technology subreddits. It’ll be missed.
I appreciate all your work. For what it’s worth, I’ve never had server-side issues with Apollo (that I’ve noticed anyway!)
Sorry you feel on the defense. Developers can be very aggressive with feedback and I know the feeling. To echo others, "Build something that works first", and you have something that works :)
IMHO the gesture of releasing the code shows how much integrity there is behind the devs, and I could care less if there's not-best-practice in there.
Why don't you and Christian ask Apple for a small donation, and replace the reddit API with your own? You must have talked about the idea?
I am waiting on delivery of an iPad pro, my first apple device in 10 years. And, even though I hate reddit, I was excited to check out Apollo, if for no other reason than to see what a great ios app looks like.
I know that reimplementing reddit API from scratch will take more than a few weeks. But, I'm sure loyal Apollo users will be happy with a much scaled-down version. Maybe, to begin with you put the app in Read Only mode, and point it to a reddit archive. Then work on making one sub read/write again and expand from there.
I mean, even just a good reddit archive browser has TONS of value. I'd happily pay a small sum for an awesome reddit archive explorer.
"Chatgpt, build the back end for this API: $(cat reddit_api_docs)"
I was diving into your code and noticed you were using golang-migrate for running your migration queries. I never heard of it before and the number of databases they support sounds interesting!
How was the experience overall with this tool? If you have experience with Flyway, how does it compare?
You wrote code that works and powers an app for millions every month and any bugs or 'bad' ways of doing it are clearly sufficient to maintain a large, healthy user base, so you should feel nothing but pride!
Also, thank you for making this code available, but would it be possible for you and Christian to choose a license for it so people can use it? I don't think which license matters all that much, personally, but I can also understand wanting to keep it proprietary, either way, thank you again for all your (and the rest of the Apollo teams') work.
I'm curious if ya'll have any plans to support a reddit alternative, like Tweetbot -> Ivory and other twitter clients. I love Lemmy. I think it would be an excellent middle finger to reddit, but I understand if you are ready for the next thing
Making the code available is a wonderful thing to do. I love being able to see how others managed and structured a Go project that was actually meant to run in production.
It's more than likely that they'll inject their own softball questions and focus on those instead of addressing everyone's concerns in any meaningful way.
For this being such an important moment for the site, it’s absurd that the link they announced didn’t even have a set time. And they haven’t added one.
I don't think there's anything Reddit could do at this point to not let it be a PR disaster. That includes changing their stance. What they're doing is so egregious, naming and shaming and lying about people who brought immense value to the community for years. All out of misguided greed.
All this backlash is going to kill Reddit. It will take a thousand little cuts for sure, but it started the moment they announced their ludicrous pricing.
Interestingly, this seems to just be a proof of concept, and the repo is archived. While the developer of the Apollo front end is getting screwed in this whole debacle, this seems to me like an opportunity. He could literally build an alternate Reddit back end (ok, pay someone to do it, if he doesn't want to do it himself), switch Apollo to use that API instead, and get an instant network of hundreds of thousands of Apollo users. A mass migration from Reddit to a new Apollo back end seems like an amazing way to start a new social news website.
I really love the practice of releasing the source code once a project comes to a commercial end, and I respect the devs greatly for doing so. Good job!
What if all the blackout communities move to an open source, community funded, community owned and run version of Apollo?
I’d be happy to try and convince my 100k community to Apollo and if the UX is similar for web and mobile then I’m not sure switching costs would be that high during the blackout.
I’d help fund it but all my money is wrapped up in my trash cooperative.
They've succeeded in killing their main competitor (in terms of ad share) and could even now walk back the api charges for any smaller operators and leave Apollo dead and avoid the biggest backlash.
It's scummy as hell and I won't want to continue to contributing to reddit, but I can't help but feel they've been shrewd in getting what they wanted.
> The goal of making the code for this repo available is to show that despite statements otherwise by Reddit administrators, Apollo does not scrape anything and users purely authenticated Reddit API requests, and does a great deal of work to ensure the Reddit API rate limits are respected.
Reddit's current situation reminds a bit of Yahoo Answers in the late 2000s. Considering they were launched 5 days apart, Reddit has been incredibly resilient.
I've seen an increasing amount of support for 'nuking' your personal reddit history—posts and comments—in protest of the upcoming changes, taking back what Reddit are profiting from. I'm hugely in favour of it, anyone else considering it?
[+] [-] andremedeiros|2 years ago|reply
A gentle reminder that the whole history is here for show. This is very vulnerable — you can see the times I was in a rush, or when I took my time. You’ll find my mistakes. Either way, all I ask is please be kind. I know there are 50 things I could have done better, but this is a product of the reality at the time — a balance between something that works and something that was cost effective for Christian.
[+] [-] Waterluvian|2 years ago|reply
[+] [-] cassianoleal|2 years ago|reply
User rapnie mentioned the code in the repository doesn't have a license [0]. You might want to review that.
[0] https://news.ycombinator.com/item?id=36256566
[+] [-] carlmcqueen|2 years ago|reply
Some of the 'code' running massively profitable departments in finance are spreadsheets, on shared drives, with thousands of linked cells thought up by a brilliant employee who left the company five or six years in the past.
I wish I was kidding.
Thanks for how great you kept apollo.
[+] [-] rovr138|2 years ago|reply
Christian is very visible in the community, but I want to say thank you to you too.
Thank you for all the work you did! This made a lot of our experiences great.
[+] [-] alickz|2 years ago|reply
Do you think Christian would be willing to open source the app (under a non-commercial license) and allow us to build it with our own Reddit API keys?
That way we could still use Apollo, but pay for it ourselves
[+] [-] seanalltogether|2 years ago|reply
[+] [-] Aachen|2 years ago|reply
[+] [-] raylad|2 years ago|reply
If Apollo's users (or a good percentage of them) moved over to an alternative platform, that would be poetic justice, at least.
To go even further, all the app devs should get together and create a new platform or pick one Reddit alternative and point all their apps at it.
That way it would be even more likely to get critical mass quickly. 3 weeks should be enough time to come up with a coordinated plan. Don't let Reddit push you out -- push them out and let your users stick with the app they love.
Reddit is only its users, nothing else. They don't own the users' loyalty -- the apps do. Take advantage of that and teach them a lesson by pointing the apps and users elsewhere!
[+] [-] Grimburger|2 years ago|reply
Most would hate to see what a sausage gets made out of, but nearly everyone will eat that same sausage.
[+] [-] marginalia_nu|2 years ago|reply
Especially when you're solo or on a small team, technical debt is actually something you can lean into. In this domain, refactoring is cheap and cutting corners can help you get where you need to go faster.
It's a too common mistake to think that because technical debt is a tar pit that kills many large products that this is universally true. The real trick is lowering the tolerance for flaws as the project grows and matures.
[+] [-] hu3|2 years ago|reply
Sample of latest commit messages:
batch size wants to be smaller for less locking time, not higher
increase scheduler batch size
bump locks again
make pool sizes customized
increase prefetch
[skip render] remove old redis from infra
increase poolsize a bit
bring new redis up to line in blueprints
reduce pool size
bump pg client count
tweak pool sizes and consumer count
double the amount of consumers
small tweaks
[ci skip] update pgbouncer github url
clean allow lists
add new redis instances
make connections to the correct redis url envs
add new env variables
spam prevention
update reddit http client
feat(ops): add distributed tracing (#109)
[+] [-] trustingtrust|2 years ago|reply
[+] [-] that_guy_iain|2 years ago|reply
The way I took Reddit's comments were there were things that could be optimised to reduce costs. I've not seen a codebase yet where that isn't true.
Sadly, in the hands of Redditors who think you can host an API on AWS for $1 per million requests comments like come across as "Oh they did shoddy work".
What I think is we're seeing production quality code like the majority of us have running.
[+] [-] irisgrunn|2 years ago|reply
[+] [-] TheNewsIsHere|2 years ago|reply
Apollo saved my Reddit use after they bought and killed Alien Blue. I have gotten so much out of and out so much into the more obscure technology subreddits. It’ll be missed.
I appreciate all your work. For what it’s worth, I’ve never had server-side issues with Apollo (that I’ve noticed anyway!)
Edit: typo
[+] [-] footlose_3815|2 years ago|reply
IMHO the gesture of releasing the code shows how much integrity there is behind the devs, and I could care less if there's not-best-practice in there.
[+] [-] irthomasthomas|2 years ago|reply
I am waiting on delivery of an iPad pro, my first apple device in 10 years. And, even though I hate reddit, I was excited to check out Apollo, if for no other reason than to see what a great ios app looks like.
I know that reimplementing reddit API from scratch will take more than a few weeks. But, I'm sure loyal Apollo users will be happy with a much scaled-down version. Maybe, to begin with you put the app in Read Only mode, and point it to a reddit archive. Then work on making one sub read/write again and expand from there.
I mean, even just a good reddit archive browser has TONS of value. I'd happily pay a small sum for an awesome reddit archive explorer.
"Chatgpt, build the back end for this API: $(cat reddit_api_docs)"
[+] [-] jspdown|2 years ago|reply
How was the experience overall with this tool? If you have experience with Flyway, how does it compare?
[+] [-] chris37879|2 years ago|reply
Also, thank you for making this code available, but would it be possible for you and Christian to choose a license for it so people can use it? I don't think which license matters all that much, personally, but I can also understand wanting to keep it proprietary, either way, thank you again for all your (and the rest of the Apollo teams') work.
[+] [-] revskill|2 years ago|reply
[+] [-] chaostheory|2 years ago|reply
[+] [-] internetter|2 years ago|reply
[+] [-] TX81Z|2 years ago|reply
[+] [-] mrweasel|2 years ago|reply
Thank you.
[+] [-] sirspacey|2 years ago|reply
[+] [-] irisgrunn|2 years ago|reply
[+] [-] dakial1|2 years ago|reply
Would love to have a decent client for this site…
[+] [-] newZWhoDis|2 years ago|reply
[+] [-] MarcoZavala|2 years ago|reply
[deleted]
[+] [-] trollied|2 years ago|reply
Can't see it being anything other than a PR disaster for them, unless they change their stance.
[+] [-] fron|2 years ago|reply
[+] [-] interestica|2 years ago|reply
[+] [-] soraminazuki|2 years ago|reply
[+] [-] madeofpalk|2 years ago|reply
[+] [-] londons_explore|2 years ago|reply
[+] [-] newsclues|2 years ago|reply
This will be a spectacular shitshow to watch.
[+] [-] spiderfarmer|2 years ago|reply
[+] [-] yosito|2 years ago|reply
Interestingly, this seems to just be a proof of concept, and the repo is archived. While the developer of the Apollo front end is getting screwed in this whole debacle, this seems to me like an opportunity. He could literally build an alternate Reddit back end (ok, pay someone to do it, if he doesn't want to do it himself), switch Apollo to use that API instead, and get an instant network of hundreds of thousands of Apollo users. A mass migration from Reddit to a new Apollo back end seems like an amazing way to start a new social news website.
[+] [-] tiffanyh|2 years ago|reply
https://github.com/christianselig/apollo-backend
[+] [-] troad|2 years ago|reply
[+] [-] AndrewKemendo|2 years ago|reply
I’d be happy to try and convince my 100k community to Apollo and if the UX is similar for web and mobile then I’m not sure switching costs would be that high during the blackout.
I’d help fund it but all my money is wrapped up in my trash cooperative.
[+] [-] eterm|2 years ago|reply
They've succeeded in killing their main competitor (in terms of ad share) and could even now walk back the api charges for any smaller operators and leave Apollo dead and avoid the biggest backlash.
It's scummy as hell and I won't want to continue to contributing to reddit, but I can't help but feel they've been shrewd in getting what they wanted.
[+] [-] notRobot|2 years ago|reply
[+] [-] mkl95|2 years ago|reply
[+] [-] unstatusthequo|2 years ago|reply
[+] [-] cassianoleal|2 years ago|reply
[+] [-] r0bbbo|2 years ago|reply
[+] [-] Aachen|2 years ago|reply
[+] [-] eiiot|2 years ago|reply