[{"data":1,"prerenderedAt":952},["ShallowReactive",2],{"docs-navigation":3,"doc-\u002Fteaching\u002Fapps-dev\u002Flesson-plans\u002Fprompts-and-reading-js":186,"surround-\u002Fteaching\u002Fapps-dev\u002Flesson-plans\u002Fprompts-and-reading-js":798,"notes-index":803},[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":86,"body":188,"category":63,"createdAt":778,"description":779,"draft":780,"extension":781,"featured":780,"keywords":782,"links":788,"meta":789,"navigation":790,"path":87,"readingTime":791,"seo":792,"stem":88,"tags":793,"updatedAt":778,"__hash__":797},"docs\u002F2.teaching\u002F1.apps-dev\u002F1.lesson-plans\u002F2.prompts-and-reading-js.md",{"type":189,"value":190,"toc":753},"minimark",[191,195,205,218,223,226,251,255,260,266,270,630,634,637,641,644,647,661,671,674,677,680,682,698,705,709],[192,193,194],"p",{},"This lesson introduces two essential skills for modern programmers:",[196,197,198,202],"ol",{},[199,200,201],"li",{},"Writing effective prompts that guide AI toward the desired solution.",[199,203,204],{},"Reading and understanding the JavaScript code that AI generates.",[192,206,207,208,212,213],{},"The objective is ",[209,210,211],"strong",{},"not"," to memorize JavaScript syntax, but to become confident\nenough to explain what AI-generated code is doing. ",[214,215,217],"content-reference",{"index":216},"0","oaicite:0",[219,220,222],"h2",{"id":221},"learning-objectives","Learning Objectives",[192,224,225],{},"After completing this lesson, students should be able to:",[227,228,229,232,235,238,241,244],"ul",{},[199,230,231],{},"Explain what a prompt is.",[199,233,234],{},"Write clearer prompts that produce better AI output.",[199,236,237],{},"Follow a structured AI workflow instead of randomly asking for code.",[199,239,240],{},"Recognize common JavaScript syntax.",[199,242,243],{},"Read and explain basic JavaScript programs.",[199,245,246,247],{},"Identify variables, functions, conditions, loops, arrays, and objects in code. ",[214,248,250],{"index":249},"1","oaicite:1",[219,252,254],{"id":253},"presentation","Presentation",[192,256,257],{},[209,258,259],{},"Google Slides",[261,262,263],"blockquote",{},[192,264,265],{},"Day 2 – Coding with AI: Prompts & Reading JavaScript",[219,267,269],{"id":268},"lesson-outline","Lesson Outline",[271,272,274,279,282,285,293,299,303,306,309,335,342,346,349,368,375,379,382,389,396,400,403,406,428,435,439,442,453,456,473,480,484,487,489,510,517,521,524,527,540,547,551,554,556,570,577,581,584,592,599,603,606,609,623],"steps",{"level":273},"2",[275,276,278],"h3",{"id":277},"why-prompting-matters","Why Prompting Matters",[192,280,281],{},"Review the previous activity where students asked AI to create a calculator.",[192,283,284],{},"Students compare two approaches:",[227,286,287,290],{},[199,288,289],{},"A vague request that leaves every decision to the AI.",[199,291,292],{},"A detailed prompt that clearly describes the desired application.",[192,294,295,296],{},"The lesson emphasizes that better prompts produce better results because the AI\ncannot read your mind. ",[214,297,298],{"index":273},"oaicite:2",[275,300,302],{"id":301},"the-four-parts-of-a-good-prompt","The Four Parts of a Good Prompt",[192,304,305],{},"Students learn a simple framework for writing prompts.",[192,307,308],{},"A good prompt includes:",[227,310,311,317,323,329],{},[199,312,313,316],{},[209,314,315],{},"Context"," – Who is the project for?",[199,318,319,322],{},[209,320,321],{},"Goal"," – What should it do?",[199,324,325,328],{},[209,326,327],{},"Requirements"," – Rules and must-have features.",[199,330,331,334],{},[209,332,333],{},"Output"," – What format should the AI produce?",[192,336,337,338],{},"This structure gives AI enough information to generate more accurate results. ",[214,339,341],{"index":340},"3","oaicite:3",[275,343,345],{"id":344},"the-prompt-loop","The Prompt Loop",[192,347,348],{},"Instead of asking AI for code immediately, students follow a repeatable workflow.",[196,350,351,354,357,360,363,365],{},[199,352,353],{},"Draft",[199,355,356],{},"Improve",[199,358,359],{},"Review",[199,361,362],{},"Plan",[199,364,359],{},[199,366,367],{},"Execute",[192,369,370,371],{},"This process keeps the student in control while allowing AI to assist with implementation. ",[214,372,374],{"index":373},"4","oaicite:4",[275,376,378],{"id":377},"why-learn-javascript","Why Learn JavaScript?",[192,380,381],{},"Students discuss an important classroom rule:",[261,383,384],{},[192,385,386],{},[209,387,388],{},"You may only submit code you can explain.",[192,390,391,392],{},"Rather than memorizing every syntax rule, students learn just enough JavaScript\nto understand the code generated by AI. ",[214,393,395],{"index":394},"5","oaicite:5",[275,397,399],{"id":398},"variables","Variables",[192,401,402],{},"Introduce variables as labeled boxes for storing information.",[192,404,405],{},"Topics include:",[227,407,408,414,419,422,425],{},[199,409,410],{},[411,412,413],"code",{},"let",[199,415,416],{},[411,417,418],{},"const",[199,420,421],{},"Variable names",[199,423,424],{},"Numbers",[199,426,427],{},"Strings",[192,429,430,431],{},"Students learn how values are stored and referenced in JavaScript. ",[214,432,434],{"index":433},"6","oaicite:6",[275,436,438],{"id":437},"values-and-operators","Values and Operators",[192,440,441],{},"Learn the basic JavaScript value types:",[227,443,444,447,450],{},[199,445,446],{},"Number",[199,448,449],{},"String",[199,451,452],{},"Boolean",[192,454,455],{},"Students also learn common operators used for:",[227,457,458,461,464,467,470],{},[199,459,460],{},"Addition",[199,462,463],{},"Subtraction",[199,465,466],{},"Multiplication",[199,468,469],{},"Division",[199,471,472],{},"Comparison",[192,474,475,476],{},"These operators form the foundation of program logic. ",[214,477,479],{"index":478},"7","oaicite:7",[275,481,483],{"id":482},"decisions-with-if-else","Decisions with if \u002F else",[192,485,486],{},"Students learn how programs make decisions.",[192,488,405],{},[227,490,491,496,501,504,507],{},[199,492,493],{},[411,494,495],{},"if",[199,497,498],{},[411,499,500],{},"else",[199,502,503],{},"Conditions",[199,505,506],{},"Comparison operators",[199,508,509],{},"Curly braces",[192,511,512,513],{},"Students practice reading conditional logic in plain English. ",[214,514,516],{"index":515},"8","oaicite:8",[275,518,520],{"id":519},"loops","Loops",[192,522,523],{},"Introduce loops as a way to repeat actions without copying code.",[192,525,526],{},"Students learn:",[227,528,529,534,537],{},[199,530,531],{},[411,532,533],{},"for...of",[199,535,536],{},"Repeating actions",[199,538,539],{},"Processing every item in a list",[192,541,542,543],{},"The emphasis is on eliminating duplicated code. ",[214,544,546],{"index":545},"9","oaicite:9",[275,548,550],{"id":549},"functions","Functions",[192,552,553],{},"Students learn that functions are reusable mini-machines.",[192,555,405],{},[227,557,558,561,564,567],{},[199,559,560],{},"Parameters",[199,562,563],{},"Return values",[199,565,566],{},"Calling functions",[199,568,569],{},"Reusability",[192,571,572,573],{},"The lesson reinforces that AI-generated code frequently uses functions, making\nthem an essential concept to recognize. ",[214,574,576],{"index":575},"10","oaicite:10",[275,578,580],{"id":579},"arrays-and-objects","Arrays and Objects",[192,582,583],{},"Students learn the difference between:",[227,585,586,589],{},[199,587,588],{},"Arrays (lists)",[199,590,591],{},"Objects (one item with details)",[192,593,594,595],{},"These structures appear constantly in modern JavaScript applications and AI-generated code. ",[214,596,598],{"index":597},"11","oaicite:11",[275,600,602],{"id":601},"reading-real-javascript","Reading Real JavaScript",[192,604,605],{},"The lesson concludes by reading an actual JavaScript function.",[192,607,608],{},"Students identify:",[227,610,611,613,615,618,621],{},[199,612,550],{},[199,614,399],{},[199,616,617],{},"Objects",[199,619,620],{},"Arrays",[199,622,503],{},[192,624,625,626],{},"The focus is on recognizing familiar building blocks rather than understanding every character of the program. ",[214,627,629],{"index":628},"12","oaicite:12",[219,631,633],{"id":632},"hands-on-activities","Hands-on Activities",[192,635,636],{},"Complete the following activities after finishing this lesson.",[275,638,640],{"id":639},"exercise-1-read-predict","Exercise 1 – Read & Predict",[192,642,643],{},"Analyze a JavaScript function before running it.",[192,645,646],{},"Students practice:",[227,648,649,652,655,658],{},[199,650,651],{},"Reading code",[199,653,654],{},"Predicting output",[199,656,657],{},"Identifying functions, variables, and conditions",[199,659,660],{},"Verifying their predictions",[192,662,663,664,667,668],{},"➡️ ",[209,665,666],{},"Activity:"," ",[411,669,670],{},"\u002Fteaching\u002Factivities\u002Fread-and-predict",[672,673],"hr",{},[275,675,100],{"id":676},"dynamic-portfolio-website",[192,678,679],{},"Build a portfolio website using JavaScript instead of hardcoded HTML.",[192,681,646],{},[227,683,684,687,689,692,695],{},[199,685,686],{},"Arrays of objects",[199,688,520],{},[199,690,691],{},"DOM manipulation",[199,693,694],{},"Reusable functions",[199,696,697],{},"Dynamic content generation",[192,699,663,700,667,702],{},[209,701,666],{},[411,703,704],{},"\u002Fteaching\u002Factivities\u002Fdynamic-portfolio-website",[219,706,708],{"id":707},"key-takeaways","Key Takeaways",[710,711,712,718,725,728,746],"note",{},[192,713,714,715,717],{},"The goal of this lesson is ",[209,716,211],{}," to become dependent on AI.",[192,719,720,721,724],{},"Instead, students should learn to ",[209,722,723],{},"direct"," AI effectively by writing clear\nprompts and verifying the generated code.",[192,726,727],{},"Remember:",[227,729,730,733,740,743],{},[199,731,732],{},"A good prompt steers the AI.",[199,734,735,736,739],{},"AI should provide a ",[209,737,738],{},"plan before code",".",[199,741,742],{},"Review the AI's work before accepting it.",[199,744,745],{},"Only submit code that you can confidently explain.",[192,747,748,749],{},"These habits prepare students to use AI as a productive programming assistant\nrather than a copy-and-paste machine. ",[214,750,752],{"index":751},"13","oaicite:13",{"title":754,"searchDepth":755,"depth":755,"links":756},"",3,[757,759,760,773,777],{"id":221,"depth":758,"text":222},2,{"id":253,"depth":758,"text":254},{"id":268,"depth":758,"text":269,"children":761},[762,763,764,765,766,767,768,769,770,771,772],{"id":277,"depth":755,"text":278},{"id":301,"depth":755,"text":302},{"id":344,"depth":755,"text":345},{"id":377,"depth":755,"text":378},{"id":398,"depth":755,"text":399},{"id":437,"depth":755,"text":438},{"id":482,"depth":755,"text":483},{"id":519,"depth":755,"text":520},{"id":549,"depth":755,"text":550},{"id":579,"depth":755,"text":580},{"id":601,"depth":755,"text":602},{"id":632,"depth":758,"text":633,"children":774},[775,776],{"id":639,"depth":755,"text":640},{"id":676,"depth":755,"text":100},{"id":707,"depth":758,"text":708},"2026-07-17","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.",false,"md",[783,784,785,786,787],"prompt engineering","chatgpt","javascript basics","reading code","ai coding",[],{},true,4,{"title":86,"description":779},[794,795,783,796],"ai","javascript","beginners","zvkDcIl0F61tSQQlrV-JF8uyd6Hnf7tUzl8qyZ7YlU0",[799,801],{"title":82,"path":83,"stem":84,"description":800,"children":-1},"An introduction to AI-assisted software development, modern development workflows, and the mindset needed to use AI responsibly throughout the course.",{"title":90,"path":91,"stem":92,"description":802,"children":-1},"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.",[804,812,818,821,827,830,837,840,843,850,853,856,859,861,865,868,875,879,882,887,890,894,897,900,902,908,911,916,919,925,928,935,940,943,949],{"path":20,"title":19,"description":805,"tags":806,"category":13,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"The core Eloquent relationship types with examples and the N+1 trap to avoid.",[807,808,809,810],"laravel","eloquent","database","orm",1,{"path":24,"title":23,"description":813,"tags":814,"category":13,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"My quick reference for setting up and using Laravel Homestead during development.",[807,815,816,817],"homestead","vagrant","virtualbox",{"path":14,"title":13,"description":819,"tags":820,"category":13,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"The PHP framework for web artisans — Eloquent, routing, queues and more.",[],{"path":34,"title":33,"description":822,"tags":823,"category":27,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":758,"draft":780},"Personal Bash aliases and helper functions that streamline my Laravel and Homestead development workflow.",[824,825,826,815,807],"bash","bashrc","git bash",{"path":28,"title":27,"description":828,"tags":829,"category":27,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"Shell scripting and a faster life on the command line.",[],{"path":44,"title":43,"description":831,"tags":832,"category":37,"featured":790,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"Practical rules for naming variables, functions and types so code reads like prose.",[833,834,835,836],"clean-code","naming","readability","craft",{"path":38,"title":37,"description":838,"tags":839,"category":37,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"Writing code that other people (and future you) can read.",[],{"path":48,"title":47,"description":841,"tags":842,"category":47,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"Getting reliable, useful results out of language models.",[],{"path":60,"title":59,"description":844,"tags":845,"category":53,"featured":790,"updatedAt":778,"createdAt":778,"readingTime":758,"draft":780},"The Git commands I actually use day to day, plus how to undo things safely.",[846,847,848,849],"git","cli","version-control","cheat-sheet",{"path":54,"title":53,"description":851,"tags":852,"category":53,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"Version control — everyday commands and getting out of trouble.",[],{"path":6,"title":10,"description":854,"tags":855,"category":10,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"Languages, frameworks and the craft of building software.",[],{"path":83,"title":82,"description":800,"tags":857,"category":63,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":791,"draft":780},[794,858,783,796],"software development",{"path":87,"title":86,"description":779,"tags":860,"category":63,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":791,"draft":780},[794,795,783,796],{"path":91,"title":90,"description":802,"tags":862,"category":63,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":755,"draft":780},[795,796,863,864],"programming","web development",{"path":77,"title":76,"description":866,"tags":867,"category":76,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"Session-by-session plans with objectives, timing and materials.",[],{"path":101,"title":100,"description":869,"tags":870,"category":94,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":755,"draft":780},"Build a personal portfolio website using JavaScript arrays, loops, and DOM manipulation instead of hardcoded HTML.",[871,872,795,873,874,519],"teaching","activity","portfolio","dom",{"path":105,"title":104,"description":876,"tags":877,"category":94,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":755,"draft":780},"A JavaScript activity where students build a simple product store using arrays, loops, functions, DOM manipulation, and event listeners.",[871,872,795,874,878,519],"arrays",{"path":95,"title":94,"description":880,"tags":881,"category":94,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"In-class activities that get students doing, not just listening.",[],{"path":115,"title":114,"description":883,"tags":884,"category":94,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":758,"draft":780},"Practice reading JavaScript code, predicting its output, and verifying your understanding before running the program.",[871,872,795,549,885,886],"if-statement","debugging",{"path":109,"title":108,"description":888,"tags":889,"category":108,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"Practice problems that build skill through repetition.",[],{"path":125,"title":124,"description":891,"tags":892,"category":118,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":791,"draft":780},"A structured workflow for working with AI that emphasizes planning, review, and understanding before implementation.",[794,783,893],"workflow",{"path":119,"title":118,"description":895,"tags":896,"category":118,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"Prompt templates for teaching with and about AI.",[],{"path":71,"title":70,"description":898,"tags":899,"category":63,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"Lesson plans, activities, rubrics and student references.",[],{"path":64,"title":63,"description":898,"tags":901,"category":63,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},[],{"path":136,"title":135,"description":903,"tags":904,"category":128,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"Two tiny functions to control how often a handler runs — with the difference explained.",[795,905,906,907],"performance","snippets","events",{"path":129,"title":128,"description":909,"tags":910,"category":128,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"Small, copy-ready fragments you reach for again and again.",[],{"path":147,"title":146,"description":912,"tags":913,"category":139,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"The essential Vim motions and commands to get productive and get out.",[914,915,849,847],"vim","editor",{"path":140,"title":139,"description":917,"tags":918,"category":139,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"Dense, scannable references for commands and syntax.",[],{"path":158,"title":157,"description":920,"tags":921,"category":150,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"A reusable PR description template that makes reviews faster and kinder.",[846,922,923,924],"github","template","collaboration",{"path":151,"title":150,"description":926,"tags":927,"category":150,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"Reusable starting points for files, configs and docs.",[],{"path":169,"title":168,"description":929,"tags":930,"category":161,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":758,"draft":780},"The frontmatter and markdown conventions every note in this knowledge base follows.",[931,932,933,934],"meta","conventions","markdown","authoring",{"path":173,"title":172,"description":936,"tags":937,"category":161,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":758,"draft":780},"Every formatting feature this knowledge base supports, on one page — a living reference and rendering test.",[933,938,939],"mdc","reference",{"path":162,"title":161,"description":941,"tags":942,"category":161,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"How this knowledge base itself is built and maintained.",[],{"path":184,"title":183,"description":944,"tags":945,"category":176,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"What a CORS error actually means and how to fix it — on the server, where it belongs.",[946,947,948,886],"cors","http","apis",{"path":177,"title":176,"description":950,"tags":951,"category":176,"featured":780,"updatedAt":778,"createdAt":778,"readingTime":811,"draft":780},"Symptoms, causes and fixes for problems worth remembering.",[],1784276794836]