Adding JavaScript Level 2 to Beginner Basics

One more module planned for Beginner Basics.

Adding JavaScript Level 2 to Beginner Basics

I'm currently in the process of migrating from a model of "one price for a giant 'course'" to "separate courses for different horses." Doing this requires changing the software a bit to add the concept of courses, which courses a user has purchased, and finally invoices that people need for all the different accounting systems in the world.

In the original Single Huge Course Model (SHCM) I had people go through HTML, CSS, and JavaScript basics. Once they did that I had them start applying those to progressively more difficult projects until they were competent enough to attempt 4 big projects. That meant you'd learn the basics, then apply them until you get good, and then try to make something.

With the new 3 tiers setup this kind of leaves the Beginner Basics course hanging. You learn HTML, then CSS, then JavaScript and...congratulations? Profit? You win?

There needs to be at least one more module that has simple projects which apply your HTML, CSS, and JavaScript knowledge. The projects would need to start very basic, warm up to pre-generated websites, then create a simple dynamic website. Nothing too crazy but comprehensive enough that you're introduced to actually making things with JavaScript.

I added the JavaScript Level 2 module to Beginner Basics and will be completing the content before August 1st, with videos coming either during or after that.

Here's the projects list:

01: Parse a CSV File

Getting warmed up by parsing a simple CSV file. A common theme I want in the courses going forward is the idea of "use someone else's code, then make a replica." Consciously copying other software and designs is easily the fastest way to learn how to make that kind of software.

02: Filter a Log File

A classic starter project I always do when I'm learning a new programming language. Despite being simple this project will quickly show if a language is effective because--if you can't parse a file--you probably can't do...anything.

03: Replicate ls

Replicating Unix command line tools is an awesome way to learn more programming techniques, and ls is a surprisingly deceptive beast to copy. You think, "It just lists a directory" then you try to sort those columns and get the file attributes...

04: Replicate find

Replicating find is an excellent way to learn how files and directory structures work, which is also essential for quite a lot of later web development. It ties into things like static file generating, processing .md files, and even reading databases.

05: Static Blog Generator

Once you know how to make a find tool you have all you need to make a simple static blog generator.

06: A First Web Application

Once you can make a static blog you can then step up to Express.js and make it dynamic. At first this is very easy and mostly just a "turn the static dynamic" operation, but then you want to add blog editing and it turns into a huge project (if you want).

07: Access a SQLite3 Database

Using knex.js to access a SQLite3 database will get you very far, but I'm going to add an advanced section to this module that shows people how to create an ORM using a very simple one I created on top of knex.js. As I said before, the best way to learn how an ORM works is to make a simple one.

08: A TODO List Website

You've got a blog, and you've got a database, what better way to combine them than to make a TODO list. Maybe you'll get millions in VC funding! (Please don't).

09: A Full Dynamic Blog

Remember when I said a Blog gets ridiculously complicated? Now you make the blog dynamic by adding in comments, editing, and other features. This could be a long project for you to sink your teeth in and chew until you are bored.

10: A Simple JSON API

The final project is learning how to add a JSON API to your blog for the commenting system. This will be totally pointless for such a small project, but will show you how a JSON API works compared to an HTML generated on the client side.

Current Status

The plan is up on the curriculum list and I'm now starting to do create the projects. I have to make them first so I know that they are actually doable by a beginner. My general rule is if I can make something in 1-2 hours then a beginner could do it in at least a week. I'll also need the samples done so people can take them to study or copy and change.

Ten Reasons Youtube's Streaming is Awful
Starting Free JavaScript Live Streams
SPA vs. MPA, FIGHT!
How to Create Your Own `npm init` and Get Off npmjs.com
Stripe is Paypal circa 2010
See More...