[{"data":1,"prerenderedAt":877},["ShallowReactive",2],{"docs-navigation":3,"doc-\u002Fteaching\u002Fapps-dev\u002Flesson-plans\u002Fjavascript-for-beginners":186,"surround-\u002Fteaching\u002Fapps-dev\u002Flesson-plans\u002Fjavascript-for-beginners":725,"notes-index":730},[4,62,127,138,149,160,175],{"title":5,"path":6,"stem":7,"children":8},"Dev","\u002Fdev","1.dev",[9,12,26,36,46,52],{"title":10,"path":6,"stem":11},"Development","1.dev\u002Findex",{"title":13,"path":14,"stem":15,"children":16},"Laravel","\u002Fdev\u002Flaravel","1.dev\u002F1.laravel\u002Findex",[17,18,22],{"title":13,"path":14,"stem":15},{"title":19,"path":20,"stem":21},"Eloquent Relationships","\u002Fdev\u002Flaravel\u002Feloquent-relationships","1.dev\u002F1.laravel\u002F1.eloquent-relationships",{"title":23,"path":24,"stem":25},"Laravel Homestead","\u002Fdev\u002Flaravel\u002Flaravel-homestead","1.dev\u002F1.laravel\u002F2.laravel-homestead",{"title":27,"path":28,"stem":29,"children":30},"Bash","\u002Fdev\u002Fbash","1.dev\u002F13.bash\u002Findex",[31,32],{"title":27,"path":28,"stem":29},{"title":33,"path":34,"stem":35},"My Bash RC","\u002Fdev\u002Fbash\u002Fbash-rc","1.dev\u002F13.bash\u002F2.bash-rc",{"title":37,"path":38,"stem":39,"children":40},"Clean Code","\u002Fdev\u002Fclean-code","1.dev\u002F15.clean-code\u002Findex",[41,42],{"title":37,"path":38,"stem":39},{"title":43,"path":44,"stem":45},"Naming Things","\u002Fdev\u002Fclean-code\u002Fnaming-things","1.dev\u002F15.clean-code\u002F1.naming-things",{"title":47,"path":48,"stem":49,"children":50},"AI Prompting","\u002Fdev\u002Fai-prompting","1.dev\u002F17.ai-prompting\u002Findex",[51],{"title":47,"path":48,"stem":49},{"title":53,"path":54,"stem":55,"children":56},"Git","\u002Fdev\u002Fgit","1.dev\u002F9.git\u002Findex",[57,58],{"title":53,"path":54,"stem":55},{"title":59,"path":60,"stem":61},"Git Cheat Sheet","\u002Fdev\u002Fgit\u002Fgit-cheat-sheet","1.dev\u002F9.git\u002F1.git-cheat-sheet",{"title":63,"path":64,"stem":65,"children":66},"Teaching","\u002Fteaching","2.teaching",[67,69],{"title":63,"path":64,"stem":68},"2.teaching\u002Findex",{"title":70,"path":71,"stem":72,"children":73},"AppsDev","\u002Fteaching\u002Fapps-dev","2.teaching\u002F1.apps-dev\u002Findex",[74,75,93,107,117],{"title":70,"path":71,"stem":72},{"title":76,"path":77,"stem":78,"children":79},"Lesson Plans","\u002Fteaching\u002Fapps-dev\u002Flesson-plans","2.teaching\u002F1.apps-dev\u002F1.lesson-plans\u002Findex",[80,81,85,89],{"title":76,"path":77,"stem":78},{"title":82,"path":83,"stem":84},"Coding with AI","\u002Fteaching\u002Fapps-dev\u002Flesson-plans\u002Fcoding-with-ai","2.teaching\u002F1.apps-dev\u002F1.lesson-plans\u002F1.coding-with-ai",{"title":86,"path":87,"stem":88},"Coding with AI: Prompts & Reading JavaScript","\u002Fteaching\u002Fapps-dev\u002Flesson-plans\u002Fprompts-and-reading-js","2.teaching\u002F1.apps-dev\u002F1.lesson-plans\u002F2.prompts-and-reading-js",{"title":90,"path":91,"stem":92},"JavaScript for Beginners","\u002Fteaching\u002Fapps-dev\u002Flesson-plans\u002Fjavascript-for-beginners","2.teaching\u002F1.apps-dev\u002F1.lesson-plans\u002F3.javascript-for-beginners",{"title":94,"path":95,"stem":96,"children":97},"Activities","\u002Fteaching\u002Fapps-dev\u002Factivities","2.teaching\u002F1.apps-dev\u002F2.activities\u002Findex",[98,99,103],{"title":94,"path":95,"stem":96},{"title":100,"path":101,"stem":102},"Dynamic Portfolio Website","\u002Fteaching\u002Fapps-dev\u002Factivities\u002Fdynamic-portfolio-website","2.teaching\u002F1.apps-dev\u002F2.activities\u002F2.dynamic-portfolio-website",{"title":104,"path":105,"stem":106},"Mini Product Store","\u002Fteaching\u002Fapps-dev\u002Factivities\u002Fmini-product-store","2.teaching\u002F1.apps-dev\u002F2.activities\u002F3.mini-product-store",{"title":108,"path":109,"stem":110,"children":111},"Exercises","\u002Fteaching\u002Fapps-dev\u002Fexercises","2.teaching\u002F1.apps-dev\u002F4.exercises\u002Findex",[112,113],{"title":108,"path":109,"stem":110},{"title":114,"path":115,"stem":116},"Read & Predict","\u002Fteaching\u002Fapps-dev\u002Fexercises\u002Fread-and-predict","2.teaching\u002F1.apps-dev\u002F4.exercises\u002F1.read-and-predict",{"title":118,"path":119,"stem":120,"children":121},"AI Prompts","\u002Fteaching\u002Fapps-dev\u002Fai-prompts","2.teaching\u002F1.apps-dev\u002F7.ai-prompts\u002Findex",[122,123],{"title":118,"path":119,"stem":120},{"title":124,"path":125,"stem":126},"Prompt Flow","\u002Fteaching\u002Fapps-dev\u002Fai-prompts\u002Fbasic-prompting","2.teaching\u002F1.apps-dev\u002F7.ai-prompts\u002F1.basic-prompting",{"title":128,"path":129,"stem":130,"children":131},"Snippets","\u002Fsnippets","3.snippets",[132,134],{"title":128,"path":129,"stem":133},"3.snippets\u002Findex",{"title":135,"path":136,"stem":137},"Debounce and Throttle","\u002Fsnippets\u002Fdebounce-and-throttle","3.snippets\u002F1.debounce-and-throttle",{"title":139,"path":140,"stem":141,"children":142},"Cheat Sheets","\u002Fcheat-sheets","4.cheat-sheets",[143,145],{"title":139,"path":140,"stem":144},"4.cheat-sheets\u002Findex",{"title":146,"path":147,"stem":148},"Vim Cheat Sheet","\u002Fcheat-sheets\u002Fvim-cheat-sheet","4.cheat-sheets\u002F1.vim-cheat-sheet",{"title":150,"path":151,"stem":152,"children":153},"Templates","\u002Ftemplates","5.templates",[154,156],{"title":150,"path":151,"stem":155},"5.templates\u002Findex",{"title":157,"path":158,"stem":159},"Pull Request Template","\u002Ftemplates\u002Fpull-request-template","5.templates\u002F1.pull-request-template",{"title":161,"path":162,"stem":163,"children":164},"Meta","\u002Fmeta","6.meta",[165,167,171],{"title":161,"path":162,"stem":166},"6.meta\u002Findex",{"title":168,"path":169,"stem":170},"Authoring Guide","\u002Fmeta\u002Fauthoring-guide","6.meta\u002F1.authoring-guide",{"title":172,"path":173,"stem":174},"Markdown Showcase","\u002Fmeta\u002Fmarkdown-showcase","6.meta\u002F2.markdown-showcase",{"title":176,"path":177,"stem":178,"children":179},"Troubleshooting","\u002Ftroubleshooting","7.troubleshooting",[180,182],{"title":176,"path":177,"stem":181},"7.troubleshooting\u002Findex",{"title":183,"path":184,"stem":185},"Fixing CORS Errors","\u002Ftroubleshooting\u002Fcors-errors","7.troubleshooting\u002F1.cors-errors",{"id":187,"title":90,"body":188,"category":63,"createdAt":708,"description":709,"draft":710,"extension":711,"featured":710,"keywords":712,"links":715,"meta":716,"navigation":717,"path":91,"readingTime":687,"seo":718,"stem":92,"tags":719,"updatedAt":708,"__hash__":724},"docs\u002F2.teaching\u002F1.apps-dev\u002F1.lesson-plans\u002F3.javascript-for-beginners.md",{"type":189,"value":190,"toc":685},"minimark",[191,213,218,221,253,257,262,270,274,573,577,580,604,608,611,625,628,632],[192,193,194,195,199,200,203,204,207,208],"p",{},"This lesson introduces the core concepts of JavaScript that every beginner needs\nbefore building interactive web applications. Throughout the slides, students\nlearn to think in ",[196,197,198],"strong",{},"data",", ",[196,201,202],{},"functions",", and ",[196,205,206],{},"reusable code"," instead of\ncopy-pasting HTML. ",[209,210,212],"content-reference",{"index":211},"0","oaicite:0",[214,215,217],"h2",{"id":216},"learning-objectives","Learning Objectives",[192,219,220],{},"After completing this lesson, students should be able to:",[222,223,224,228,231,234,237,240,243,246],"ul",{},[225,226,227],"li",{},"Explain what JavaScript is and why it exists.",[225,229,230],{},"Distinguish between HTML, CSS, and JavaScript.",[225,232,233],{},"Store data using variables, arrays, and objects.",[225,235,236],{},"Create reusable functions with parameters and return values.",[225,238,239],{},"Use loops to eliminate duplicated code.",[225,241,242],{},"Manipulate web pages through the DOM.",[225,244,245],{},"Respond to user interactions with events.",[225,247,248,249],{},"Apply all these concepts to build a simple interactive application. ",[209,250,252],{"index":251},"1","oaicite:1",[214,254,256],{"id":255},"presentation","Presentation",[192,258,259],{},[196,260,261],{},"Google Slides",[192,263,264],{},[265,266,267],"a",{"href":267,"rel":268},"https:\u002F\u002Fdocs.google.com\u002Fpresentation\u002Fd\u002F1Y57jPyfIpLOl6IYpeSZd4gjKBHWPfFcB\u002Fedit",[269],"nofollow",[214,271,273],{"id":272},"lesson-outline","Lesson Outline",[275,276,278,283,289,293,296,307,314,318,334,338,341,358,369,373,376,407,411,418,421,424,445,449,452,455,472,479,483,486,488,510,517,521,524,536,543,547,550,566],"steps",{"level":277},"2",[279,280,282],"h3",{"id":281},"what-is-javascript","What is JavaScript?",[192,284,285,286],{},"Learn what JavaScript is, why it was created, and how it brings web pages to\nlife through logic and interaction. Students see how JavaScript responds to\nuser actions such as button clicks. ",[209,287,288],{"index":277},"oaicite:2",[279,290,292],{"id":291},"html-vs-css-vs-javascript","HTML vs CSS vs JavaScript",[192,294,295],{},"Understand the responsibility of each web technology.",[222,297,298,301,304],{},[225,299,300],{},"HTML provides the structure.",[225,302,303],{},"CSS provides the appearance.",[225,305,306],{},"JavaScript provides the behavior.",[192,308,309,310],{},"Students learn why each language exists and how they work together. ",[209,311,313],{"index":312},"3","oaicite:3",[279,315,317],{"id":316},"variables","Variables",[192,319,320,321,325,326,329,330],{},"Introduce ",[322,323,324],"code",{},"let"," and ",[322,327,328],{},"const",", when to use each one, and why meaningful variable\nnames improve code readability. ",[209,331,333],{"index":332},"4","oaicite:4",[279,335,337],{"id":336},"data-types","Data Types",[192,339,340],{},"Students learn the most common JavaScript data types:",[222,342,343,346,349,352,355],{},[225,344,345],{},"String",[225,347,348],{},"Number",[225,350,351],{},"Boolean",[225,353,354],{},"Array",[225,356,357],{},"Object",[192,359,360,361,364,365],{},"Special attention is given to the concept of an ",[196,362,363],{},"array of objects",", since it\nis one of the most common data structures used in real-world applications. ",[209,366,368],{"index":367},"5","oaicite:5",[279,370,372],{"id":371},"arrays","Arrays",[192,374,375],{},"Learn how to:",[222,377,378,381,384,390,396],{},[225,379,380],{},"Create arrays",[225,382,383],{},"Access elements",[225,385,386,387],{},"Add items using ",[322,388,389],{},"push()",[225,391,392,393],{},"Remove items using ",[322,394,395],{},"pop()",[225,397,398,399,402,403],{},"Count items with ",[322,400,401],{},"length"," ",[209,404,406],{"index":405},"6","oaicite:6",[279,408,410],{"id":409},"objects","Objects",[192,412,413,414],{},"Learn how objects describe one thing using labeled properties, and how to read\nand update those properties using dot notation. ",[209,415,417],{"index":416},"7","oaicite:7",[279,419,420],{"id":202},"Functions",[192,422,423],{},"Students discover why functions exist:",[222,425,426,429,432,435,438],{},[225,427,428],{},"Avoid repeating code",[225,430,431],{},"Improve readability",[225,433,434],{},"Accept parameters",[225,436,437],{},"Return values",[225,439,440,441],{},"Build reusable logic that works for any input instead of creating one function\nper item. ",[209,442,444],{"index":443},"8","oaicite:8",[279,446,448],{"id":447},"loops","Loops",[192,450,451],{},"Learn how loops eliminate repetitive code.",[192,453,454],{},"Topics include:",[222,456,457,462,467],{},[225,458,459],{},[322,460,461],{},"for",[225,463,464],{},[322,465,466],{},"for...of",[225,468,469],{},[322,470,471],{},"forEach()",[192,473,474,475],{},"Students learn to iterate through arrays instead of writing the same code over\nand over again. ",[209,476,478],{"index":477},"9","oaicite:9",[279,480,482],{"id":481},"dom-manipulation","DOM Manipulation",[192,484,485],{},"Learn how JavaScript interacts with HTML.",[192,487,454],{},[222,489,490,495,500,505],{},[225,491,492],{},[322,493,494],{},"getElementById()",[225,496,497],{},[322,498,499],{},"querySelector()",[225,501,502],{},[322,503,504],{},"textContent",[225,506,507],{},[322,508,509],{},"innerHTML",[192,511,512,513],{},"Students begin generating page content dynamically instead of hardcoding HTML. ",[209,514,516],{"index":515},"10","oaicite:10",[279,518,520],{"id":519},"events","Events",[192,522,523],{},"Learn how JavaScript responds to user actions using:",[222,525,526,531],{},[225,527,528],{},[322,529,530],{},"onclick",[225,532,533],{},[322,534,535],{},"addEventListener()",[192,537,538,539],{},"Students make web pages interactive by responding to clicks and other browser\nevents. ",[209,540,542],{"index":541},"11","oaicite:11",[279,544,546],{"id":545},"putting-everything-together","Putting Everything Together",[192,548,549],{},"The final demonstration combines everything learned into a single example:",[222,551,552,555,558,560,563],{},[225,553,554],{},"Array of objects",[225,556,557],{},"Reusable functions",[225,559,448],{},[225,561,562],{},"DOM manipulation",[225,564,565],{},"Template literals",[192,567,568,569],{},"This serves as the bridge between the lesson and the hands-on activity. ",[209,570,572],{"index":571},"12","oaicite:12",[214,574,576],{"id":575},"next-activity","Next Activity",[192,578,579],{},"After finishing this lesson, students should complete the accompanying activity:",[581,582,583,587],"tip",{},[192,584,585],{},[196,586,104],{},[192,588,589,590,593,595,596,402,599],{},"Build a simple shopping application where products are stored in an array of\nobjects and displayed dynamically using JavaScript. The activity reinforces all\nthe concepts covered in this lesson, including variables, functions, loops, DOM\nmanipulation, event listeners, and template literals.\n",[591,592],"br",{},[591,594],{},"\n➡️ ",[196,597,598],{},"Activity:",[265,600,602],{"href":601},"\u002Fteaching\u002Factivities\u002Fmini-product-store",[322,603,601],{},[214,605,607],{"id":606},"prerequisites","Prerequisites",[192,609,610],{},"Students should have:",[222,612,613,616,619,622],{},[225,614,615],{},"Basic computer literacy",[225,617,618],{},"A code editor (Visual Studio Code recommended)",[225,620,621],{},"A modern web browser",[225,623,624],{},"Basic understanding of HTML and CSS",[192,626,627],{},"No previous JavaScript experience is required.",[214,629,631],{"id":630},"key-takeaways","Key Takeaways",[633,634,635,638,645,678],"note",{},[192,636,637],{},"The biggest lesson is not memorizing JavaScript syntax.",[192,639,640,641,644],{},"It is learning to ",[196,642,643],{},"think like a programmer",":",[222,646,647,653,659,665,668],{},[225,648,649,650,652],{},"Store information as ",[196,651,198],{},".",[225,654,655,656,652],{},"Write ",[196,657,658],{},"reusable functions",[225,660,661,662,652],{},"Use ",[196,663,664],{},"loops instead of copy-paste",[225,666,667],{},"Let JavaScript generate the interface.",[225,669,670,671,199,673,203,676,652],{},"Separate ",[196,672,198],{},[196,674,675],{},"logic",[196,677,255],{},[192,679,680,681],{},"These principles scale from a simple classroom exercise to professional web\napplications built with frameworks like Vue, Nuxt, React, and Laravel. ",[209,682,684],{"index":683},"13","oaicite:13",{"title":686,"searchDepth":687,"depth":687,"links":688},"",3,[689,691,692,705,706,707],{"id":216,"depth":690,"text":217},2,{"id":255,"depth":690,"text":256},{"id":272,"depth":690,"text":273,"children":693},[694,695,696,697,698,699,700,701,702,703,704],{"id":281,"depth":687,"text":282},{"id":291,"depth":687,"text":292},{"id":316,"depth":687,"text":317},{"id":336,"depth":687,"text":337},{"id":371,"depth":687,"text":372},{"id":409,"depth":687,"text":410},{"id":202,"depth":687,"text":420},{"id":447,"depth":687,"text":448},{"id":481,"depth":687,"text":482},{"id":519,"depth":687,"text":520},{"id":545,"depth":687,"text":546},{"id":575,"depth":690,"text":576},{"id":606,"depth":690,"text":607},{"id":630,"depth":690,"text":631},"2026-07-17","Introduction to the fundamentals of JavaScript, from variables and functions to loops, DOM manipulation, and events. This lesson prepares students for the Mini Product Store activity.",false,"md",[713,316,202,371,409,447,714,519],"javascript basics","dom",[],{},true,{"title":90,"description":709},[720,721,722,723],"javascript","beginners","programming","web development","TDZXyf69iFSB7zPC2A0yt-skj4PjkUNBJOh-gK9dETg",[726,728],{"title":86,"path":87,"stem":88,"description":727,"children":-1},"Learn how to write effective AI prompts and read JavaScript code confidently. This lesson teaches students how to direct AI instead of blindly copying its output.",{"title":94,"path":95,"stem":96,"description":729,"children":-1},"In-class activities that get students doing, not just listening.",[731,739,745,748,754,757,764,767,770,777,780,783,790,792,794,797,803,806,808,813,816,820,823,826,828,833,836,841,844,850,853,860,865,868,874],{"path":20,"title":19,"description":732,"tags":733,"category":13,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"The core Eloquent relationship types with examples and the N+1 trap to avoid.",[734,735,736,737],"laravel","eloquent","database","orm",1,{"path":24,"title":23,"description":740,"tags":741,"category":13,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"My quick reference for setting up and using Laravel Homestead during development.",[734,742,743,744],"homestead","vagrant","virtualbox",{"path":14,"title":13,"description":746,"tags":747,"category":13,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"The PHP framework for web artisans — Eloquent, routing, queues and more.",[],{"path":34,"title":33,"description":749,"tags":750,"category":27,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":690,"draft":710},"Personal Bash aliases and helper functions that streamline my Laravel and Homestead development workflow.",[751,752,753,742,734],"bash","bashrc","git bash",{"path":28,"title":27,"description":755,"tags":756,"category":27,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"Shell scripting and a faster life on the command line.",[],{"path":44,"title":43,"description":758,"tags":759,"category":37,"featured":717,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"Practical rules for naming variables, functions and types so code reads like prose.",[760,761,762,763],"clean-code","naming","readability","craft",{"path":38,"title":37,"description":765,"tags":766,"category":37,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"Writing code that other people (and future you) can read.",[],{"path":48,"title":47,"description":768,"tags":769,"category":47,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"Getting reliable, useful results out of language models.",[],{"path":60,"title":59,"description":771,"tags":772,"category":53,"featured":717,"updatedAt":708,"createdAt":708,"readingTime":690,"draft":710},"The Git commands I actually use day to day, plus how to undo things safely.",[773,774,775,776],"git","cli","version-control","cheat-sheet",{"path":54,"title":53,"description":778,"tags":779,"category":53,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"Version control — everyday commands and getting out of trouble.",[],{"path":6,"title":10,"description":781,"tags":782,"category":10,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"Languages, frameworks and the craft of building software.",[],{"path":83,"title":82,"description":784,"tags":785,"category":63,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":789,"draft":710},"An introduction to AI-assisted software development, modern development workflows, and the mindset needed to use AI responsibly throughout the course.",[786,787,788,721],"ai","software development","prompt engineering",4,{"path":87,"title":86,"description":727,"tags":791,"category":63,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":789,"draft":710},[786,720,788,721],{"path":91,"title":90,"description":709,"tags":793,"category":63,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":687,"draft":710},[720,721,722,723],{"path":77,"title":76,"description":795,"tags":796,"category":76,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"Session-by-session plans with objectives, timing and materials.",[],{"path":101,"title":100,"description":798,"tags":799,"category":94,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":687,"draft":710},"Build a personal portfolio website using JavaScript arrays, loops, and DOM manipulation instead of hardcoded HTML.",[800,801,720,802,714,447],"teaching","activity","portfolio",{"path":105,"title":104,"description":804,"tags":805,"category":94,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":687,"draft":710},"A JavaScript activity where students build a simple product store using arrays, loops, functions, DOM manipulation, and event listeners.",[800,801,720,714,371,447],{"path":95,"title":94,"description":729,"tags":807,"category":94,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},[],{"path":115,"title":114,"description":809,"tags":810,"category":94,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":690,"draft":710},"Practice reading JavaScript code, predicting its output, and verifying your understanding before running the program.",[800,801,720,202,811,812],"if-statement","debugging",{"path":109,"title":108,"description":814,"tags":815,"category":108,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"Practice problems that build skill through repetition.",[],{"path":125,"title":124,"description":817,"tags":818,"category":118,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":789,"draft":710},"A structured workflow for working with AI that emphasizes planning, review, and understanding before implementation.",[786,788,819],"workflow",{"path":119,"title":118,"description":821,"tags":822,"category":118,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"Prompt templates for teaching with and about AI.",[],{"path":71,"title":70,"description":824,"tags":825,"category":63,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"Lesson plans, activities, rubrics and student references.",[],{"path":64,"title":63,"description":824,"tags":827,"category":63,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},[],{"path":136,"title":135,"description":829,"tags":830,"category":128,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"Two tiny functions to control how often a handler runs — with the difference explained.",[720,831,832,519],"performance","snippets",{"path":129,"title":128,"description":834,"tags":835,"category":128,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"Small, copy-ready fragments you reach for again and again.",[],{"path":147,"title":146,"description":837,"tags":838,"category":139,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"The essential Vim motions and commands to get productive and get out.",[839,840,776,774],"vim","editor",{"path":140,"title":139,"description":842,"tags":843,"category":139,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"Dense, scannable references for commands and syntax.",[],{"path":158,"title":157,"description":845,"tags":846,"category":150,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"A reusable PR description template that makes reviews faster and kinder.",[773,847,848,849],"github","template","collaboration",{"path":151,"title":150,"description":851,"tags":852,"category":150,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"Reusable starting points for files, configs and docs.",[],{"path":169,"title":168,"description":854,"tags":855,"category":161,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":690,"draft":710},"The frontmatter and markdown conventions every note in this knowledge base follows.",[856,857,858,859],"meta","conventions","markdown","authoring",{"path":173,"title":172,"description":861,"tags":862,"category":161,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":690,"draft":710},"Every formatting feature this knowledge base supports, on one page — a living reference and rendering test.",[858,863,864],"mdc","reference",{"path":162,"title":161,"description":866,"tags":867,"category":161,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"How this knowledge base itself is built and maintained.",[],{"path":184,"title":183,"description":869,"tags":870,"category":176,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"What a CORS error actually means and how to fix it — on the server, where it belongs.",[871,872,873,812],"cors","http","apis",{"path":177,"title":176,"description":875,"tags":876,"category":176,"featured":710,"updatedAt":708,"createdAt":708,"readingTime":738,"draft":710},"Symptoms, causes and fixes for problems worth remembering.",[],1784276794959]