Awhile ago I wrote a series of guides and kind-of-articles about web development aptly named the INTERWEB LEARNING SERIES, beginning with HTML/CSS and Linux server adminstration. I wrote them for some friends who were trying to start out managing linux servers so they could build their own stuff. As time went on, I got requests for more guides about more advanced topics, and I tried to abstract them out into concept-based lessons rather than language-specific lessons (i.e. learning about asynchronous programming rather than just Node.js).

I'm still very opinionated about how one can be most effective at web development, and most of my opinions revolve around having a complete top-to-bottom understanding of how the internet works. A basic understanding, at least, of how servers work, how DNS works, how an actual HTTP service works, how TCP works, etc. Too often I meet developers who silo themselves into knowing just PHP, or just Rails, or just sysadmin tasks, with no further inquiry into how the rest of it binds together. A lot of developers bang their heads on the wall trying to reach the maximum efficiency of their Django app, not realizing that the reason it's slow is because of the server's storage or a DNS lookup time.

As I wrote more, I came up with a small curriculum based on what I had written already. The next step was obvious: write a damn online course, structuring everything a bit more logically. We at Emerson College recently purchased Canvas, and it became clear that this was the right delivery method for my course. Canvas is pretty great at creating an online course, but in an intimate low-volume style rather than the many MOOC-style solutions out there.

So here it is: Full Stack Web Development, available in full for free to anyone. The course covers everything from basic HTML/CSS to Javascript, PHP, MySQL, MongoDB, Ruby, Node.js, and onto concepts like systems administration and architecture and regular expressions and version control and whatnot. It's meant to be taken at one's own pace in a self-directed manner, with a heavy emphasis on building projects to demonstrate and help with learning. I'll happily answer course-related questions posted via the course's discussion page, or sent to me via Twitter.

I hope to expand the course further with more "bonus" sections that cover Go, advanced Node.js (module/library development), HTML5 game development, and maybe even some "using C/C++ for the web" guides.