Skip to content

(data) Update the Ahrefs success story and add a new story about the full stack ocaml web solution #2863

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 24 commits into
base: main
Choose a base branch
from

Conversation

sabine
Copy link
Collaborator

@sabine sabine commented Dec 12, 2024

Waiting for review / approval from @davesnx.

Copy link
Contributor

@Khady Khady left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not completely convinced by the angle tbh. Ahrefs was always using ocaml. Extending it to the frontend isn't a dramatic change or a real shift in the company culture. ocaml was basically present since day one. It would maybe be more accurate while still being interesting to explain that it's possible to bootstrap a company around ocaml and reach $100M+ in ARR, 150 employees, 4000+ servers, leadership in a competitive industry? And maybe do a complete different story focused on the migration to melange?

"Result", "Why OCaml", and "Solution" sections have some overlap, creating some repetition. Maybe one of them should be dropped, or we should create more differentiation?

We could make the style less corporate, to be more in line with ahrefs' identity

@sabine
Copy link
Collaborator Author

sabine commented Dec 14, 2024

Will take another high-level look in terms of tone next week.

@sabine sabine force-pushed the success_story_ahrefs branch from 5dfae49 to e0f1f2e Compare June 18, 2025 11:38
@sabine
Copy link
Collaborator Author

sabine commented Jun 18, 2025

Ahh, next week turned out to be months later. Thanks for bearing with me. 🙇‍♀️

I fully went over this and reframed the story to be more in line with the feedback (which was very useful @Khady, thanks for that).

@davesnx maybe you're up for reviewing this as well?

I feel like this new version of the story much better captures the overall narrative of the company and what we discussed in the interview.

@davesnx
Copy link
Contributor

davesnx commented Jun 18, 2025

Hey @sabine, I haven't reviewed the thing yet, but I agree with Louis here. I think the crawler story is great, and the full-stack story is also great. To be honest, rather than rewriting it, I would push it as a new success story (if it's possible!)

The narrative for choosing OCaml to write a crawler is much more risk-reward than using OCaml on the frontend (which at that point we already have the entire backend in OCaml already)

@sabine
Copy link
Collaborator Author

sabine commented Jun 20, 2025

Interesting idea @davesnx. You mean we could treat success stories more like a blog? Or separate the two bets (writing the crawler in OCaml vs. transitioning the frontend to BuckleScript which led to achieving full stack OCaml) 🤔

I've seen this part of the site as a showcase for companies, so it's about telling a big picture story that ties in and references company history and achievements and how OCaml played a role in it, as well as how they're active in Open Source.

Treating success stories as a collection of case studies primarily is an interesting idea, as it would enable multiple stories from a company.

@davesnx
Copy link
Contributor

davesnx commented Jun 20, 2025

Not sure as a blog, but have separate entries makes a lot of sense. Those are two different stories/use-cases/people/tradeoffs.

@sabine
Copy link
Collaborator Author

sabine commented Jun 20, 2025

Alright, let me ping you back when I have two separate case studies on this. I think that's a good solution here, as the backstory is just too interesting not to cover it all.

@sabine
Copy link
Collaborator Author

sabine commented Jul 1, 2025

@Khady @davesnx I split it up in two case studies. Focusing on one topic at a time does make them easier to read.

What do you think?

@sabine sabine changed the title (data) Update the Ahrefs success story (data) Update the Ahrefs success story and add a new story about the full stack ocaml web solution Jul 1, 2025
@sabine sabine force-pushed the success_story_ahrefs branch from 86da827 to 7f13496 Compare July 1, 2025 12:29
Copy link
Contributor

@davesnx davesnx left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left a bunch of nit comments, but I think the entire content should be reviewed since there's a ton of duplication and not clear goal expressed.


Frontend and backend stay in sync: When data structures change, type errors guide developers to update all affected code.

Today, their **5 billion daily frontend requests** are handled by the same OCaml codebase that powers their backend systems. The web application serving **44% of Fortune 500 companies** is built from **1.5 million lines of OCaml code** spanning both frontend and backend.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we have 5 billion frontend daily requests. And I'm not sure why the sentence means

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I rewrote this to be more clear, the numbers came from the interview notes, but maybe we should double check?

@sabine sabine requested review from Khady and davesnx July 8, 2025 11:40
@sabine
Copy link
Collaborator Author

sabine commented Jul 11, 2025

@Khady @davesnx I addressed the review comments, are we good with these two case studies?

Copy link
Contributor

@Khady Khady left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

haven't had time to look at the full stack part

Comment on lines +63 to +67
* **Reliability pays compound interest**: OCaml's "boring" stability means systems built years ago still run without surprises, freeing engineering time for new capabilities rather than maintenance.
* **Types scale better than tests**: At petabyte scale, compile-time guarantees about data consistency prevent entire classes of runtime failures that would be catastrophic at this volume.
* **Expressiveness enables specialization**: OCaml's high-level abstractions made it economical to build highly specialized systems rather than adapting generic frameworks to their unique requirements.
* **Small teams can compete with giants**: The right language choice allowed Ahrefs to build infrastructure that competes with tech giants despite having a fraction of their resources.
* **Performance and maintainability aren't mutually exclusive**: OCaml's combination of native compilation and high-level abstractions delivered both the performance needed for web scale and the clarity needed for long-term maintenance.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

kind of a repetition of the why ocaml section

Comment on lines +73 to +75
- **[Ahrefs DevKit](https://github.com/ahrefs/devkit):** Tools and utilities for building distributed applications.
- **[OCaml Community Tools](https://github.com/ocaml-community):** Contributions to widely used infrastructure tools like `ocurl` and `ocaml-mariadb`.
- **[ATD](https://github.com/ahrefs/atd):** Schema definition language for cross-platform data serialization.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can probably find more interesting links

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, that would be great

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants