On a one-machine scale, Twitter can be a single Postgres table, or a single ElasticSearch index. At the scale they actually are, it's really a whole lot more.
I'd really love a tutorial—or possibly a whole book—that instead took you through setting up the sort of distributed system that is required to make a Twitter clone run at a Twitter-like scale. Either through IaaS APIs, or on your own with something like OpenStack DevStack.
It could probably start where this tutorial ends—with a one-node system running a Twitter-backend-alike monolith. And then each chapter would increase the scale, introduce a problem the scale causes, and then walk you through adding in an additional component: a message queue; a fragment cache; app-level health checks; a search indexing cluster; distributed logging + request tracing; geographic sharding; multi-master DB replication—in order to solve that scaling problem.
There would also be scale-points that would require changes in the business logic: making IDs globally unique and sortable ala https://github.com/twitter/snowflake; deprecating but keeping around old APIs as new ones are added; "Ball of Mud" refactorings; isolated Enterprise clusters of the app; etc.
Bonus points if later chapters actually go back and rip out solutions that were introduced in earlier chapters—not because they were mistakes, but just because they were right for 10^3/s but not 10^6/s. And bonus bonus points if they assume an SLA that requires that such switchovers occur without downtime.
I think the course is more advanced than my target audience could handle right now, but it might a nice follow up to a bigger web app course.
I'll definitely write this down as an idea for a future course. I'd like to create a series of courses that take people from zero to employable and I think that would be a nice addition. Thanks!
It really starts from the beginning as in "first you have to install the proper tools and prepare your software development environment" beginning. Which is great to teach you things that you wouldnt learn in other free online courses.
I think it is a essential resource that present you the full stack of a web app, acting as the perfect complement to more pure code oriented courses like freecodecamp and codecademy.
And you can really start from zero coding knowledge. I fully recommend it.
Indeed, that would require adding a decade of neglect and abuse. :-)
In case anybody is interested in learning how to build a Twitter clone in Nim then consider taking a look at my book[1]. It's not free but it is a good way to learn Nim and web development concepts in a systems programming language.
1 - https://manning.com/books/nim-in-action?a_aid=niminaction&a_...
I don't like it, but I haven't had time to rewrite the page.
I'm always going to offer this course, and a few others, for free. Having said that, some people want to keep learning after taking these courses. I'm going to offer a paid course that builds a full web app with users, payments, git, etc. People that take the paid course will be able to build just about any web app they want. My hope is, with a little more practice, they would be able to get a job as a web developer.
Good point.
It seems we have gone backwards in terms of speed of getting things done in the last decade.
I have worked with dozens of Rails devs over the years and in my estimation at least 80% have done the Rails Tutorial. In my opinion, it's the single best resource for learning Rails in a way consistent with real-world best practices.
Instead of building a watered down application, it concentrates on building a production ready application. Instead of a Twitter clone, we build up a payment processing application that protects a game behind multiple tiers of pricing plans.
Some students are building their next start-up based on the code examples used in the course. One student even landed a $5,000+ contract a few weeks after taking the course.
Details (along with a demo video showing exactly what we'll build) can be found here:
https://nickjanetakis.com/products/build-a-saas-app-with-fla...
>with Flask and Docker
Sounds more like one bread stick and two eclairs sort of deal.
scope and scale are key