HN user

keysersosa

170 karma

CTO & Founding Engineer at Reddit

u/KeyserSosa @KeyserSosa https://keybase.io/keysersosa

Automagic proof zone:

[ my public key: https://keybase.io/keysersosa; my proof: https://keybase.io/keysersosa/sigs/Nd9DTqlAuHkkf63FMWVnHcf6uNVtS5Mci0Ujte7GPho ]

[ Verifying my Blockstack ID is secured with the address 1qvWkP5uoEGF7G9ni2cGSG5aWieJaNLZN https://explorer.blockstack.org/address/1qvWkP5uoEGF7G9ni2cGSG5aWieJaNLZN ]

Posts0
Comments20
View on HN
No posts found.
Employee #1: Reddit 10 years ago

At the time, in late 2005, we were writing in (I believe) python 2.3 and had rolled our own web framework because it was otherwise normal behavior to hook straight into wscgi. "wild west" might have been a bit of an exaggeration, but the available toolkit was certainly pretty bare bones.

It was also quite early in web 2.0, and I still remember when we switched up reddit's frontend to start using prototype.js (which had just come out earlier that year). Being able to use the same ajax call in both IE and Firefox! Magic!

Confirmed, but the time dependent model didn't ask for long. I seem to recall switching to the current model (with slightly different constants) during the switch to python in late '05.

That said, one of the early "mistakes" we made was not noticing the obvious step of taking the log of on the exponential form formula, which ended up meaning we had only a couple hundred days before we started to run afoul of the max float size in postgresql. I also seem to recall coming up with that obvious trick with only a few days to spare.

I too remember it being pretty harrowing at the time (if only because it felt like we were alienating [har] such a large chunk of our community), but in fairness it happened barely 6 months in. It all happened in a couple of weeks of quick work and I seem to recall we even recycled the db schema.

We did a post-acquisition python-to-python rewrite -- clean out the cobwebs, switch frameworks, and redo the database schema -- which was much harder, longer, and more painful to deploy. Though in that case it was one of those drastic changes whose primary side effect was that no none notices a thing.

Yup that was the case. Though, I believe it was also a long weekend -- I think it might have been Veteran's day because I remember putting the finishing touches on it around Thanksgiving.

Yeah it should be noted that all of the referenced decisions we made around web frameworks in this thread predate django's 1.0 release. I think I was comparing pylons to django 0.96 iirc, and in 2005 when aaron wrote web.py, I don't think django was on anybody's radar (or at least it wasn't on ours).

Django has definitely come a long way!

A lot of the decisions made in designing web.py were also carried over to tornado's web framework (which not coincidentally is also a web.py).

At the time (and I have to admit my memory is a little foggy as it was 7 years ago), I believe we mostly switched away from it for maintainability reasons. It wasn't under active development, and we were in the middle of a complete MVC rewrite to impose some order on some otherwise organically grown code.

At the time that we switched to pylons and decided to punt django, flask didn't exist. I believe it was some time on '07 or '08. I'd check, but I also think it predates our switching to git from subversion...

Personally I like flask a lot and it's come a long way. Also, when spez and I moved on to hipmunk we started using tornado.

ketralnis will likely remember this better, but by my recollection we switched to cassandra after we hit the limit of what we could do with memcachedb:

http://blog.reddit.com/2010/01/why-did-we-take-reddit-down-f...

We were already using memcachedb as a persistent keystore, "caching" precomputed listings and comment threads. When it started becoming more trouble than it was worth to maintain, we decided to try cassandra as a beefier replacement.

So here's the back story: we're working on migrating the reddit blog off of blogger and have a test environment set up that we were playing around with. We have a semi-private IRC channel that your coworker, as a close friend of the reddit team and heavy duty open source developer also hangs around in.

I asked if anyone wanted login to the new blog interface to which I got a "Me! Me!" from the gentleman in question. Since he isn't strictly speaking a member of the dev team, I did the natural thing and said, "ok, but in exchange you're going to have to dance for my amusement." Suffice it to say he called my bluff.

Reddit needs help 16 years ago

> Conde Nast were chumps when they allowed Chris Anderson, high on his own supply, convince them to buy Reddit for its supposed "Long Tail News" value.

That's not how it happened.

> Now they're chumps for not putting a grown up in charge

I like to think of myself as a grown up.

> converting 280 million page views/month and a dedicated community to enough money to support 4 engineers and a bunch of servers.

This is the crux of the problem. Marketing and ad sales is out of our direct control and has been lacking, so we've had to resort to other options. Self serve advertising last year was one of them, and it has done us well. This is more extreme for sure, but our plan is to eventually go towards the optional subscription model (like Ars Technica or Fark).

Reddit needs help 16 years ago

Well I guess that's also one way to free up budget. I'll let raldi know his days are numbered.

Thanks.

We really hope this will help us more than hurt us in the end. Part of the problem with releasing something like reddit as open source is that it isn't designed around installation. For the most part, the pieces have been built in place organically as needed. This means that even though the source is out there, it's been really hard to get developer contributions as many get stuck before they get reddit up and running locally.

This should effectively lower the barrier to entry there and let devs actually think about the code and adding features rather than about whether or not rabbit-mq or cassandra are properly configured.