Don't like this style? Click here to change it! blue.css
I'm going to make a series of web exercises which you can return to as often as you'd like to build mastery. Each one could be done many times with various focuses, a first time to just make some progress, another time to explore a different framework, or another time to observe common error states and explore design patterns for solving them.
I imagine sending students wanting to level up to this page for self-study.
A kata is a martial arts movement pattern which you can practice repeatedly making small tweaks to and learning motions that can later be applied in practice.
Each Kata has a few components:
Skills: Event listeners, CSS Selectors, DOM manipulation
Variants: make a click counter; try other event types; dynamically make more buttons; create a game from your buttons; do this with some frameworks/library and compare (jquery, react, vue, angular, etc.)
Traps: zombie event listeners, event bubbling
Skills: input field (value), different event listeners, so many input types
Variants: greet someone by their name; show their favorite color; play a guessing game with them; bind the data to/from a variable/object; make a choose your own adventure game
Traps: timing of change/keyup events when firing a slow process (e.g. API fetch), knowing which input maps to which variables
Skills: use a public API, AJAX requests, templating
Variants: load live stock prices, use location services to get weather in your area, subscribe to a blog RSS feed, try it with websockets
Traps: long-polling vs pushes for live data, header values for certain services, CORS will waste your time one day
Skills: wiring up a database, making an API, database design, HTTP request payloads
Variants: Make a REST API; Try Node/PHP/Flask; Try SQLite3/MySQL/MongoDB; Try Firebase; Try an AWS DB (RDS/DynamoDB); Try GraphQL;
Traps: so many that this is a class but: indexing for performance, read/write ratios, to normalize or not, structuring a DB can be subtle
Skills: deploying to a CDN, creating DNS records, configuring server settings
Variants: Use an S3 bucket; Github pages; A single-page app dynamically rendering the pages; Hybrid static/dynamic pages
Traps: HTTPS, uptime with variable traffic, subdomains, wiring a port to a domain, htaccess rules
Skills: Basic Password Checking vs Wiring up third-party OAuth
Variants: Anonymous Logins; JWTs vs Sessions; Role-Based Access Control
Traps:Password best practices, OAuth callback config and refresh tokens, JWT hackery