[





 {
  "title": "Happy New Year 2025",
  "categories": ["blog"],
  "url": "/blog/happy-new-year-2025",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Happy New Year 2025",
  "metaDescription": "2025? More like 2020 5, amiright?",
  "metaImage": "/blog/images/happy-new-year-2025/bees-thumbnail.jpg",
  "tags": ["new-year"],
  "date": "2025-01-01 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "Machine Learning",
  "categories": ["tutorials","how-to"],
  "url": "/tutorials/how-to/machine-learning",
  "thumbnail": "/tutorials/how-to/images/ml-14.png",
  "tagline": "Demystifying ML",
  "metaTitle": "Machine Learning",
  "metaDescription": "Demystifying ML",
  "metaImage": "/tutorials/how-to/images/ml-14.png",
  "tags": ["tutorial","how-to"],
  "date": "2024-11-17 00:00:00 +0000",
  "printedPages": 15
 },





 {
  "title": "APIs",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/apis",
  "thumbnail": "/tutorials/javascript/images/apis-1.png",
  "tagline": "Interact with data from API endpoints.",
  "metaTitle": "APIs Tutorial",
  "metaDescription": "Interact with data from API endpoints.",
  "metaImage": "/tutorials/javascript/images/apis-1.png",
  "tags": ["tutorial","javascript","ajax","fetch","apis"],
  "date": "2024-11-07 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "GitHub Desktop",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/github-desktop",
  "thumbnail": "/tutorials/html/images/github-desktop-1.png",
  "tagline": "Work with GitHub files on your computer.",
  "metaTitle": "GitHub Desktop",
  "metaDescription": "Work with GitHub files on your computer.",
  "metaImage": "/tutorials/html/images/github-desktop-1.png",
  "tags": ["tutorial","html","github-pages"],
  "date": "2024-11-01 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Website Builders",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/website-builders",
  "thumbnail": "/tutorials/html/images/website-builders-1.jpg",
  "tagline": "Build a website without code.",
  "metaTitle": "Website Builders",
  "metaDescription": "Build a website without code.",
  "metaImage": "/tutorials/html/images/website-builders-1.jpg",
  "tags": ["tutorial","html"],
  "date": "2024-08-16 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Intro to the Internet",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/intro-to-the-internet",
  "thumbnail": "/tutorials/html/images/internet-1.jpg",
  "tagline": "Inter-what?",
  "metaTitle": "Intro to the Internet",
  "metaDescription": "Inter-what?",
  "metaImage": "/tutorials/html/images/internet-1.jpg",
  "tags": ["tutorial","html"],
  "date": "2024-08-14 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "The Fault in Our Defaults",
  "categories": ["blog"],
  "url": "/blog/fault-in-defaults",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "The Fault in Our Defaults",
  "metaDescription": "This post started as a devlog about removing Google Analytics, and turned into a rant about the evils of big tech defaults.",
  "metaImage": "/blog/images/fault-in-defaults/thumbnail.png",
  "tags": ["dev-log","site-update"],
  "date": "2024-04-16 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Contribute a Background",
  "categories": ["tutorials","how-to"],
  "url": "/tutorials/how-to/contribute-a-background",
  "thumbnail": "/tutorials/how-to/images/add-a-background-thumbnail.png",
  "tagline": "Contribute your own background image to Happy Coding!",
  "metaTitle": "How to Contribute a Background",
  "metaDescription": "Contribute your own background image to Happy Coding!",
  "metaImage": "/tutorials/how-to/images/add-a-background-thumbnail.png",
  "tags": ["tutorial","how-to","meta"],
  "date": "2024-01-30 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Homepage Update",
  "categories": ["blog"],
  "url": "/blog/homepage-update",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Homepage Update",
  "metaDescription": "Don't judge a website by its homepage.",
  "metaImage": "/blog/images/homepage-update/thumbnail-1.png",
  "tags": ["dev-log","site-update"],
  "date": "2024-01-30 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Vera Molnár Squares",
  "categories": ["tutorials","p5js","for-loops"],
  "url": "/tutorials/p5js/for-loops/vera-molnar-squares",
  "thumbnail": "/tutorials/p5js/for-loops/images/vera-molnar-squares-1.png",
  "tagline": "Code a design inspired by Vera Molnár.",
  "metaTitle": "Vera Molnár Squares - p5.js Code Along",
  "metaDescription": "Code a design inspired by Vera Molnár.",
  "metaImage": "/tutorials/p5js/for-loops/images/vera-molnar-squares-1.png",
  "tags": ["example","p5.js","javascript","for-loops","genuary"],
  "date": "2024-01-11 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Happy New Year 2024",
  "categories": ["blog"],
  "url": "/blog/happy-new-year-2024",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Happy New Year 2024",
  "metaDescription": "2024? More like 2020 4, amiright?",
  "metaImage": "/blog/images/happy-new-year-2024/welcome-to-eugene-thumbnail.jpg",
  "tags": ["new-year"],
  "date": "2024-01-01 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "Technical Interviewing (Fall 2023)",
  "categories": ["teaching"],
  "url": "/teaching/technical-interviewing-2023-fall",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Technical Interviewing (Fall 2023)",
  "metaDescription": "What to expect and how to approach tech interviews.",
  "metaImage": "/tutorials/interviewing/images/interviewing-1.jpg",
  "tags": [],
  "date": "2023-12-25 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "System Design",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/system-design",
  "thumbnail": "/tutorials/interviewing/images/system-design-1.jpg",
  "tagline": "Break the system down.",
  "metaTitle": "System Design - Technical Interviewing Tutorial",
  "metaDescription": "Break the system down.",
  "metaImage": "/tutorials/interviewing/images/system-design-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-11-12 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Matrices",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/matrices",
  "thumbnail": "/tutorials/interviewing/images/matrices-1.jpg",
  "tagline": "Enter the matrix.",
  "metaTitle": "Matrices - Technical Interviewing Tutorial",
  "metaDescription": "Enter the matrix.",
  "metaImage": "/tutorials/interviewing/images/matrices-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-11-05 00:00:00 +0000",
  "printedPages": 12
 },





 {
  "title": "Graphs",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/graphs",
  "thumbnail": "/tutorials/interviewing/images/graphs-1.jpg",
  "tagline": "It's all connected.",
  "metaTitle": "Graphs - Technical Interviewing Tutorial",
  "metaDescription": "It's all connected.",
  "metaImage": "/tutorials/interviewing/images/graphs-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-10-28 00:00:00 +0000",
  "printedPages": 17
 },





 {
  "title": "Trees",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/trees",
  "thumbnail": "/tutorials/interviewing/images/trees-1.jpg",
  "tagline": "Make like a tree node.",
  "metaTitle": "Trees - Interviewing Tutorial",
  "metaDescription": "Make like a tree node.",
  "metaImage": "/tutorials/interviewing/images/trees-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-10-22 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Linked Lists",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/linked-lists",
  "thumbnail": "/tutorials/interviewing/images/linked-lists-1.jpg",
  "tagline": "One thing leads to another.",
  "metaTitle": "Linked Lists - Interviewing Tutorial",
  "metaDescription": "One thing leads to another.",
  "metaImage": "/tutorials/interviewing/images/linked-lists-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-10-15 00:00:00 +0000",
  "printedPages": 11
 },





 {
  "title": "Taylor Swift Markov Model",
  "categories": ["tutorials","java","creating-classes"],
  "url": "/tutorials/java/creating-classes/taylor-swift-markov-model",
  "thumbnail": "/tutorials/java/images/taylor-swift-2.png",
  "tagline": "Teach an AI to write Taylor Swift lyrics.",
  "metaTitle": "Taylor Swift Markov Model - Java Example",
  "metaDescription": "Teach an AI to write Taylor Swift lyrics.",
  "metaImage": "/tutorials/java/images/taylor-swift-2.png",
  "tags": ["example","java"],
  "date": "2023-10-10 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Behavioral Interviews",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/behavioral",
  "thumbnail": "/tutorials/interviewing/images/behavioral-1.jpg",
  "tagline": "Where do you see yourself in five years?",
  "metaTitle": "Behavioral Interviews - Interviewing Tutorial",
  "metaDescription": "Where do you see yourself in five years?",
  "metaImage": "/tutorials/interviewing/images/behavioral-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-09-29 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Resumes",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/resumes",
  "thumbnail": "/tutorials/interviewing/images/resumes-1.jpg",
  "tagline": "Your first chance to make a first impression.",
  "metaTitle": "Resumes - Interviewing Tutorial",
  "metaDescription": "Your first chance to make a first impression.",
  "metaImage": "/tutorials/interviewing/images/resumes-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-09-28 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Dynamic Programming",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/dynamic-programming",
  "thumbnail": "/tutorials/interviewing/images/dynamic-programming-1.jpg",
  "tagline": "Remember calculations to improve efficiency.",
  "metaTitle": "Dynamic Programming - Interviewing Tutorial",
  "metaDescription": "Remember calculations to improve efficiency.",
  "metaImage": "/tutorials/interviewing/images/dynamic-programming-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-09-20 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "Merge Sort",
  "categories": ["tutorials","interviewing","recursion"],
  "url": "/tutorials/interviewing/recursion/merge-sort",
  "thumbnail": "/tutorials/interviewing/images/recursion-1.jpg",
  "tagline": "Use recursion to sort an array.",
  "metaTitle": "Merge Sort - Leetcode Code Along",
  "metaDescription": "Use recursion to sort an array.",
  "metaImage": "/tutorials/interviewing/images/recursion-1.jpg",
  "tags": ["example","java","arrays","interviewing"],
  "date": "2023-09-19 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Stacks",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/stacks",
  "thumbnail": "/tutorials/interviewing/images/stacks-1.jpg",
  "tagline": "Last in first out.",
  "metaTitle": "Stacks - Interviewing Tutorial",
  "metaDescription": "Use Stack data structures in technical interviews.",
  "metaImage": "/tutorials/interviewing/images/stacks-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-09-17 00:00:00 +0000",
  "printedPages": 10
 },





 {
  "title": "Recursion",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/recursion",
  "thumbnail": "/tutorials/interviewing/images/recursion-1.jpg",
  "tagline": "To understand recursion, first understand recursion.",
  "metaTitle": "Recursion - Interviewing Tutorial",
  "metaDescription": "Use recursion in technical interviews.",
  "metaImage": "/tutorials/interviewing/images/recursion-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-09-17 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Queues",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/queues",
  "thumbnail": "/tutorials/interviewing/images/queues-1.jpg",
  "tagline": "First in first out.",
  "metaTitle": "Queues - Interviewing Tutorial",
  "metaDescription": "Use Queue data structures in technical interviews.",
  "metaImage": "/tutorials/interviewing/images/queues-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-09-17 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Sets",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/sets",
  "thumbnail": "/tutorials/interviewing/images/sets-1.jpg",
  "tagline": "There can be only one.",
  "metaTitle": "Sets",
  "metaDescription": "There can be only one.",
  "metaImage": "/tutorials/interviewing/images/sets-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-09-10 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Maps",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/maps",
  "thumbnail": "/tutorials/interviewing/images/maps-1.jpg",
  "tagline": "When in doubt, put it in a HashMap.",
  "metaTitle": "Maps",
  "metaDescription": "When in doubt, put it in a HashMap.",
  "metaImage": "/tutorials/interviewing/images/maps-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-09-09 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "Valid Palindrome",
  "categories": ["tutorials","interviewing","arrays"],
  "url": "/tutorials/interviewing/arrays/valid-palindrome",
  "thumbnail": "/tutorials/interviewing/images/arrays-1.jpg",
  "tagline": "Return whether a string is the same forward and backward.",
  "metaTitle": "Valid Palindrome - Leetcode Code Along",
  "metaDescription": "Return whether a string is the same forward and backward.",
  "metaImage": "/tutorials/interviewing/images/arrays-1.jpg",
  "tags": ["example","java","arrays","interviewing"],
  "date": "2023-08-20 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Search Insert Position",
  "categories": ["tutorials","interviewing","arrays"],
  "url": "/tutorials/interviewing/arrays/search-insert-position",
  "thumbnail": "/tutorials/interviewing/images/arrays-1.jpg",
  "tagline": "Return the index of an item, even if it's not in the array.",
  "metaTitle": "Search Insert Position - Leetcode 35 Code Along",
  "metaDescription": "Return the index of an item, even if it's not in the array.",
  "metaImage": "/tutorials/interviewing/images/arrays-1.jpg",
  "tags": ["example","java","arrays","interviewing"],
  "date": "2023-08-20 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Remove Element",
  "categories": ["tutorials","interviewing","arrays"],
  "url": "/tutorials/interviewing/arrays/remove-element",
  "thumbnail": "/tutorials/interviewing/images/arrays-1.jpg",
  "tagline": "Remove an element from an array in-place.",
  "metaTitle": "Remove Element - Leetcode 27 Code Along",
  "metaDescription": "Return the index of an item, even if it's not in the array.",
  "metaImage": "/tutorials/interviewing/images/arrays-1.jpg",
  "tags": ["example","java","arrays","interviewing"],
  "date": "2023-08-20 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Resources",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/resources",
  "thumbnail": "/tutorials/interviewing/images/resources-1.jpg",
  "tagline": "Links and other resources for interview practice.",
  "metaTitle": "Resources",
  "metaDescription": "Links and other resources for technical interview practice.",
  "metaImage": "/tutorials/interviewing/images/resources-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-08-06 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Picking a Language",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/picking-a-language",
  "thumbnail": "/tutorials/interviewing/images/picking-a-language-1.jpg",
  "tagline": "What programming language should I use in a job interview?",
  "metaTitle": "Picking a Language",
  "metaDescription": "What programming language should I use in a job interview?",
  "metaImage": "/tutorials/interviewing/images/picking-a-language-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-08-06 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Motivation",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/motivation",
  "thumbnail": "/tutorials/interviewing/images/motivation-1.jpg",
  "tagline": "Some disclaimers and opinions before we dive into interviewing.",
  "metaTitle": "Motivation",
  "metaDescription": "Some disclaimers and opinions before we dive into interviewing.",
  "metaImage": "/tutorials/interviewing/images/motivation-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-08-06 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "History",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/history",
  "thumbnail": "/tutorials/interviewing/images/history-1.jpg",
  "tagline": "A Brief History of Data Structures, Algorithms, and Tech Interviews",
  "metaTitle": "A Brief History of Data Structures, Algorithms, and Tech Interviews",
  "metaDescription": "A Brief History of Data Structures, Algorithms, and Tech Interviews",
  "metaImage": "/tutorials/interviewing/images/history-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-08-06 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "Fundamentals",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/fundamentals",
  "thumbnail": "/tutorials/interviewing/images/fundamentals-1.jpg",
  "tagline": "Your interviews might include a linked list, but they'll definitely include a for loop.",
  "metaTitle": "Fundamentals",
  "metaDescription": "Your interviews might include a linked list, but they'll definitely include a for loop.",
  "metaImage": "/tutorials/interviewing/images/fundamentals-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-08-06 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Complexity",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/complexity",
  "thumbnail": "/tutorials/interviewing/images/complexity-1.jpg",
  "tagline": "How to measure time and space complexity.",
  "metaTitle": "Complexity",
  "metaDescription": "How to measure time and space complexity.",
  "metaImage": "/tutorials/interviewing/images/complexity-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-08-06 00:00:00 +0000",
  "printedPages": 16
 },





 {
  "title": "Arrays and Strings",
  "categories": ["tutorials","interviewing"],
  "url": "/tutorials/interviewing/arrays",
  "thumbnail": "/tutorials/interviewing/images/arrays-1.jpg",
  "tagline": "The most common data structures in interview questions.",
  "metaTitle": "Arrays and Strings",
  "metaDescription": "The most common data structures in interview questions.",
  "metaImage": "/tutorials/interviewing/images/arrays-1.jpg",
  "tags": ["tutorial","interviewing"],
  "date": "2023-08-06 00:00:00 +0000",
  "printedPages": 13
 },





 {
  "title": "Square Lines",
  "categories": ["tutorials","p5js","animation"],
  "url": "/tutorials/p5js/animation/square-lines",
  "thumbnail": "/tutorials/p5js/animation/images/square-lines-1.png",
  "tagline": "Fill a square with lines.",
  "metaTitle": "p5.js Example - Square Lines",
  "metaDescription": "Fill a square with lines.",
  "metaImage": "/tutorials/p5js/animation/images/square-lines-1.png",
  "tags": ["example","p5.js","javascript","random","animation","geometric"],
  "date": "2023-06-04 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Distance Comparison Map",
  "categories": ["tutorials","javascript","libraries"],
  "url": "/tutorials/javascript/libraries/distance-comparison-map",
  "thumbnail": "/tutorials/javascript/libraries/images/distance-comparison-map-1.png",
  "tagline": "Compare distances on multiple maps.",
  "metaTitle": "Distance Comparison Map",
  "metaDescription": "Compare distances on multiple maps.",
  "metaImage": "/tutorials/javascript/libraries/images/distance-comparison-map-1.png",
  "tags": ["example","javascript","libraries","maps"],
  "date": "2023-05-24 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Pixel Spinner",
  "categories": ["tutorials","processing","images"],
  "url": "/tutorials/processing/images/pixel-spinner",
  "thumbnail": "/tutorials/processing/images/images/pixel-spinner-1.png",
  "tagline": "Move pixels around the center.",
  "metaTitle": "Pixel Spinner",
  "metaDescription": "Use Processing to move pixels around the center of an image.",
  "metaImage": "/tutorials/processing/images/images/pixel-spinner-1.png",
  "tags": ["example","processing","images","glitch-art"],
  "date": "2023-05-08 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "What's Next?",
  "categories": ["teaching","intro-to-web-dev-2023-spring"],
  "url": "/teaching/intro-to-web-dev-2023-spring/next",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/next.png",
  "tagline": "How to keep going after class ends.",
  "metaTitle": "What's Next? - Intro to Web Dev",
  "metaDescription": "How to keep going after class ends.",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/next.png",
  "tags": ["teaching"],
  "date": "2023-04-27 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Extra Topics - Week 14",
  "categories": ["teaching","intro-to-web-dev-2023-spring"],
  "url": "/teaching/intro-to-web-dev-2023-spring/week-14-extra-topics",
  "thumbnail": "/tutorials/processing/images/creating-functions-7.png",
  "tagline": "Other web dev topics that didn't fit in other weeks.",
  "metaTitle": "Extra Topics - Intro to Web Dev Week 14",
  "metaDescription": "Other web dev topics that didn't fit in other weeks.",
  "metaImage": "/tutorials/processing/images/creating-functions-7.png",
  "tags": ["teaching"],
  "date": "2023-03-26 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Final Project",
  "categories": ["teaching","intro-to-web-dev-2023-spring"],
  "url": "/teaching/intro-to-web-dev-2023-spring/final-project",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/final-project/final-project.png",
  "tagline": "Practice everything you learned by making your own webpage from scratch!",
  "metaTitle": "Final Project - Intro to Creative Web Dev",
  "metaDescription": "Practice everything you learned by making your own webpage from scratch!",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/final-project/final-project.png",
  "tags": ["teaching"],
  "date": "2023-03-26 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "GitHub Pages - Week 13",
  "categories": ["teaching","intro-to-web-dev-2023-spring"],
  "url": "/teaching/intro-to-web-dev-2023-spring/week-13-github-pages",
  "thumbnail": "/tutorials/html/images/github-pages-8.png",
  "tagline": "Create your own webpage using GitHub Pages.",
  "metaTitle": "GitHub Pages - Intro to Web Dev Week 13",
  "metaDescription": "Create your own webpage using GitHub Pages.",
  "metaImage": "/tutorials/html/images/github-pages-8.png",
  "tags": ["teaching","html","javascript","libraries","bootstrap"],
  "date": "2023-03-25 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Bootstrap - Week 12",
  "categories": ["teaching","intro-to-web-dev-2023-spring"],
  "url": "/teaching/intro-to-web-dev-2023-spring/week-12-bootstrap",
  "thumbnail": "/tutorials/javascript/images/bootstrap-3.png",
  "tagline": "Design a webpage using Bootstrap.",
  "metaTitle": "Bootstrap - Intro to Web Dev Week 12",
  "metaDescription": "Design a webpage using Bootstrap.",
  "metaImage": "/tutorials/javascript/images/bootstrap-3.png",
  "tags": ["teaching","html","javascript","libraries","bootstrap"],
  "date": "2023-03-25 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "JavaScript Libraries - Week 11",
  "categories": ["teaching","intro-to-web-dev-2023-spring"],
  "url": "/teaching/intro-to-web-dev-2023-spring/week-11-libraries",
  "thumbnail": "/tutorials/javascript/images/libraries-1.png",
  "tagline": "Use code written by other people.",
  "metaTitle": "JavaScript Libraries - Intro to Web Dev Week 13",
  "metaDescription": "Use code written by other people.",
  "metaImage": "/tutorials/javascript/images/libraries-1.png",
  "tags": ["teaching","html","javascript"],
  "date": "2023-03-23 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "If Statements - Week 10",
  "categories": ["teaching","intro-to-web-dev-2023-spring"],
  "url": "/teaching/intro-to-web-dev-2023-spring/week-10-if-statements",
  "thumbnail": "/tutorials/javascript/images/if-statements-1.png",
  "tagline": "Make decisions in your code.",
  "metaTitle": "If Statements - Intro to Web Dev Week 10",
  "metaDescription": "Use JavaScript to make decisions in your code.",
  "metaImage": "/tutorials/javascript/images/if-statements-1.png",
  "tags": ["teaching","html","javascript"],
  "date": "2023-03-16 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "JavaScript - Week 09",
  "categories": ["teaching","intro-to-web-dev-2023-spring"],
  "url": "/teaching/intro-to-web-dev-2023-spring/week-09-javascript",
  "thumbnail": "/tutorials/javascript/images/js-1.png",
  "tagline": "Use JavaScript to make your page interactive.",
  "metaTitle": "JavaScript - Intro to Web Dev Week 09",
  "metaDescription": "Use JavaScript to make your page interactive.",
  "metaImage": "/tutorials/javascript/images/calling-javascript-3.png",
  "tags": ["teaching","html","javascript"],
  "date": "2023-03-12 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Creating Variables - Week 07",
  "categories": ["teaching","intro-to-web-dev-2023-spring"],
  "url": "/teaching/intro-to-web-dev-2023-spring/week-07-creating-variables",
  "thumbnail": "/tutorials/processing/images/creating-functions-7.png",
  "tagline": "Store information and make p5.js do math for you.",
  "metaTitle": "Creating Variables - Intro to Web Dev Week 07",
  "metaDescription": "Store information and make p5.js do math for you.",
  "metaImage": "/tutorials/processing/images/creating-functions-7.png",
  "tags": ["teaching"],
  "date": "2023-02-23 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Using Variables - Week 06",
  "categories": ["teaching","intro-to-web-dev-2023-spring"],
  "url": "/teaching/intro-to-web-dev-2023-spring/week-06-using-variables",
  "thumbnail": "/tutorials/processing/images/using-variables-7.png",
  "tagline": "Learn how to get information from the computer.",
  "metaTitle": "Using Variables - Intro to Web Dev Week 06",
  "metaDescription": "Learn how to get information from the computer.",
  "metaImage": "/tutorials/processing/images/using-variables-7.png",
  "tags": ["teaching"],
  "date": "2023-02-16 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Mastodon Bot",
  "categories": ["tutorials","java","libraries"],
  "url": "/tutorials/java/libraries/mastodon4j",
  "thumbnail": "/tutorials/java/libraries/images/mastodon4j-1.png",
  "tagline": "Create a Mastodon bot using Mastodon4j",
  "metaTitle": "Creating a Mastodon bot using Java and Mastodon4j",
  "metaDescription": "Create a Mastodon bot using Mastodon4j",
  "metaImage": "/tutorials/java/libraries/images/mastodon4j-1.png",
  "tags": ["example","java","libraries","mastodon"],
  "date": "2023-02-11 00:00:00 +0000",
  "printedPages": 13
 },





 {
  "title": "p5.js - Week 05",
  "categories": ["teaching","intro-to-web-dev-2023-spring"],
  "url": "/teaching/intro-to-web-dev-2023-spring/week-05-p5js",
  "thumbnail": "/tutorials/p5js/images/hello-world-3.png",
  "tagline": "Use p5.js to draw a sketch.",
  "metaTitle": "p5.js - Intro to Web Dev Week 05",
  "metaDescription": "Use p5.js to draw a sketch.",
  "metaImage": "/tutorials/p5js/images/hello-world-3.png",
  "tags": ["teaching","p5js"],
  "date": "2023-02-09 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Layout - Week 04",
  "categories": ["teaching","intro-to-web-dev-2023-spring"],
  "url": "/teaching/intro-to-web-dev-2023-spring/week-04-layout",
  "thumbnail": "/tutorials/html/images/layout-1.png",
  "tagline": "Use CSS to lay out your page.",
  "metaTitle": "Layout - Intro to Web Dev Week 04",
  "metaDescription": "Use CSS to lay out your page.",
  "metaImage": "/tutorials/html/images/layout-1.png",
  "tags": ["teaching","html","css"],
  "date": "2023-02-02 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "CSS - Week 03",
  "categories": ["teaching","intro-to-web-dev-2023-spring"],
  "url": "/teaching/intro-to-web-dev-2023-spring/week-03-css",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/week-02-css/css.png",
  "tagline": "Style your webpage.",
  "metaTitle": "CSS - Intro to Web Dev Week 03",
  "metaDescription": "Style your webpage.",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/week-02-css/css.png",
  "tags": ["teaching","html","css"],
  "date": "2023-01-26 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Arc Scribbler",
  "categories": ["gallery"],
  "url": "/gallery/arc-scribbler",
  "thumbnail": "/gallery/images/arc-scribbler-1.png",
  "tagline": "Turn left, turn right, repeat.",
  "metaTitle": "Arc Scribbler",
  "metaDescription": "Turn left, turn right, repeat.",
  "metaImage": "/gallery/images/arc-scribbler-1.png",
  "tags": [],
  "date": "2023-01-16 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Online Code Editors",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/online-code-editors",
  "thumbnail": "/tutorials/html/images/neocities-1.png",
  "tagline": "Write HTML directly in your browser.",
  "metaTitle": "Online Code Editors",
  "metaDescription": "Write HTML directly in your browser.",
  "metaImage": "/tutorials/html/images/neocities-1.png",
  "tags": ["tutorial","html"],
  "date": "2023-01-15 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Nesting HTML Tags",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/nesting-html-tags",
  "thumbnail": "/tutorials/html/images/html-2.png",
  "tagline": "Put HTML tags inside other HTML tags.",
  "metaTitle": "Nesting HTML Tags",
  "metaDescription": "Put HTML tags inside other HTML tags.",
  "metaImage": "/tutorials/html/images/html-3.png",
  "tags": ["tutorial","html"],
  "date": "2023-01-15 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "Local Files",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/local-files",
  "thumbnail": "/tutorials/html/images/html-2.png",
  "tagline": "Write HTML on your own computer.",
  "metaTitle": "Local Files",
  "metaDescription": "Write HTML on your own computer.",
  "metaImage": "/tutorials/html/images/html-3.png",
  "tags": ["tutorial","html"],
  "date": "2023-01-15 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Nesting HTML Tags - Week 02",
  "categories": ["teaching","intro-to-web-dev-2023-spring"],
  "url": "/teaching/intro-to-web-dev-2023-spring/week-02-nesting-html-tags",
  "thumbnail": "/tutorials/html/images/html-3.png",
  "tagline": "Put HTML tags inside other HTML tags.",
  "metaTitle": "Nesting HTML Tags - Intro to Web Dev Week 02",
  "metaDescription": "Put HTML tags inside other HTML tags.",
  "metaImage": "/tutorials/html/images/html-3.png",
  "tags": ["teaching","html"],
  "date": "2023-01-15 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "HTML - Week 01",
  "categories": ["teaching","intro-to-web-dev-2023-spring"],
  "url": "/teaching/intro-to-web-dev-2023-spring/week-01-html",
  "thumbnail": "/tutorials/html/images/html-3.png",
  "tagline": "Build your own webpage.",
  "metaTitle": "HTML - Intro to Web Dev Week 01",
  "metaDescription": "Build your own webpage.",
  "metaImage": "/tutorials/html/images/html-3.png",
  "tags": ["teaching","html"],
  "date": "2023-01-14 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Truchet Tiles",
  "categories": ["tutorials","p5js","images"],
  "url": "/tutorials/p5js/images/truchet-tiles",
  "thumbnail": "/tutorials/p5js/images/images/truchet-tiles-1.png",
  "tagline": "Rotate interlocking images to create a pattern.",
  "metaTitle": "Truchet Tiles - p5.js Example",
  "metaDescription": "Rotate interlocking images to create a pattern.",
  "metaImage": "/tutorials/p5js/images/images/truchet-tiles-1.png",
  "tags": ["example","p5.js","javascript","images","genuary"],
  "date": "2023-01-09 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Glitch Lines",
  "categories": ["tutorials","processing","images"],
  "url": "/tutorials/processing/images/glitch-lines",
  "thumbnail": "/tutorials/processing/images/images/glitch-lines-1.png",
  "tagline": "Make glitch art from your images.",
  "metaTitle": "Glitch Lines",
  "metaDescription": "Use Processing to make glitch art from your images.",
  "metaImage": "/tutorials/processing/images/images/glitch-lines-1.png",
  "tags": ["example","processing","images","glitch-art","genuary"],
  "date": "2023-01-03 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Earth Moon Emoji Orbit",
  "categories": ["tutorials","p5js","arrays"],
  "url": "/tutorials/p5js/arrays/earth-moon-emoji-orbit",
  "thumbnail": "/tutorials/p5js/arrays/images/earth-moon-emoji-orbit-1.png",
  "tagline": "Use arrays of emojis to show the moon orbiting the earth.",
  "metaTitle": "Earth Moon Emoji Orbit - p5.js Tutorial",
  "metaDescription": "Use arrays of emojis to show the moon orbiting the earth.",
  "metaImage": "/tutorials/p5js/arrays/images/earth-moon-emoji-orbit-1.png",
  "tags": ["example","p5.js","javascript","arrays","genuary"],
  "date": "2023-01-01 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Happy New Year 2023",
  "categories": ["blog"],
  "url": "/blog/happy-new-year-2023",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Happy New Year 2023",
  "metaDescription": "2023 and Me",
  "metaImage": "/blog/images/happy-new-year-2023/thumbnail.jpg",
  "tags": ["new-year"],
  "date": "2023-01-01 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Coding and Coping with ChatGPT",
  "categories": ["blog"],
  "url": "/blog/coding-and-coping-with-chatgpt",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Coding and Coping with ChatGPT",
  "metaDescription": "Exploring the power, limitations, and ethics of ChatGPT and machine learning.",
  "metaImage": "/blog/images/coding-and-coping-with-chatgpt/thumbnail.png",
  "tags": [],
  "date": "2022-12-12 00:00:00 +0000",
  "printedPages": 22
 },





 {
  "title": "What's Next?",
  "categories": ["teaching","intro-to-web-dev-2022-fall"],
  "url": "/teaching/intro-to-web-dev-2022-fall/next",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/next.png",
  "tagline": "How to keep going after class ends.",
  "metaTitle": "What's Next? - Intro to Web Dev",
  "metaDescription": "How to keep going after class ends.",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/next.png",
  "tags": ["teaching"],
  "date": "2022-11-28 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Redesigning Happy Coding Part 2",
  "categories": ["blog"],
  "url": "/blog/redesigning-happy-coding-part-2",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Redesigning Happy Coding Part 2",
  "metaDescription": "Announcing a redesign of Happy Coding!",
  "metaImage": "/blog/images/redesigning-happy-coding-part-2/thumbnail.png",
  "tags": ["dev-log","site-update"],
  "date": "2022-11-28 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Subscribe to Happy Coding",
  "categories": ["tutorials","how-to"],
  "url": "/tutorials/how-to/subscribe-to-happy-coding",
  "thumbnail": "/tutorials/how-to/images/subscribe-to-happy-coding-2.png",
  "tagline": "Don't miss new posts from Happy Coding.",
  "metaTitle": "Subscribe to Happy Coding",
  "metaDescription": "Don't miss new posts from Happy Coding.",
  "metaImage": "/tutorials/how-to/images/subscribe-to-happy-coding-2.png",
  "tags": ["tutorial","how-to","meta"],
  "date": "2022-11-24 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Add Your Own Example",
  "categories": ["tutorials","how-to"],
  "url": "/tutorials/how-to/add-your-own-example",
  "thumbnail": "/tutorials/how-to/images/add-your-own-example-1.png",
  "tagline": "Add your own example to Happy Coding.",
  "metaTitle": "Add Your Own Example",
  "metaDescription": "Add your own example to Happy Coding.",
  "metaImage": "/tutorials/how-to/images/add-your-own-example-1.png",
  "tags": ["tutorial","how-to","meta"],
  "date": "2022-11-22 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Final Project",
  "categories": ["teaching","intro-to-web-dev-2022-fall"],
  "url": "/teaching/intro-to-web-dev-2022-fall/final-project",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/final-project/final-project.png",
  "tagline": "Practice everything you learned by making your own webpage!",
  "metaTitle": "Final Project - Intro to Creative Web Dev",
  "metaDescription": "Practice everything you learned by making your own webpage!",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/final-project/final-project.png",
  "tags": ["teaching"],
  "date": "2022-11-09 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "JavaScript Libraries - Week 13",
  "categories": ["teaching","intro-to-web-dev-2022-fall"],
  "url": "/teaching/intro-to-web-dev-2022-fall/week-13-libraries",
  "thumbnail": "/tutorials/javascript/images/libraries-1.png",
  "tagline": "Take your code to the next level with JavaScript libraries.",
  "metaTitle": "JavaScript Libraries - Intro to Web Dev Week 13",
  "metaDescription": "Take your code to the next level with JavaScript libraries.",
  "metaImage": "/tutorials/javascript/images/libraries-1.png",
  "tags": ["teaching","html","javascript"],
  "date": "2022-11-07 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "If Statements in JavaScript - Week 12",
  "categories": ["teaching","intro-to-web-dev-2022-fall"],
  "url": "/teaching/intro-to-web-dev-2022-fall/week-12-if-statements",
  "thumbnail": "/tutorials/javascript/images/if-statements-1.png",
  "tagline": "Make decisions in your JavaScript code.",
  "metaTitle": "JavaScript - Intro to Web Dev Week 12",
  "metaDescription": "Use JavaScript to make decisions in your code.",
  "metaImage": "/tutorials/javascript/images/if-statements-1.png",
  "tags": ["teaching","html","javascript"],
  "date": "2022-11-02 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Redesigning Happy Coding",
  "categories": ["blog"],
  "url": "/blog/redesigning-happy-coding",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Redesigning Happy Coding",
  "metaDescription": "Brainstorming about a potential redesign.",
  "metaImage": "/blog/images/redesigning-happy-coding/thumbnail.jpg",
  "tags": ["dev-log","site-update"],
  "date": "2022-10-31 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "From p5.js to JavaScript",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/from-p5-to-javascript",
  "thumbnail": "/tutorials/javascript/images/js-1.png",
  "tagline": "Build on your p5.js knowledge to learn JavaScript.",
  "metaTitle": "From p5.js to JavaScript",
  "metaDescription": "Build on your p5.js knowledge to learn JavaScript.",
  "metaImage": "/tutorials/javascript/images/calling-javascript-3.png",
  "tags": ["tutorial","p5js","javascript"],
  "date": "2022-10-26 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "JavaScript - Week 11",
  "categories": ["teaching","intro-to-web-dev-2022-fall"],
  "url": "/teaching/intro-to-web-dev-2022-fall/week-11-javascript",
  "thumbnail": "/tutorials/javascript/images/js-1.png",
  "tagline": "Use JavaScript to make your page interactive.",
  "metaTitle": "JavaScript - Intro to Web Dev Week 11",
  "metaDescription": "Use JavaScript to make your page interactive.",
  "metaImage": "/tutorials/javascript/images/calling-javascript-3.png",
  "tags": ["teaching","html","javascript"],
  "date": "2022-10-26 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Circle Packing",
  "categories": ["tutorials","p5js","creating-classes"],
  "url": "/tutorials/p5js/creating-classes/circle-packing",
  "thumbnail": "/tutorials/p5js/creating-classes/images/circle-packing-1.png",
  "tagline": "Fill the screen with circles without overlapping.",
  "metaTitle": "Circle Packing - p5.js Example",
  "metaDescription": "Fill the screen with circles without overlapping.",
  "metaImage": "/tutorials/p5js/creating-classes/images/circle-packing-1.png",
  "tags": ["example","p5.js","javascript","creating-classes"],
  "date": "2022-10-20 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Layout - Week 10",
  "categories": ["teaching","intro-to-web-dev-2022-fall"],
  "url": "/teaching/intro-to-web-dev-2022-fall/week-10-layout",
  "thumbnail": "/tutorials/html/images/layout-1.png",
  "tagline": "Use CSS to lay out your page.",
  "metaTitle": "Layout - Intro to Web Dev Week 10",
  "metaDescription": "Use CSS to lay out your page.",
  "metaImage": "/tutorials/html/images/layout-1.png",
  "tags": ["teaching","html","css"],
  "date": "2022-10-18 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "CSS - Week 09",
  "categories": ["teaching","intro-to-web-dev-2022-fall"],
  "url": "/teaching/intro-to-web-dev-2022-fall/week-09-css",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/week-02-css/css.png",
  "tagline": "Style your webpage.",
  "metaTitle": "CSS - Intro to Web Dev Week 09",
  "metaDescription": "Style your webpage.",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/week-02-css/css.png",
  "tags": ["teaching","html","css"],
  "date": "2022-10-11 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "HTML - Week 07",
  "categories": ["teaching","intro-to-web-dev-2022-fall"],
  "url": "/teaching/intro-to-web-dev-2022-fall/week-07-html",
  "thumbnail": "/tutorials/html/images/html-3.png",
  "tagline": "Build your own webpage.",
  "metaTitle": "HTML - Intro to Web Dev Week 07",
  "metaDescription": "Build your own webpage.",
  "metaImage": "/tutorials/html/images/html-3.png",
  "tags": ["teaching","html"],
  "date": "2022-09-28 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "From p5.js to HTML",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/from-p5js-to-html",
  "thumbnail": "/tutorials/p5js/images/hello-world-3.png",
  "tagline": "Build on your p5.js skills to learn HTML.",
  "metaTitle": "From p5.js to HTML",
  "metaDescription": "Build on your p5.js skills to learn HTML.",
  "metaImage": "/tutorials/p5js/images/hello-world-3.png",
  "tags": ["tutorial","html","p5.js"],
  "date": "2022-09-26 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Input - Week 06",
  "categories": ["teaching","intro-to-web-dev-2022-fall"],
  "url": "/teaching/intro-to-web-dev-2022-fall/week-06-input",
  "thumbnail": "/tutorials/processing/images/input-12.gif",
  "tagline": "Make interactive sketches.",
  "metaTitle": "Input - Intro to Web Dev Week 06",
  "metaDescription": "Learn how to make interactive sketches in p5.js.",
  "metaImage": "/tutorials/processing/images/input-12.gif",
  "tags": ["teaching"],
  "date": "2022-09-20 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Animation - Week 05",
  "categories": ["teaching","intro-to-web-dev-2022-fall"],
  "url": "/teaching/intro-to-web-dev-2022-fall/week-05-animation",
  "thumbnail": "/tutorials/processing/images/animation-8.png",
  "tagline": "Create animated visualizations.",
  "metaTitle": "Animation - Intro to Web Dev Week 05",
  "metaDescription": "Learn how to create animations in p5.js",
  "metaImage": "/tutorials/processing/images/animation-8.png",
  "tags": ["teaching"],
  "date": "2022-09-12 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "If Statements - Week 04",
  "categories": ["teaching","intro-to-web-dev-2022-fall"],
  "url": "/teaching/intro-to-web-dev-2022-fall/week-04-if-statements",
  "thumbnail": "/tutorials/javascript/images/if-statements-1.png",
  "tagline": "Make decisions in your code.",
  "metaTitle": "If Statements - Intro to Web Dev Week 04",
  "metaDescription": "Make decisions in your code.",
  "metaImage": "/tutorials/javascript/images/if-statements-1.png",
  "tags": ["teaching"],
  "date": "2022-08-23 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Creating Variables - Week 03",
  "categories": ["teaching","intro-to-web-dev-2022-fall"],
  "url": "/teaching/intro-to-web-dev-2022-fall/week-03-creating-variables",
  "thumbnail": "/tutorials/processing/images/creating-functions-7.png",
  "tagline": "Store information and make p5.js do math for you.",
  "metaTitle": "Creating Variables - Intro to Web Dev Week 03",
  "metaDescription": "Store information and make p5.js do math for you.",
  "metaImage": "/tutorials/processing/images/creating-functions-7.png",
  "tags": ["teaching"],
  "date": "2022-08-20 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Using Variables - Week 02",
  "categories": ["teaching","intro-to-web-dev-2022-fall"],
  "url": "/teaching/intro-to-web-dev-2022-fall/week-02-using-variables",
  "thumbnail": "/tutorials/processing/images/using-variables-7.png",
  "tagline": "Learn how to get information from the computer.",
  "metaTitle": "Using Variables - Intro to Web Dev Week 02",
  "metaDescription": "Learn how to get information from the computer.",
  "metaImage": "/tutorials/processing/images/using-variables-7.png",
  "tags": ["teaching"],
  "date": "2022-08-14 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Poorly Coded Cats",
  "categories": ["tutorials","p5js","images"],
  "url": "/tutorials/p5js/images/poorly-coded-cats",
  "thumbnail": "/tutorials/p5js/images/images/poorly-coded-cats-1.png",
  "tagline": "Make a stamp out of a cat picture.",
  "metaTitle": "Poorly Coded Cats - p5.js Example",
  "metaDescription": "Make a stamp out of a cat picture.",
  "metaImage": "/tutorials/p5js/images/images/poorly-coded-cats-1.png",
  "tags": ["example","p5.js","javascript","images"],
  "date": "2022-08-04 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Intro to p5.js - Week 01",
  "categories": ["teaching","intro-to-web-dev-2022-fall"],
  "url": "/teaching/intro-to-web-dev-2022-fall/week-01-p5js",
  "thumbnail": "/tutorials/p5js/images/hello-world-3.png",
  "tagline": "Set up your environment and use p5.js to draw a sketch.",
  "metaTitle": "p5.js - Intro to Creative Web Dev Week 01",
  "metaDescription": "Set up your environment and p5.js to draw a sketch.",
  "metaImage": "/tutorials/p5js/images/hello-world-3.png",
  "tags": ["teaching"],
  "date": "2022-07-27 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Fetching Data",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/react-fetch",
  "thumbnail": "/tutorials/javascript/images/react-1.png",
  "tagline": "Fetch data from a server in React.",
  "metaTitle": "Fetching Data in React",
  "metaDescription": "Fetch data from a server in React.",
  "metaImage": "/tutorials/javascript/images/react-1.png",
  "tags": ["tutorial","javascript","react"],
  "date": "2022-07-17 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "CSS in React",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/react-css",
  "thumbnail": "/tutorials/javascript/images/react-1.png",
  "tagline": "Use CSS to style your React apps.",
  "metaTitle": "React CSS Tutorial",
  "metaDescription": "Use CSS to style your React apps.",
  "metaImage": "/tutorials/javascript/images/react-1.png",
  "tags": ["tutorial","javascript","react"],
  "date": "2022-07-03 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Loops",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/react-loops",
  "thumbnail": "/tutorials/javascript/images/react-1.png",
  "tagline": "Use loops and iterate over arrays.",
  "metaTitle": "React Loops Tutorial",
  "metaDescription": "Use loops and iterate over arrays.",
  "metaImage": "/tutorials/javascript/images/react-1.png",
  "tags": ["tutorial","javascript","react"],
  "date": "2022-07-01 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Keys",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/react-keys",
  "thumbnail": "/tutorials/javascript/images/react-1.png",
  "tagline": "How (and Why) to use Keys in React.",
  "metaTitle": "React Keys Tutorial",
  "metaDescription": "How (and Why) to use Keys in React.",
  "metaImage": "/tutorials/javascript/images/react-1.png",
  "tags": ["tutorial","javascript","react"],
  "date": "2022-06-26 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Lifting State",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/react-lifting-state",
  "thumbnail": "/tutorials/javascript/images/react-1.png",
  "tagline": "Share state between components.",
  "metaTitle": "React Lifting State Tutorial",
  "metaDescription": "Share state between your components.",
  "metaImage": "/tutorials/javascript/images/react-1.png",
  "tags": ["tutorial","javascript","react"],
  "date": "2022-06-19 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "React State",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/react-state",
  "thumbnail": "/tutorials/javascript/images/react-1.png",
  "tagline": "Add data to your components.",
  "metaTitle": "React State Tutorial",
  "metaDescription": "Add data to your components.",
  "metaImage": "/tutorials/javascript/images/react-1.png",
  "tags": ["tutorial","javascript","react"],
  "date": "2022-06-12 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "React Components",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/react-components",
  "thumbnail": "/tutorials/javascript/images/react-1.png",
  "tagline": "Build your webpage out of components.",
  "metaTitle": "React Components Tutorial",
  "metaDescription": "Build your webpage out of components.",
  "metaImage": "/tutorials/javascript/images/react-1.png",
  "tags": ["tutorial","javascript","react"],
  "date": "2022-06-11 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "React JSX",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/react-jsx",
  "thumbnail": "/tutorials/javascript/images/react-1.png",
  "tagline": "Reactify your syntax with JSX.",
  "metaTitle": "React JSX Tutorial",
  "metaDescription": "Reactify your syntax with JSX.",
  "metaImage": "/tutorials/javascript/images/react-1.png",
  "tags": ["tutorial","javascript","react","jsx"],
  "date": "2022-06-07 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "React",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/react-library",
  "thumbnail": "/tutorials/javascript/images/react-1.png",
  "tagline": "Use React to build an interactive web app.",
  "metaTitle": "React Tutorial",
  "metaDescription": "Use React to build an interactive web app.",
  "metaImage": "/tutorials/javascript/images/react-1.png",
  "tags": ["tutorial","javascript","react"],
  "date": "2022-05-28 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Outro to Intro to Web Dev",
  "categories": ["blog"],
  "url": "/blog/outro-to-intro-to-web-dev",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Outro to Intro to Web Dev",
  "metaDescription": "A retrospective on my first real teaching job.",
  "metaImage": "/teaching/guides/images/outreach-1.png",
  "tags": ["teaching"],
  "date": "2022-05-14 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "What's Next?",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/next",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/next.png",
  "tagline": "How to keep going after class ends.",
  "metaTitle": "What's Next? - Intro to Web Dev",
  "metaDescription": "How to keep going after class ends.",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/next.png",
  "tags": ["teaching"],
  "date": "2022-04-30 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Final Project",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/final-project",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/final-project/final-project.png",
  "tagline": "Practice everything you learned by making your own webpage!",
  "metaTitle": "Final Project - Intro to Web Dev",
  "metaDescription": "Practice everything you learned by making your own webpage!",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/final-project/final-project.png",
  "tags": ["teaching"],
  "date": "2022-04-19 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Accessibility - Week 12",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/week-12-accessibility",
  "thumbnail": "/tutorials/html/images/accessibility-1.png",
  "tagline": "Make sure everyone can use your website.",
  "metaTitle": "Accessibility - Intro to Web Dev Week 12",
  "metaDescription": "Make sure everyone can use your website.",
  "metaImage": "/tutorials/html/images/accessibility-1.png",
  "tags": ["teaching"],
  "date": "2022-04-14 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Accessibility",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/accessibility",
  "thumbnail": "/tutorials/html/images/accessibility-1.png",
  "tagline": "Make sure everyone can use your website.",
  "metaTitle": "Accessibility",
  "metaDescription": "Make sure everyone can use your website..",
  "metaImage": "/tutorials/html/images/accessibility-1.png",
  "tags": ["tutorial","html","a11y"],
  "date": "2022-04-02 00:00:00 +0000",
  "printedPages": 17
 },





 {
  "title": "Bootstrap - Week 10",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/week-10-bootstrap",
  "thumbnail": "/tutorials/javascript/images/bootstrap-3.png",
  "tagline": "Design a webpage using Bootstrap.",
  "metaTitle": "Bootstrap - Intro to Web Dev Week 10",
  "metaDescription": "Design a webpage using Bootstrap.",
  "metaImage": "/tutorials/javascript/images/bootstrap-3.png",
  "tags": ["teaching"],
  "date": "2022-03-10 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Fetch - Week 09",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/week-09-fetch",
  "thumbnail": "/tutorials/javascript/images/fetch-3.png",
  "tagline": "Fetch content from other URLs.",
  "metaTitle": "Fetch - Intro to Web Dev Week 09",
  "metaDescription": "Fetch content from other URLs.",
  "metaImage": "/tutorials/javascript/images/fetch-3.png",
  "tags": ["teaching"],
  "date": "2022-03-10 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "JavaScript Objects - Week 08",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/week-08-objects",
  "thumbnail": "/tutorials/javascript/images/objects-1.png",
  "tagline": "Group related variables together.",
  "metaTitle": "JavaScript Objects - Intro to Web Dev Week 08",
  "metaDescription": "Group related variables together.",
  "metaImage": "/tutorials/javascript/images/objects-1.png",
  "tags": ["teaching"],
  "date": "2022-03-10 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Objects",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/objects",
  "thumbnail": "/tutorials/javascript/images/objects-1.png",
  "tagline": "Group related variables together.",
  "metaTitle": "JavaScript Objects Tutorial",
  "metaDescription": "Use JavaScript objects to group related variables together.",
  "metaImage": "/tutorials/javascript/images/objects-1.png",
  "tags": ["tutorial","javascript","objects"],
  "date": "2022-03-07 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "JavaScript Libraries - Week 07",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/week-07-libraries",
  "thumbnail": "/tutorials/javascript/images/libraries-1.png",
  "tagline": "Take your code to the next level with JavaScript libraries.",
  "metaTitle": "JavaScript Libraries - Intro to Web Dev Week 07",
  "metaDescription": "Take your code to the next level with JavaScript libraries.",
  "metaImage": "/tutorials/javascript/images/libraries-1.png",
  "tags": ["teaching"],
  "date": "2022-02-22 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "For Loops and Arrays - Week 06",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/week-06-for-loops-and-arrays",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/week-06-for-loops-and-arrays/for-loops-and-arrays-1.png",
  "tagline": "Use for loops and arrays to repeat code multiple times.",
  "metaTitle": "If Statements - Intro to Web Dev Week 06",
  "metaDescription": "Use for loops and arrays to repeat code multiple times.",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/week-06-for-loops-and-arrays/for-loops-and-arrays-1.png",
  "tags": ["teaching"],
  "date": "2022-02-21 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Arrays",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/arrays",
  "thumbnail": "/tutorials/javascript/images/arrays-1.png",
  "tagline": "Store multiple values.",
  "metaTitle": "JavaScript Arrays Tutorial",
  "metaDescription": "Use JavaScript arrays to store multiple values.",
  "metaImage": "/tutorials/javascript/images/arrays-1.png",
  "tags": ["tutorial","javascript","arrays"],
  "date": "2022-02-11 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "For Loops",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/for-loops",
  "thumbnail": "/tutorials/javascript/images/for-loops-1.png",
  "tagline": "Repeat code multiple times.",
  "metaTitle": "JavaScript For Loops Tutorial",
  "metaDescription": "Use JavaScript for loops to repeat code multiple times.",
  "metaImage": "/tutorials/javascript/images/for-loops-1.png",
  "tags": ["tutorial","javascript"],
  "date": "2022-02-09 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "If Statements - Week 05",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/week-05-if-statements",
  "thumbnail": "/tutorials/javascript/images/if-statements-1.png",
  "tagline": "Use if statements to make decisions in your code.",
  "metaTitle": "If Statements - Intro to Web Dev Week 05",
  "metaDescription": "Use if statements to make decisions in your code.",
  "metaImage": "/tutorials/javascript/images/if-statements-1.png",
  "tags": ["teaching"],
  "date": "2022-02-07 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "If Statements",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/if-statements",
  "thumbnail": "/tutorials/javascript/images/if-statements-1.png",
  "tagline": "Make decisions in your JavaScript code.",
  "metaTitle": "JavaScript Variables Tutorial",
  "metaDescription": "Use JavaScript if statements to make decisions in your code.",
  "metaImage": "/tutorials/javascript/images/if-statements-1.png",
  "tags": ["tutorial","javascript"],
  "date": "2022-01-30 00:00:00 +0000",
  "printedPages": 10
 },





 {
  "title": "JavaScript - Week 04",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/week-04-javascript",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/week-04-javascript/javascript-1.png",
  "tagline": "Use JavaScript to make your page interactive.",
  "metaTitle": "JavaScript - Intro to Web Dev Week 04",
  "metaDescription": "Use JavaScript to make your page interactive.",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/week-04-javascript/javascript-1.png",
  "tags": ["teaching"],
  "date": "2022-01-27 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Variables",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/variables",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/week-04-javascript/variables-1.png",
  "tagline": "Store information in variables.",
  "metaTitle": "JavaScript Variables Tutorial",
  "metaDescription": "Store information in variables.",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/week-04-javascript/variables-1.png",
  "tags": ["tutorial","javascript"],
  "date": "2022-01-24 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Layout- Week 03",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/week-03-layout",
  "thumbnail": "/tutorials/html/images/layout-1.png",
  "tagline": "Use CSS to lay out your content.",
  "metaTitle": "Layout- Intro to Web Dev Week 03",
  "metaDescription": "Use CSS to lay out your content.",
  "metaImage": "/tutorials/html/images/layout-1.png",
  "tags": ["teaching"],
  "date": "2022-01-17 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "CSS Layout",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/layout",
  "thumbnail": "/tutorials/html/images/layout-1.png",
  "tagline": "Use CSS to lay out your page.",
  "metaTitle": "CSS Layout",
  "metaDescription": "Use CSS to lay out your page.",
  "metaImage": "/tutorials/html/images/layout-1.png",
  "tags": ["tutorial","html","css"],
  "date": "2022-01-12 00:00:00 +0000",
  "printedPages": 22
 },





 {
  "title": "CSS - Week 02",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/week-02-css",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/week-02-css/css.png",
  "tagline": "Use CSS to style your content.",
  "metaTitle": "CSS - Intro to Web Dev Week 02",
  "metaDescription": "Use CSS to style your content.",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/week-02-css/css.png",
  "tags": ["teaching"],
  "date": "2022-01-08 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Replit Setup",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/week-01-replit-setup",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/week-01-setup-and-html/replit-setup.png",
  "tagline": "Set up your environment using Replit.",
  "metaTitle": "Replit Environment Setup - Intro to Web Dev Week 01",
  "metaDescription": "Set up your environment using Replit.",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/week-01-setup-and-html/replit-setup.png",
  "tags": ["teaching"],
  "date": "2022-01-06 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Setup and HTML - Week 01",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/week-01-setup-and-html",
  "thumbnail": "/tutorials/html/images/html-2.png",
  "tagline": "Set up your environment and use HTML to create a webpage.",
  "metaTitle": "Setup and HTML - Intro to Web Dev Week 01",
  "metaDescription": "Set up your environment and use HTML to create a webpage.",
  "metaImage": "/tutorials/html/images/html-3.png",
  "tags": ["teaching"],
  "date": "2022-01-04 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "HTML - Week 01",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/week-01-html",
  "thumbnail": "/tutorials/html/images/html-2.png",
  "tagline": "Use HTML to create a webpage.",
  "metaTitle": "HTML - Intro to Web Dev Week 01",
  "metaDescription": "Use HTML to create a webpage.",
  "metaImage": "/tutorials/html/images/html-3.png",
  "tags": ["teaching"],
  "date": "2022-01-04 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "GitHub Setup",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/week-01-github-setup",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/week-01-setup-and-html/github-logo.png",
  "tagline": "Set up GitHub and get ready to code!",
  "metaTitle": "GitHub Setup - Intro to Web Dev Week 01",
  "metaDescription": "Set up GitHub and get ready to code!",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/week-01-setup-and-html/github-logo.png",
  "tags": ["teaching"],
  "date": "2022-01-04 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Desktop Setup",
  "categories": ["teaching","intro-to-web-dev-2022-spring"],
  "url": "/teaching/intro-to-web-dev-2022-spring/week-01-desktop-setup",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/week-01-setup-and-html/desktop-setup.png",
  "tagline": "Set up your environment and use HTML to create a webpage.",
  "metaTitle": "Desktop Environment Setup - Intro to Web Dev Week 01",
  "metaDescription": "Set up your environment and use HTML to create a webpage.",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/week-01-setup-and-html/desktop-setup.png",
  "tags": ["teaching"],
  "date": "2022-01-04 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Intro to Intro to Web Development",
  "categories": ["blog"],
  "url": "/blog/intro-to-intro-to-web-dev",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Intro to Intro to Web Development",
  "metaDescription": "I got a teaching job! Here are some ramblings about how the class might work. Feedback is appreciated!",
  "metaImage": "/teaching/guides/images/outreach-1.png",
  "tags": ["teaching"],
  "date": "2022-01-03 00:00:00 +0000",
  "printedPages": 12
 },





 {
  "title": "Happy New Year 2022",
  "categories": ["blog"],
  "url": "/blog/happy-new-year-2022",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Happy New Year 2022",
  "metaDescription": "I don't know about you, but I'm feeling 2022",
  "metaImage": "/blog/images/happy-new-year-2022/thumbnail.png",
  "tags": ["new-year"],
  "date": "2022-01-02 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "Fizz Buzz",
  "categories": ["tutorials","p5js","if-statements"],
  "url": "/tutorials/p5js/if-statements/fizz-buzz",
  "thumbnail": "/tutorials/p5js/if-statements/images/fizz-buzz-1.png",
  "tagline": "Fizz, Buzz, Fizz Buzz!",
  "metaTitle": "Fizz Buzz - p5.js Example",
  "metaDescription": "Fizz, Buzz, Fizz Buzz!",
  "metaImage": "/tutorials/p5js/if-statements/images/fizz-buzz-1.png",
  "tags": ["example","p5.js","javascript","if-statements"],
  "date": "2021-12-31 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Planets",
  "categories": ["tutorials","p5js","creating-classes"],
  "url": "/tutorials/p5js/creating-classes/planets",
  "thumbnail": "/tutorials/p5js/creating-classes/images/planets-1.png",
  "tagline": "Show planets orbiting a sun",
  "metaTitle": "Orbiting Planets - p5.js Example",
  "metaDescription": "Show planets orbiting a sun 🪐",
  "metaImage": "/tutorials/p5js/creating-classes/images/planets-1.png",
  "tags": ["example","p5.js","javascript","creating-classes"],
  "date": "2021-12-31 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Warmer / Colder",
  "categories": ["tutorials","p5js","input"],
  "url": "/tutorials/p5js/input/warmer-colder",
  "thumbnail": "/tutorials/p5js/input/images/warmer-colder-1.png",
  "tagline": "Play a game of warmer / colder with your computer.",
  "metaTitle": "Warmer / Colder - p5.js Example",
  "metaDescription": "Play a game of warmer / colder with your computer.",
  "metaImage": "/tutorials/p5js/input/images/warmer-colder-1.png",
  "tags": ["example","p5.js","javascript","input"],
  "date": "2021-12-30 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Clovers",
  "categories": ["tutorials","p5js","images"],
  "url": "/tutorials/p5js/images/clovers",
  "thumbnail": "/tutorials/p5js/images/images/clovers-2.png",
  "tagline": "Find the 4-leaf clover 🍀",
  "metaTitle": "Clovers - p5.js Example",
  "metaDescription": "Find the 4-leaf clover 🍀",
  "metaImage": "/tutorials/p5js/images/images/clovers-1.png",
  "tags": ["example","p5.js","javascript","images"],
  "date": "2021-12-30 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Daily Greetings",
  "categories": ["tutorials","p5js","if-statements"],
  "url": "/tutorials/p5js/if-statements/greetings",
  "thumbnail": "/tutorials/p5js/if-statements/images/greetings-1.png",
  "tagline": "Show a different message based on the time of day.",
  "metaTitle": "Daily Greetings - p5.js Example",
  "metaDescription": "Show a different message based on the time of day.",
  "metaImage": "/tutorials/p5js/if-statements/images/greetings-1.png",
  "tags": ["example","p5.js","javascript","if-statements"],
  "date": "2021-12-30 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Code Rocket",
  "categories": ["tutorials","p5js","for-loops"],
  "url": "/tutorials/p5js/for-loops/code-rocket",
  "thumbnail": "/tutorials/p5js/for-loops/images/code-rocket-1.png",
  "tagline": "Make a rocket from the whitespace in your code.",
  "metaTitle": "p5.js Example - Code Rocket",
  "metaDescription": "Make a rocket from the whitespace in your code.",
  "metaImage": "/tutorials/p5js/for-loops/images/code-rocket-1.png",
  "tags": ["example","p5.js","javascript","for-loops"],
  "date": "2021-12-30 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Pi Visualization",
  "categories": ["tutorials","p5js","arrays"],
  "url": "/tutorials/p5js/arrays/pi-visualization",
  "thumbnail": "/tutorials/p5js/arrays/images/pi-visualization-1.png",
  "tagline": "Visualize the first million digits of pi.",
  "metaTitle": "Pi Visualization - p5.js Example",
  "metaDescription": "Visualize the first million digits of pi.",
  "metaImage": "/tutorials/p5js/arrays/images/pi-visualization-1.png",
  "tags": ["example","p5.js","javascript","arrays"],
  "date": "2021-12-30 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Accumulating Snow",
  "categories": ["tutorials","p5js","using-objects"],
  "url": "/tutorials/p5js/using-objects/accumulating-snow",
  "thumbnail": "/tutorials/p5js/using-objects/images/accumulating-snow-3.png",
  "tagline": "Draw snow that accumulates on the ground.",
  "metaTitle": "Accumulating Snow - Using Objects in p5.js",
  "metaDescription": "Draw snow that accumulates on the ground.",
  "metaImage": "/tutorials/p5js/using-objects/images/accumulating-snow-1.png",
  "tags": ["example","p5.js","javascript","objects"],
  "date": "2021-12-21 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Christmas Tree",
  "categories": ["tutorials","p5js","creating-functions"],
  "url": "/tutorials/p5js/creating-functions/christmas-tree",
  "thumbnail": "/tutorials/p5js/creating-functions/images/christmas-tree-1.png",
  "tagline": "Create a function that draws a Christmas tree.",
  "metaTitle": "p5.js Example - Christmas Tree",
  "metaDescription": "Create a function that draws a Christmas Tree!",
  "metaImage": "/tutorials/p5js/creating-functions/images/christmas-tree-1.png",
  "tags": ["example","p5.js","javascript","creating-functions"],
  "date": "2021-12-13 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Remove What's Happening",
  "categories": ["tutorials","javascript","interactive-html"],
  "url": "/tutorials/javascript/interactive-html/remove-whats-happening",
  "thumbnail": "/images/logo-800x400.png",
  "tagline": "Remove clickbait from the internet.",
  "metaTitle": "Remove What's Happening from Twitter - JavaScript Example",
  "metaDescription": "Remove clickbait from the internet.",
  "metaImage": "/images/logo-800x400.png",
  "tags": ["example","html","javascript"],
  "date": "2021-12-13 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Twelve Days of Christmas",
  "categories": ["tutorials","javascript","for-loops"],
  "url": "/tutorials/javascript/for-loops/twelve-days-of-christmas",
  "thumbnail": "/tutorials/javascript/images/twelve-days-of-christmas-1.png",
  "tagline": "Use a for loop to sing the Twelve Days of Christmas",
  "metaTitle": "Twelve Days of Christmas - JavaScript Example",
  "metaDescription": "Use a for loop to sing the Twelve Days of Christmas",
  "metaImage": "/tutorials/javascript/images/twelve-days-of-christmas-1.png",
  "tags": ["example","html","javascript"],
  "date": "2021-12-06 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Feed the Ducks",
  "categories": ["tutorials","javascript","if-statements"],
  "url": "/tutorials/javascript/if-statements/feed-the-ducks",
  "thumbnail": "/tutorials/javascript/images/feed-the-ducks-1.png",
  "tagline": "Create an interactive story using if statements!",
  "metaTitle": "Feed the Ducks - JavaScript Example",
  "metaDescription": "Create an interactive story using if statements!",
  "metaImage": "/tutorials/javascript/images/feed-the-ducks-1.png",
  "tags": ["example","html","javascript"],
  "date": "2021-12-04 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Menorah",
  "categories": ["tutorials","p5js","for-loops"],
  "url": "/tutorials/p5js/for-loops/menorah",
  "thumbnail": "/tutorials/p5js/for-loops/images/menorah-1.png",
  "tagline": "Code your own virtual menorah!",
  "metaTitle": "p5.js Example - Menorah",
  "metaDescription": "Code your own virtual menorah!",
  "metaImage": "/tutorials/p5js/for-loops/images/menorah-1.png",
  "tags": ["example","p5.js","javascript","for-loops"],
  "date": "2021-12-01 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "46 Million Turkeys",
  "categories": ["gallery"],
  "url": "/gallery/46-million-turkeys",
  "thumbnail": "/gallery/images/46-million-turkeys-1.png",
  "tagline": "Happy Thanksgiving!",
  "metaTitle": "46 Million Turkeys",
  "metaDescription": "Happy Thanksgiving!",
  "metaImage": "/gallery/images/46-million-turkeys-1.png",
  "tags": [],
  "date": "2021-11-25 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Pixel Swapper",
  "categories": ["tutorials","p5js","images"],
  "url": "/tutorials/p5js/images/pixel-swapper",
  "thumbnail": "/tutorials/p5js/images/images/pixel-swapper-1.png",
  "tagline": "Rearrange the pixels in an image.",
  "metaTitle": "Pixel Swapper - p5.js Example",
  "metaDescription": "Rearrange the pixels in an image.",
  "metaImage": "/tutorials/p5js/images/images/pixel-swapper-1.png",
  "tags": ["example","p5.js","javascript","images"],
  "date": "2021-11-13 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Pixel Sorter",
  "categories": ["tutorials","p5js","images"],
  "url": "/tutorials/p5js/images/pixel-sorter",
  "thumbnail": "/tutorials/p5js/images/images/pixel-sorter-1.png",
  "tagline": "Sort the pixels in an image.",
  "metaTitle": "Pixel Sorter - p5.js Example",
  "metaDescription": "Sort the pixels in an image.",
  "metaImage": "/tutorials/p5js/images/images/pixel-sorter-1.png",
  "tags": ["example","p5.js","javascript","images","🎃"],
  "date": "2021-11-13 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Pixel Painter",
  "categories": ["tutorials","p5js","images"],
  "url": "/tutorials/p5js/images/pixel-painter",
  "thumbnail": "/tutorials/p5js/images/images/pixel-painter-7.png",
  "tagline": "Turn an image into a digital painting.",
  "metaTitle": "Pixel Painter - p5.js Example",
  "metaDescription": "Turn an image into a digital painting.",
  "metaImage": "/tutorials/p5js/images/images/pixel-painter-7.png",
  "tags": ["example","p5.js","javascript","images","🎃"],
  "date": "2021-11-11 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Fading Grid",
  "categories": ["tutorials","p5js","arrays"],
  "url": "/tutorials/p5js/arrays/fading-grid",
  "thumbnail": "/tutorials/p5js/arrays/images/fading-grid-1.png",
  "tagline": "Use a 2D array to show a fading grid.",
  "metaTitle": "Fading Grid - p5.js 2D Array Example",
  "metaDescription": "Use a 2D array to show a fading grid.",
  "metaImage": "/tutorials/p5js/arrays/images/fading-grid-1.png",
  "tags": ["example","p5.js","javascript","arrays"],
  "date": "2021-11-10 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Oscillating Lines",
  "categories": ["tutorials","p5js","arrays"],
  "url": "/tutorials/p5js/arrays/oscillating-lines",
  "thumbnail": "/tutorials/p5js/arrays/images/oscillating-lines-1.png",
  "tagline": "Show lines that oscillate up and down.",
  "metaTitle": "Oscillating Lines - p5.js Arrays Example",
  "metaDescription": "Use arrays to show lines that oscillate up and down.",
  "metaImage": "/tutorials/p5js/arrays/images/oscillating-lines-1.png",
  "tags": ["example","p5.js","javascript","arrays"],
  "date": "2021-11-09 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Spider 🕷",
  "categories": ["tutorials","p5js","using-variables"],
  "url": "/tutorials/p5js/using-variables/spider",
  "thumbnail": "/tutorials/p5js/using-variables/images/spider-1.png",
  "tagline": "Draw a friendly spider.",
  "metaTitle": "Spider - Using Variables in p5.js",
  "metaDescription": "Use the width and height variables to draw a friendly spider",
  "metaImage": "/tutorials/p5js/using-variables/images/spider-1.png",
  "tags": ["example","p5.js","javascript","using-variables","🎃"],
  "date": "2021-11-07 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Notes Recorder",
  "categories": ["tutorials","processing","libraries"],
  "url": "/tutorials/processing/libraries/notes-recorder",
  "thumbnail": "/tutorials/processing/libraries/images/random-synthesizer-1.png",
  "tagline": "Use Minim to play and record notes.",
  "metaTitle": "Notes Recorder - Processing Example",
  "metaDescription": "Use Minim to play and record notes.",
  "metaImage": "/tutorials/processing/libraries/images/random-synthesizer-2.png",
  "tags": ["example","processing","library","minim"],
  "date": "2021-11-06 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Image Tiles",
  "categories": ["tutorials","p5js","images"],
  "url": "/tutorials/p5js/images/image-tiles",
  "thumbnail": "/tutorials/p5js/images/images/image-tiles-1.png",
  "tagline": "Rearrange an image into tiles.",
  "metaTitle": "p5.js Example - Image Tiles",
  "metaDescription": "Rearrange an image into tiles.",
  "metaImage": "/tutorials/p5js/images/images/image-tiles-1.png",
  "tags": ["example","p5.js","javascript","images","🎃"],
  "date": "2021-11-04 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Image Blender",
  "categories": ["tutorials","p5js","images"],
  "url": "/tutorials/p5js/images/image-blender",
  "thumbnail": "/tutorials/p5js/images/images/image-blender-1.png",
  "tagline": "Blend two images together.",
  "metaTitle": "p5.js Example - Image Blender",
  "metaDescription": "Use p5.js to blend two images together.",
  "metaImage": "/tutorials/p5js/images/images/image-blender-1.png",
  "tags": ["example","p5.js","javascript","images","🎃"],
  "date": "2021-11-02 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Spooky Text",
  "categories": ["tutorials","p5js","for-loops"],
  "url": "/tutorials/p5js/for-loops/spooky-text",
  "thumbnail": "/tutorials/p5js/for-loops/images/spooky-text-1.png",
  "tagline": "Use `sin()` to make spooky text.",
  "metaTitle": "p5.js Example - Sp00ky Text",
  "metaDescription": "Use sin() to make spooky text.",
  "metaImage": "/tutorials/p5js/for-loops/images/spooky-text-1.png",
  "tags": ["example","p5.js","javascript","for-loops","🎃"],
  "date": "2021-10-31 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Typography",
  "categories": ["tutorials","p5js","creating-variables"],
  "url": "/tutorials/p5js/creating-variables/typography",
  "thumbnail": "/tutorials/p5js/creating-variables/images/typography-1.png",
  "tagline": "Style your text with custom fonts.",
  "metaTitle": "p5.js Example - Typography",
  "metaDescription": "Style your text with custom fonts.",
  "metaImage": "/tutorials/p5js/creating-variables/images/typography-1.png",
  "tags": ["example","p5.js","javascript","random","typography"],
  "date": "2021-10-30 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Image Filter",
  "categories": ["tutorials","p5js","images"],
  "url": "/tutorials/p5js/images/image-filter",
  "thumbnail": "/tutorials/p5js/images/images/image-filter-1.png",
  "tagline": "Make your own image filter.",
  "metaTitle": "p5.js Example - Image Filter",
  "metaDescription": "Make your own image filter.",
  "metaImage": "/tutorials/p5js/images/images/image-filter-11.png",
  "tags": ["example","p5.js","javascript","images","🎃"],
  "date": "2021-10-28 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Ghosts 👻👻👻",
  "categories": ["tutorials","p5js","creating-classes"],
  "url": "/tutorials/p5js/creating-classes/ghosts",
  "thumbnail": "/tutorials/p5js/creating-classes/images/ghosts-1.png",
  "tagline": "Boo!",
  "metaTitle": "p5.js Example - Ghosts 👻👻👻",
  "metaDescription": "Boo!",
  "metaImage": "/tutorials/p5js/creating-classes/images/ghosts-1.png",
  "tags": ["example","p5.js","javascript","creating-classes","🎃"],
  "date": "2021-10-27 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Ghost 👻",
  "categories": ["tutorials","p5js","animation"],
  "url": "/tutorials/p5js/animation/ghost",
  "thumbnail": "/tutorials/p5js/animation/images/ghost-1.png",
  "tagline": "Boo!",
  "metaTitle": "p5.js Example - Ghost 👻",
  "metaDescription": "Boo!",
  "metaImage": "/tutorials/p5js/animation/images/ghost-1.png",
  "tags": ["example","p5.js","javascript","random","animation","🎃"],
  "date": "2021-10-26 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Random Skulls",
  "categories": ["tutorials","p5js","animation"],
  "url": "/tutorials/p5js/animation/random-skulls",
  "thumbnail": "/tutorials/p5js/animation/images/random-skulls-2.png",
  "tagline": "Fill the screen with random skulls.",
  "metaTitle": "p5.js Example - Random Skulls",
  "metaDescription": "Fill the screen with random skulls.",
  "metaImage": "/tutorials/p5js/animation/images/random-skulls-1.png",
  "tags": ["example","p5.js","javascript","random","animation","🎃"],
  "date": "2021-10-25 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Random Skull",
  "categories": ["tutorials","p5js","creating-variables"],
  "url": "/tutorials/p5js/creating-variables/random-skull",
  "thumbnail": "/tutorials/p5js/creating-variables/images/random-skull-1.png",
  "tagline": "Use the random() function to draw a random skull.",
  "metaTitle": "p5.js Example - Random Skull",
  "metaDescription": "Use the random() function to draw a random skull.",
  "metaImage": "/tutorials/p5js/creating-variables/images/random-skull-1.png",
  "tags": ["example","p5.js","javascript","random","🎃"],
  "date": "2021-10-24 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Random Pumpkin",
  "categories": ["tutorials","p5js","creating-variables"],
  "url": "/tutorials/p5js/creating-variables/random-pumpkin",
  "thumbnail": "/tutorials/p5js/creating-variables/images/random-pumpkin-1.png",
  "tagline": "Use the random() function to draw a random pumpkin.",
  "metaTitle": "p5.js Example - Random Pumpkin",
  "metaDescription": "Use the random() function to draw a random pumpkin.",
  "metaImage": "/tutorials/p5js/creating-variables/images/random-pumpkin-1.png",
  "tags": ["example","p5.js","javascript","random","🎃"],
  "date": "2021-10-24 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Pumpkin (with Variables)",
  "categories": ["tutorials","p5js","creating-variables"],
  "url": "/tutorials/p5js/creating-variables/pumpkin",
  "thumbnail": "/tutorials/p5js/calling-functions/images/pumpkin-1.png",
  "tagline": "Use variables to draw a pumpkin.",
  "metaTitle": "p5.js Example - Pumpkin (with Variables)",
  "metaDescription": "Use variables to draw a pumpkin",
  "metaImage": "/tutorials/p5js/calling-functions/images/pumpkin-1.png",
  "tags": ["example","p5.js","javascript","🎃"],
  "date": "2021-10-24 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Skull",
  "categories": ["tutorials","p5js","calling-functions"],
  "url": "/tutorials/p5js/calling-functions/skull",
  "thumbnail": "/tutorials/p5js/calling-functions/images/skull-1.png",
  "tagline": "💀💀💀",
  "metaTitle": "p5.js Example - Skull",
  "metaDescription": "💀💀💀",
  "metaImage": "/tutorials/p5js/calling-functions/images/skull-1.png",
  "tags": ["example","p5.js","javascript","calling-functions","🎃"],
  "date": "2021-10-24 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Pumpkin",
  "categories": ["tutorials","p5js","calling-functions"],
  "url": "/tutorials/p5js/calling-functions/pumpkin",
  "thumbnail": "/tutorials/p5js/calling-functions/images/pumpkin-1.png",
  "tagline": "🎃🎃🎃",
  "metaTitle": "p5.js Example - Pumpkin",
  "metaDescription": "🎃🎃🎃",
  "metaImage": "/tutorials/p5js/calling-functions/images/pumpkin-1.png",
  "tags": ["example","p5.js","javascript","calling-functions","🎃"],
  "date": "2021-10-24 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Jack-o'-Lantern",
  "categories": ["tutorials","p5js","calling-functions"],
  "url": "/tutorials/p5js/calling-functions/jack-o-lantern",
  "thumbnail": "/tutorials/p5js/calling-functions/images/jack-o-lantern-1.png",
  "tagline": "🎃🎃🎃",
  "metaTitle": "p5.js Example - Jack-o'-Lantern",
  "metaDescription": "🎃🎃🎃",
  "metaImage": "/tutorials/p5js/calling-functions/images/jack-o-lantern-1.png",
  "tags": ["example","p5.js","javascript","calling-functions","🎃"],
  "date": "2021-10-24 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Pumpkin Patch",
  "categories": ["tutorials","p5js","animation"],
  "url": "/tutorials/p5js/animation/pumpkin-patch",
  "thumbnail": "/tutorials/p5js/animation/images/pumpkin-patch-1.png",
  "tagline": "Fill the screen with random pumpkins.",
  "metaTitle": "p5.js Example - Pumpkin Patch",
  "metaDescription": "Fill the screen with random pumpkins.",
  "metaImage": "/tutorials/p5js/animation/images/pumpkin-patch-1.png",
  "tags": ["example","p5.js","javascript","random","animation","🎃"],
  "date": "2021-10-24 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Flickering Jack-o'-Lantern",
  "categories": ["tutorials","p5js","animation"],
  "url": "/tutorials/p5js/animation/flickering-jack-o-lantern",
  "thumbnail": "/tutorials/p5js/animation/images/flickering-jack-o-lantern-1.png",
  "tagline": "Animate a flickering Jack-o'-lantern.",
  "metaTitle": "p5.js Example - Flickering Jack-o'-Lantern",
  "metaDescription": "Animate a flickering Jack-o'-lantern.",
  "metaImage": "/tutorials/p5js/animation/images/flickering-jack-o-lantern-1.png",
  "tags": ["example","p5.js","javascript","random","animation","🎃"],
  "date": "2021-10-24 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Ten Lessons from \"Senior\" Software Engineering",
  "categories": ["blog"],
  "url": "/blog/ten-lessons-senior-software-engineering",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Ten Lessons from \"Senior\" Software Engineering",
  "metaDescription": "Turns out software engineering is more than writing code.",
  "metaImage": "/blog/images/ten-lessons-software-engineering/thumbnail.png",
  "tags": [],
  "date": "2021-10-23 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "Parallax Dots",
  "categories": ["tutorials","p5js","creating-classes"],
  "url": "/tutorials/p5js/creating-classes/parallax-dots",
  "thumbnail": "/tutorials/p5js/creating-classes/images/parallax-dots-2.png",
  "tagline": "Show three layers of dots.",
  "metaTitle": "p5.js Example - Parallax Dots",
  "metaDescription": "Show three layers of dots.",
  "metaImage": "/tutorials/p5js/creating-classes/images/parallax-dots-2.png",
  "tags": ["example","p5.js","javascript","creating-classes"],
  "date": "2021-10-20 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Deleting Facebook",
  "categories": ["blog"],
  "url": "/blog/deleting-facebook",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Deleting Facebook",
  "metaDescription": "I'm deleting the Happy Coding Facebook page!",
  "metaImage": "/blog/images/deleting-facebook/deleting-facebook-1.png",
  "tags": [],
  "date": "2021-10-13 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Grouchy Face",
  "categories": ["tutorials","p5js","input"],
  "url": "/tutorials/p5js/input/grouchy-face",
  "thumbnail": "/tutorials/p5js/input/images/grouchy-face-1.png",
  "tagline": "Make your computer mad when you click the mouse.",
  "metaTitle": "p5.js Example - Grouchy Face",
  "metaDescription": "Make your computer mad when you click the mouse.",
  "metaImage": "/tutorials/p5js/input/images/grouchy-face-1.png",
  "tags": ["example","p5.js","javascript","input"],
  "date": "2021-09-13 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Unsanitized User Input",
  "categories": ["tutorials","java-server","sanitizing-user-input"],
  "url": "/tutorials/java-server/sanitizing-user-input/user-input-unsanitized",
  "thumbnail": "/tutorials/java-server/images/post-9.png",
  "tagline": "See what happens when you don't sanitize user input.",
  "metaTitle": "Unsanitized User Input",
  "metaDescription": "See what happens when you don't sanitize user input.",
  "metaImage": "/tutorials/java-server/images/post-10.png",
  "tags": ["example","java","server","servlets","post"],
  "date": "2021-09-11 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Escaping User Input",
  "categories": ["tutorials","java-server","sanitizing-user-input"],
  "url": "/tutorials/java-server/sanitizing-user-input/user-input-escaped",
  "thumbnail": "/tutorials/java-server/images/libraries-5.png",
  "tagline": "Use Apache Commons Text to escape user input.",
  "metaTitle": "Escaping User Input",
  "metaDescription": "Use Apache Commons Text to escape user input.",
  "metaImage": "/tutorials/java-server/images/libraries-6.png",
  "tags": ["example","java","server","servlets","post","libraries"],
  "date": "2021-09-11 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Name Input",
  "categories": ["tutorials","java-server","post"],
  "url": "/tutorials/java-server/post/post-name",
  "thumbnail": "/tutorials/java-server/images/post-9.png",
  "tagline": "Use POST requests to get the user's name.",
  "metaTitle": "Name Input",
  "metaDescription": "Use POST requests to get the user's name.",
  "metaImage": "/tutorials/java-server/images/post-10.png",
  "tags": ["example","java","server","servlets","post"],
  "date": "2021-09-11 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Name List",
  "categories": ["tutorials","java-server","post"],
  "url": "/tutorials/java-server/post/post-name-list",
  "thumbnail": "/tutorials/java-server/images/post-9.png",
  "tagline": "Use POST requests to show a list of names.",
  "metaTitle": "Name List",
  "metaDescription": "Use POST requests to show a list of names.",
  "metaImage": "/tutorials/java-server/images/post-10.png",
  "tags": ["example","java","server","servlets","post"],
  "date": "2021-09-11 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Name List - JSP",
  "categories": ["tutorials","java-server","post"],
  "url": "/tutorials/java-server/post/post-name-list-jsp",
  "thumbnail": "/tutorials/java-server/images/post-9.png",
  "tagline": "Use POST requests and JSP to show a list of names.",
  "metaTitle": "Name List - JSP",
  "metaDescription": "Use POST requests and JSP to show a list of names.",
  "metaImage": "/tutorials/java-server/images/post-10.png",
  "tags": ["example","java","server","servlets","post","jsp"],
  "date": "2021-09-11 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Name List - Fetch",
  "categories": ["tutorials","java-server","post"],
  "url": "/tutorials/java-server/post/post-name-list-fetch",
  "thumbnail": "/tutorials/java-server/images/post-9.png",
  "tagline": "Use the fetch function to show a list of names.",
  "metaTitle": "Name List - Fetch",
  "metaDescription": "Use the fetch function to show a list of names.",
  "metaImage": "/tutorials/java-server/images/post-10.png",
  "tags": ["example","java","server","servlets","post","fetch"],
  "date": "2021-09-11 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Servlet JSP Date",
  "categories": ["tutorials","java-server","jsp"],
  "url": "/tutorials/java-server/jsp/servlet-jsp-date",
  "thumbnail": "/tutorials/java-server/images/jsp-7.png",
  "tagline": "Use servlets and JSP to show today's date.",
  "metaTitle": "Servlet JSP Date",
  "metaDescription": "Use servlets and Jakara Server Pages to show today's date.",
  "metaImage": "/tutorials/java-server/images/jsp-8.png",
  "tags": ["example","java","server","servlets","jsp"],
  "date": "2021-09-11 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Servlet JSP Date (Hidden JSP)",
  "categories": ["tutorials","java-server","jsp"],
  "url": "/tutorials/java-server/jsp/servlet-jsp-date-hidden",
  "thumbnail": "/tutorials/java-server/images/jsp-7.png",
  "tagline": "Use servlets and JSP to show today's date while hiding the JSP file.",
  "metaTitle": "Servlet JSP Date (Hidden JSP)",
  "metaDescription": "Use servlets and Jakara Server Pages to show today's date while hiding the JSP file.",
  "metaImage": "/tutorials/java-server/images/jsp-8.png",
  "tags": ["example","java","server","servlets","jsp"],
  "date": "2021-09-11 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "JSP Zoo",
  "categories": ["tutorials","java-server","jsp"],
  "url": "/tutorials/java-server/jsp/jsp-zoo",
  "thumbnail": "/tutorials/java-server/images/jsp-7.png",
  "tagline": "Use JSP to show a list of animals.",
  "metaTitle": "JSP Zoo",
  "metaDescription": "Use Jakara Server Pages to show a list of animals.",
  "metaImage": "/tutorials/java-server/images/jsp-8.png",
  "tags": ["example","java","server","jsp"],
  "date": "2021-09-11 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "JSP Unix Time",
  "categories": ["tutorials","java-server","jsp"],
  "url": "/tutorials/java-server/jsp/jsp-unix-time",
  "thumbnail": "/tutorials/java-server/images/jsp-7.png",
  "tagline": "Use JSP to show the current Unix time.",
  "metaTitle": "JSP Unix Time",
  "metaDescription": "Use Jakarta Server Pages to show the current Unix time.",
  "metaImage": "/tutorials/java-server/images/jsp-8.png",
  "tags": ["example","java","server","jsp"],
  "date": "2021-09-11 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "JSP Header",
  "categories": ["tutorials","java-server","jsp"],
  "url": "/tutorials/java-server/jsp/jsp-header",
  "thumbnail": "/tutorials/java-server/images/jsp-7.png",
  "tagline": "Use JSP to show a header on every page.",
  "metaTitle": "JSP Header",
  "metaDescription": "Use Jakara Server Pages to show a header on every page.",
  "metaImage": "/tutorials/java-server/images/jsp-8.png",
  "tags": ["example","java","server","jsp"],
  "date": "2021-09-11 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "JSP Date",
  "categories": ["tutorials","java-server","jsp"],
  "url": "/tutorials/java-server/jsp/jsp-date",
  "thumbnail": "/tutorials/java-server/images/jsp-7.png",
  "tagline": "Use JSP to show today's date.",
  "metaTitle": "JSP Date",
  "metaDescription": "Use Jakara Server Pages to show today's date.",
  "metaImage": "/tutorials/java-server/images/jsp-8.png",
  "tags": ["example","java","server","jsp"],
  "date": "2021-09-11 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "JSP Coin Flipper",
  "categories": ["tutorials","java-server","jsp"],
  "url": "/tutorials/java-server/jsp/jsp-coin-flipper",
  "thumbnail": "/tutorials/java-server/images/jsp-7.png",
  "tagline": "Use JSP to flip a coin.",
  "metaTitle": "JSP Coin Flipper",
  "metaDescription": "Use Jakara Server Pages to flip a coin.",
  "metaImage": "/tutorials/java-server/images/jsp-8.png",
  "tags": ["example","java","server","jsp"],
  "date": "2021-09-11 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Stack Overflow Data Visualization",
  "categories": ["tutorials","processing","using-objects"],
  "url": "/tutorials/processing/using-objects/stack-overflow-data-visualization",
  "thumbnail": "/tutorials/processing/using-objects/images/stack-overflow-data-visualization-3.png",
  "tagline": "Visualize data from the Stack Overflow API!",
  "metaTitle": "Processing Stack Overflow Data Visualization",
  "metaDescription": "Use Processing to visualize data from the Stack Overflow API!",
  "metaImage": "/tutorials/processing/using-objects/images/stack-overflow-data-visualization-3.png",
  "tags": ["example","processing"],
  "date": "2021-08-21 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "Hello World: Static Website",
  "categories": ["tutorials","java-server","web-app"],
  "url": "/tutorials/java-server/web-app/hello-world-static-website",
  "thumbnail": "/tutorials/java-server/images/java-ee-1.png",
  "tagline": "Run a server that shows a static website.",
  "metaTitle": "Hello World Server Example: Static Website",
  "metaDescription": "Run a server that shows a static website.",
  "metaImage": "/tutorials/java-server/images/servlets-7.png",
  "tags": ["example","java","server"],
  "date": "2021-08-08 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Hello World: Maven",
  "categories": ["tutorials","java-server","web-app"],
  "url": "/tutorials/java-server/web-app/hello-world-maven",
  "thumbnail": "/tutorials/java-server/images/java-ee-1.png",
  "tagline": "Use Maven to build a web app.",
  "metaTitle": "Hello World Server Example: Maven",
  "metaDescription": "Use Maven to build a web app.",
  "metaImage": "/tutorials/java-server/images/servlets-7.png",
  "tags": ["example","java","server"],
  "date": "2021-08-08 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Hello World: Command Line",
  "categories": ["tutorials","java-server","web-app"],
  "url": "/tutorials/java-server/web-app/hello-world-command-line",
  "thumbnail": "/tutorials/java-server/images/java-ee-1.png",
  "tagline": "Use the command line to run a server.",
  "metaTitle": "Hello World Server Example: Command Line",
  "metaDescription": "Use the command line to run a server.",
  "metaImage": "/tutorials/java-server/images/servlets-7.png",
  "tags": ["example","java","server"],
  "date": "2021-08-08 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Hello World: Embedded Jetty (Maven)",
  "categories": ["tutorials","java-server","embedded-jetty"],
  "url": "/tutorials/java-server/embedded-jetty/hello-world-embedded-jetty-maven",
  "thumbnail": "/tutorials/java-server/images/jetty-setup-4.png",
  "tagline": "Use Maven to run an embedded Jetty server.",
  "metaTitle": "Hello World Server Example: Embedded Jetty (Maven)",
  "metaDescription": "Use Maven to run an embedded Jetty server.",
  "metaImage": "/tutorials/java-server/images/jetty-setup-4.png",
  "tags": ["example","java","server","jetty"],
  "date": "2021-08-08 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Hello World: Embedded Jetty (Command Line)",
  "categories": ["tutorials","java-server","embedded-jetty"],
  "url": "/tutorials/java-server/embedded-jetty/hello-world-embedded-jetty-command-line",
  "thumbnail": "/tutorials/java-server/images/jetty-setup-4.png",
  "tagline": "Use the command line to run an embedded Jetty server.",
  "metaTitle": "Hello World Server Example: Embedded Jetty (Command Line)",
  "metaDescription": "Use the command line to run an embedded Jetty server.",
  "metaImage": "/tutorials/java-server/images/jetty-setup-4.png",
  "tags": ["example","java","server","jetty"],
  "date": "2021-08-08 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Anatomy of a Web App",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/web-app",
  "thumbnail": "/tutorials/java-server/images/java-ee-1.png",
  "tagline": "How to structure your web app directory.",
  "metaTitle": "Anatomy of a Web App",
  "metaDescription": "How to structure your web app directory.",
  "metaImage": "/tutorials/java-server/images/servlets-7.png",
  "tags": ["tutorial","java","server"],
  "date": "2021-07-18 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "Embedded Jetty",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/embedded-jetty",
  "thumbnail": "/tutorials/java-server/images/jetty-setup-4.png",
  "tagline": "Run a Jetty server from Java code.",
  "metaTitle": "Embedded Jetty",
  "metaDescription": "Run a Jetty server from Java code.",
  "metaImage": "/tutorials/java-server/images/jetty-setup-5.png",
  "tags": ["tutorial","java","server","jetty"],
  "date": "2021-07-17 00:00:00 +0000",
  "printedPages": 11
 },





 {
  "title": "Tomcat Setup",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/tomcat",
  "thumbnail": "/tutorials/java-server/images/tomcat-4.png",
  "tagline": "Run your own Tomcat server.",
  "metaTitle": "Tomcat Setup",
  "metaDescription": "Run your own Tomcat server.",
  "metaImage": "/tutorials/java-server/images/tomcat-5.png",
  "tags": ["tutorial","java","server","tomcat"],
  "date": "2021-06-20 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Ludum Memories",
  "categories": ["blog"],
  "url": "/blog/ludum-memories",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Ludum Memories",
  "metaDescription": "10 years of Ludum Dare.",
  "metaImage": "/blog/images/ludum-memories/thumbnail.png",
  "tags": ["dev-log"],
  "date": "2021-05-03 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "The Rabbit Hole - LD48 Retrospective",
  "categories": ["blog"],
  "url": "/blog/ludum-dare-48",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "The Rabbit Hole - LD48 Retrospective",
  "metaDescription": "Go down the rabbit hole of going down Wikipedia rabbit holes.",
  "metaImage": "/gallery/rabbit-hole/images/thumbnail.png",
  "tags": ["dev-log"],
  "date": "2021-05-01 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "The Rabbit Hole",
  "categories": ["gallery","rabbit-hole"],
  "url": "/gallery/rabbit-hole/index",
  "thumbnail": "/gallery/rabbit-hole/images/thumbnail.png",
  "tagline": "A Wikipedia game for Ludum Dare 48",
  "metaTitle": "The Rabbit Hole",
  "metaDescription": "A Wikipedia game for Ludum Dare 48",
  "metaImage": "/gallery/rabbit-hole/images/thumbnail.png",
  "tags": [],
  "date": "2021-04-24 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Locus of Control and Learned Helplessness in Coding",
  "categories": ["blog"],
  "url": "/blog/locus-of-control-learned-helplessness",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Locus of Control and Learned Helplessness in Coding",
  "metaDescription": "Locus of control, learned helplessness, burnout, and impostor syndrome.",
  "metaImage": "/blog/images/locus-of-control-learned-helplessness/thumbnail.png",
  "tags": ["personal","favorite"],
  "date": "2021-04-17 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Etsy API",
  "categories": ["tutorials","javascript","fetch"],
  "url": "/tutorials/javascript/fetch/etsy-listings",
  "thumbnail": "/tutorials/javascript/images/etsy-listings-2.png",
  "tagline": "Use the fetch function to get data from an API.",
  "metaTitle": "Etsy Listings - JavaScript Example",
  "metaDescription": "Use the fetch function to get data from an API.",
  "metaImage": "/tutorials/javascript/images/etsy-listings-3.png",
  "tags": ["example","html","javascript","fetch"],
  "date": "2021-03-28 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Fetch",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/fetch",
  "thumbnail": "/tutorials/javascript/images/fetch-2.png",
  "tagline": "Fetch content from other URLs.",
  "metaTitle": "JavaScript Fetch Tutorial",
  "metaDescription": "Fetch content from other URLs.",
  "metaImage": "/tutorials/javascript/images/fetch-1.png",
  "tags": ["tutorial","javascript","ajax","fetch"],
  "date": "2021-03-26 00:00:00 +0000",
  "printedPages": 11
 },





 {
  "title": "Game of Nim",
  "categories": ["tutorials","javascript","if-statements"],
  "url": "/tutorials/javascript/if-statements/game-of-nim",
  "thumbnail": "/tutorials/javascript/images/game-of-nim-1.png",
  "tagline": "Play the Game of Nim against the computer!",
  "metaTitle": "Game of Nim - JavaScript Example",
  "metaDescription": "Play the Game of Nim against the computer!",
  "metaImage": "/tutorials/javascript/images/game-of-nim-2.png",
  "tags": ["example","html","javascript"],
  "date": "2021-03-21 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Jekyll",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/jekyll",
  "thumbnail": "/tutorials/html/images/jekyll-6.png",
  "tagline": "Take your GitHub Pages to the next level.",
  "metaTitle": "GitHub Pages Tutorial",
  "metaDescription": "Create your own webpage using Jekyll and GitHub Pages.",
  "metaImage": "/tutorials/html/images/jekyll-6.png",
  "tags": ["tutorial","html","github-pages","jekyll"],
  "date": "2021-03-11 00:00:00 +0000",
  "printedPages": 10
 },





 {
  "title": "Mars Perseverance Image Colorizer",
  "categories": ["tutorials","processing","images"],
  "url": "/tutorials/processing/images/mars-perseverance-image-colorizer",
  "thumbnail": "/tutorials/processing/images/images/mars-6.png",
  "tagline": "Colorize images coming from Mars!",
  "metaTitle": "Mars Perseverance Image Colorizer",
  "metaDescription": "Use Processing to colorize raw images coming from Mars!",
  "metaImage": "/tutorials/processing/images/images/mars-5.png",
  "tags": ["example","processing","image"],
  "date": "2021-02-22 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "GitHub Pages",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/github-pages",
  "thumbnail": "/tutorials/html/images/github-pages-8.png",
  "tagline": "Create your own webpage using GitHub Pages.",
  "metaTitle": "GitHub Pages Tutorial",
  "metaDescription": "Create your own webpage using GitHub Pages.",
  "metaImage": "/tutorials/html/images/github-pages-9.png",
  "tags": ["tutorial","html","github-pages"],
  "date": "2021-02-20 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "GitHub Profile README",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/github-profile-readme",
  "thumbnail": "/tutorials/html/images/github-profile-readme-11.png",
  "tagline": "Make your GitHub profile your own.",
  "metaTitle": "How to Create a GitHub Profile README",
  "metaDescription": "Learn how to make your GitHub profile your own using a GitHub Profile README!",
  "metaImage": "/tutorials/html/images/github-profile-readme-12.png",
  "tags": ["tutorial","html","github-pages"],
  "date": "2021-02-14 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Rainbow Divs",
  "categories": ["tutorials","html","css"],
  "url": "/tutorials/html/css/rainbow-divs",
  "thumbnail": "/tutorials/html/images/rainbow-divs-1.png",
  "tagline": "Use CSS to create colored divs.",
  "metaTitle": "Rainbow Divs",
  "metaDescription": "Use CSS to create colored divs.",
  "metaImage": "/tutorials/html/images/rainbow-divs-1.png",
  "tags": ["example","html","css"],
  "date": "2021-02-07 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Campfire",
  "categories": ["tutorials","p5js","creating-classes"],
  "url": "/tutorials/p5js/creating-classes/campfire",
  "thumbnail": "/tutorials/p5js/creating-classes/images/campfire-1.png",
  "tagline": "Remember those quiet evenings.",
  "metaTitle": "p5.js Example - Campfire",
  "metaDescription": "Remember those quiet evenings with a digital campfire.",
  "metaImage": "/tutorials/p5js/creating-classes/images/campfire-1.png",
  "tags": ["example","p5.js","javascript","creating-classes","genuary"],
  "date": "2021-01-31 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Popping Circles",
  "categories": ["tutorials","p5js","creating-classes"],
  "url": "/tutorials/p5js/creating-classes/popping-circles",
  "thumbnail": "/tutorials/p5js/creating-classes/images/popping-circles-1.png",
  "tagline": "Fill circles with your mouse that pop if they touch.",
  "metaTitle": "p5.js Example - Popping Circles",
  "metaDescription": "Fill circles with your mouse that pop if they touch.",
  "metaImage": "/tutorials/p5js/creating-classes/images/popping-circles-1.png",
  "tags": ["example","p5.js","javascript","creating-classes","input","genuary"],
  "date": "2021-01-30 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Ant Colony",
  "categories": ["tutorials","p5js","creating-classes"],
  "url": "/tutorials/p5js/creating-classes/ant-colony",
  "thumbnail": "/tutorials/p5js/creating-classes/images/ant-colony-1.png",
  "tagline": "Create an ant colony simulation.",
  "metaTitle": "p5.js Example - Ant Colony",
  "metaDescription": "Create an ant colony simulation.",
  "metaImage": "/tutorials/p5js/creating-classes/images/ant-colony-1.png",
  "tags": ["example","p5.js","javascript","creating-classes","genuary"],
  "date": "2021-01-30 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Arcs",
  "categories": ["tutorials","p5js","calling-functions"],
  "url": "/tutorials/p5js/calling-functions/arcs",
  "thumbnail": "/tutorials/p5js/calling-functions/images/arcs-1.png",
  "tagline": "Draw a circular pattern using the arc function.",
  "metaTitle": "p5.js Example - Arcs",
  "metaDescription": "Draw a circular pattern using the arc function.",
  "metaImage": "/tutorials/p5js/calling-functions/images/arcs-1.png",
  "tags": ["example","p5.js","javascript","calling-functions"],
  "date": "2021-01-30 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Random Notes",
  "categories": ["tutorials","p5js","libraries"],
  "url": "/tutorials/p5js/libraries/random-notes",
  "thumbnail": "/tutorials/p5js/libraries/images/random-notes-1.png",
  "tagline": "Use the p5.sound library to play random notes.",
  "metaTitle": "p5.js Example - Random Notes",
  "metaDescription": "Use the p5.sound library to play random notes.",
  "metaImage": "/tutorials/p5js/libraries/images/random-notes-1.png",
  "tags": ["example","p5.js","javascript","libraries","sound","genuary"],
  "date": "2021-01-28 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Isometric Cubes",
  "categories": ["tutorials","p5js","creating-classes"],
  "url": "/tutorials/p5js/creating-classes/isometric-cubes",
  "thumbnail": "/tutorials/p5js/creating-classes/images/isometric-cubes-1.png",
  "tagline": "Create an isometric grid of cubes.",
  "metaTitle": "p5.js Example - Recursive Lines",
  "metaDescription": "Draw lines that draw other lines.",
  "metaImage": "/tutorials/p5js/creating-classes/images/recursive-lines-1.png",
  "tags": ["example","p5.js","javascript","creating-classes","trigonometry","genuary"],
  "date": "2021-01-27 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Flower Grid",
  "categories": ["tutorials","p5js","for-loops"],
  "url": "/tutorials/p5js/for-loops/flower-grid",
  "thumbnail": "/tutorials/p5js/for-loops/images/flower-grid-1.png",
  "tagline": "Draw a grid of random flowers.",
  "metaTitle": "p5.js Example - Flower Grid",
  "metaDescription": "Draw a grid of random flowers.",
  "metaImage": "/tutorials/p5js/for-loops/images/flower-grid-1.png",
  "tags": ["example","p5.js","javascript","for-loops","genuary"],
  "date": "2021-01-25 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Vertical Gradient",
  "categories": ["tutorials","p5js","for-loops"],
  "url": "/tutorials/p5js/for-loops/vertical-gradient",
  "thumbnail": "/tutorials/p5js/for-loops/images/vertical-gradient-1.png",
  "tagline": "Draw a gradient from one color to another.",
  "metaTitle": "p5.js Example - Vertical Gradient",
  "metaDescription": "Draw a gradient from one color to another.",
  "metaImage": "/tutorials/p5js/for-loops/images/wrong-lines-1.png",
  "tags": ["example","p5.js","javascript","for-loops","genuary"],
  "date": "2021-01-24 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Image Palette",
  "categories": ["tutorials","p5js","images"],
  "url": "/tutorials/p5js/images/image-palette",
  "thumbnail": "/tutorials/p5js/images/images/image-palette-11.png",
  "tagline": "Replace the colors in an image.",
  "metaTitle": "p5.js Example - Image Palette",
  "metaDescription": "Replace the colors in an image.",
  "metaImage": "/tutorials/p5js/images/images/image-palette-11.png",
  "tags": ["example","p5.js","javascript","images","genuary"],
  "date": "2021-01-23 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Wrong Lines",
  "categories": ["tutorials","p5js","for-loops"],
  "url": "/tutorials/p5js/for-loops/wrong-lines",
  "thumbnail": "/tutorials/p5js/for-loops/images/wrong-lines-1.png",
  "tagline": "Draw lines the wrong way.",
  "metaTitle": "p5.js Example - Wrong Lines",
  "metaDescription": "Draw lines the wrong way.",
  "metaImage": "/tutorials/p5js/for-loops/images/wrong-lines-1.png",
  "tags": ["example","p5.js","javascript","for-loops","genuary"],
  "date": "2021-01-22 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Recursive Lines",
  "categories": ["tutorials","p5js","creating-classes"],
  "url": "/tutorials/p5js/creating-classes/recursive-lines",
  "thumbnail": "/tutorials/p5js/creating-classes/images/recursive-lines-1.png",
  "tagline": "Draw lines that draw other lines.",
  "metaTitle": "p5.js Example - Recursive Lines",
  "metaDescription": "Draw lines that draw other lines.",
  "metaImage": "/tutorials/p5js/creating-classes/images/recursive-lines-1.png",
  "tags": ["example","p5.js","javascript","creating-classes","trigonometry","genuary"],
  "date": "2021-01-21 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Loopers",
  "categories": ["tutorials","p5js","creating-classes"],
  "url": "/tutorials/p5js/creating-classes/loopers",
  "thumbnail": "/tutorials/p5js/creating-classes/images/loopers-1.png",
  "tagline": "Draw lines that loop around the screen.",
  "metaTitle": "p5.js Example - Loopers",
  "metaDescription": "Draw lines that loop around the screen.",
  "metaImage": "/tutorials/p5js/creating-classes/images/loopers-1.png",
  "tags": ["example","p5.js","javascript","creating-classes","trigonometry","genuary"],
  "date": "2021-01-20 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Genuary 19",
  "categories": ["tutorials","p5js","images"],
  "url": "/tutorials/p5js/images/genuary-19",
  "thumbnail": "/tutorials/p5js/images/images/genuary-19-1.png",
  "tagline": "Increase the randomness of an image along the Y-axis.",
  "metaTitle": "p5.js Example - Genuary 19",
  "metaDescription": "Increase the randomness of an image along the Y-axis.",
  "metaImage": "/tutorials/p5js/images/images/genuary-19-1.png",
  "tags": ["example","p5.js","javascript","images","genuary"],
  "date": "2021-01-19 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Bonsai Tree",
  "categories": ["tutorials","p5js","creating-classes"],
  "url": "/tutorials/p5js/creating-classes/bonsai-tree",
  "thumbnail": "/tutorials/p5js/creating-classes/images/bonsai-tree-1.png",
  "tagline": "Use recursion to create a digital bonsai tree.",
  "metaTitle": "p5.js Example - Bonsai Tree",
  "metaDescription": "Use recursion to create a digital bonsai tree.",
  "metaImage": "/tutorials/p5js/creating-classes/images/bonsai-tree-1.png",
  "tags": ["example","p5.js","javascript","creating-classes","genuary"],
  "date": "2021-01-18 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Bouncing Line",
  "categories": ["tutorials","p5js","animation"],
  "url": "/tutorials/p5js/animation/bouncing-line",
  "thumbnail": "/tutorials/p5js/animation/images/bouncing-line-4.png",
  "tagline": "Draw a line, pick a new color, move a bit.",
  "metaTitle": "p5.js Example - Bouncing Line",
  "metaDescription": "Draw a line, pick a new color, move a bit.",
  "metaImage": "/tutorials/p5js/animation/images/bouncing-line-3.png",
  "tags": ["example","p5.js","javascript","animation","random","genuary"],
  "date": "2021-01-17 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Curved Grid",
  "categories": ["tutorials","p5js","using-variables"],
  "url": "/tutorials/p5js/using-variables/curved-grid",
  "thumbnail": "/tutorials/p5js/using-variables/images/curved-grid-1.png",
  "tagline": "Draw a retro-futuristic curved grid.",
  "metaTitle": "p5.js Example - Curved Grid",
  "metaDescription": "Use the width and height variables to draw a retro-futuristic curved grid.",
  "metaImage": "/tutorials/p5js/using-variables/images/curved-grid-2.png",
  "tags": ["example","p5.js","javascript","using-variables"],
  "date": "2021-01-16 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "drawTown",
  "categories": ["tutorials","p5js","creating-functions"],
  "url": "/tutorials/p5js/creating-functions/town",
  "thumbnail": "/tutorials/p5js/creating-functions/images/town-2.png",
  "tagline": "Create a function that draws a town.",
  "metaTitle": "p5.js Example - drawTown",
  "metaDescription": "Create a function that draws a town.",
  "metaImage": "/tutorials/p5js/creating-functions/images/town-3.png",
  "tags": ["example","p5.js","javascript","creating-functions"],
  "date": "2021-01-15 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "drawCity",
  "categories": ["tutorials","p5js","creating-functions"],
  "url": "/tutorials/p5js/creating-functions/city",
  "thumbnail": "/tutorials/p5js/creating-functions/images/city-2.png",
  "tagline": "Use functions to draw a random city.",
  "metaTitle": "p5.js Example - drawCity",
  "metaDescription": "Use functions to draw a random city.",
  "metaImage": "/tutorials/p5js/creating-functions/images/city-2.png",
  "tags": ["example","p5.js","javascript","creating-functions","random"],
  "date": "2021-01-15 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "drawHouse",
  "categories": ["tutorials","p5js","creating-functions"],
  "url": "/tutorials/p5js/creating-functions/house",
  "thumbnail": "/tutorials/p5js/creating-functions/images/house-1.png",
  "tagline": "Create a function that draws a house.",
  "metaTitle": "p5.js Example - drawHouse",
  "metaDescription": "Create a function that draws a house.",
  "metaImage": "/tutorials/p5js/creating-functions/images/house-2.png",
  "tags": ["example","p5.js","javascript","creating-functions"],
  "date": "2021-01-14 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Pig",
  "categories": ["tutorials","p5js","calling-functions"],
  "url": "/tutorials/p5js/calling-functions/pig",
  "thumbnail": "/tutorials/p5js/calling-functions/images/pig-2.png",
  "tagline": "Oink!",
  "metaTitle": "p5.js Example - Pig",
  "metaDescription": "Practice calling functions by drawing a pig. Oink! 🐷",
  "metaImage": "/tutorials/p5js/calling-functions/images/pig-2.png",
  "tags": ["example","p5.js","javascript","calling-functions","🐷"],
  "date": "2021-01-13 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Triangle Inset",
  "categories": ["tutorials","p5js","creating-variables"],
  "url": "/tutorials/p5js/creating-variables/triangle-inset",
  "thumbnail": "/tutorials/p5js/creating-variables/images/triangle-inset-1.png",
  "tagline": "Draw triangles inside triangles inside triangles.",
  "metaTitle": "p5.js Example - Triangle Inset",
  "metaDescription": "Draw triangles inside triangles inside triangles.",
  "metaImage": "/tutorials/p5js/creating-variables/images/triangle-inset-2.png",
  "tags": ["example","p5.js","javascript","input"],
  "date": "2021-01-12 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Random Walker",
  "categories": ["tutorials","p5js","animation"],
  "url": "/tutorials/p5js/animation/random-walker",
  "thumbnail": "/tutorials/p5js/animation/images/random-walker-4.png",
  "tagline": "Show a scribble that randomly moves around.",
  "metaTitle": "p5.js Example - Random Walker",
  "metaDescription": "Show a scribble that randomly moves around.",
  "metaImage": "/tutorials/p5js/animation/images/random-walker-2.png",
  "tags": ["example","p5.js","javascript","animation","genuary"],
  "date": "2021-01-11 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Mouse Ripple",
  "categories": ["tutorials","p5js","input"],
  "url": "/tutorials/p5js/input/mouse-ripple",
  "thumbnail": "/tutorials/p5js/input/images/mouse-ripple-3.png",
  "tagline": "Show a ripple when you click the mouse.",
  "metaTitle": "p5.js Example - Mouse Ripple",
  "metaDescription": "Show a ripple when you click the mouse.",
  "metaImage": "/tutorials/p5js/input/images/mouse-ripple-2.png",
  "tags": ["example","p5.js","javascript","input"],
  "date": "2021-01-10 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Lines Silhouette",
  "categories": ["tutorials","p5js","for-loops"],
  "url": "/tutorials/p5js/for-loops/lines-silhouette",
  "thumbnail": "/tutorials/p5js/for-loops/images/lines-silhouette-3.png",
  "tagline": "Use a for loop to create a silhouette of lines.",
  "metaTitle": "p5.js Example - Lines Silhouette",
  "metaDescription": "Use a for loop to create a silhouette of lines.",
  "metaImage": "/tutorials/p5js/for-loops/images/lines-silhouette-2.png",
  "tags": ["example","p5.js","javascript","for-loops"],
  "date": "2021-01-10 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Square Fill",
  "categories": ["tutorials","p5js","animation"],
  "url": "/tutorials/p5js/animation/square-fill",
  "thumbnail": "/tutorials/p5js/animation/images/square-fill-2.png",
  "tagline": "Create a border of squares.",
  "metaTitle": "p5.js Example - Square Fill",
  "metaDescription": "Create a border of squares.",
  "metaImage": "/tutorials/p5js/animation/images/square-fill-3.png",
  "tags": ["example","p5.js","javascript","animation"],
  "date": "2021-01-10 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Random Lines",
  "categories": ["tutorials","p5js","animation"],
  "url": "/tutorials/p5js/animation/random-lines",
  "thumbnail": "/tutorials/p5js/animation/images/random-lines-2.png",
  "tagline": "Fill the screen with random lines.",
  "metaTitle": "p5.js Example - Random Lines",
  "metaDescription": "Fill the screen with random lines.",
  "metaImage": "/tutorials/p5js/animation/images/random-lines-3.png",
  "tags": ["example","p5.js","javascript","random","animation"],
  "date": "2021-01-10 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Falling Line",
  "categories": ["tutorials","p5js","animation"],
  "url": "/tutorials/p5js/animation/falling-line",
  "thumbnail": "/tutorials/p5js/animation/images/falling-line-2.png",
  "tagline": "Show a falling line that fills the screen.",
  "metaTitle": "p5.js Example - Falling Line",
  "metaDescription": "Show a falling line that fills the screen.",
  "metaImage": "/tutorials/p5js/animation/images/falling-line-2.png",
  "tags": ["example","p5.js","javascript","animation"],
  "date": "2021-01-09 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Falling Points",
  "categories": ["tutorials","p5js","arrays"],
  "url": "/tutorials/p5js/arrays/falling-points",
  "thumbnail": "/tutorials/p5js/arrays/images/falling-points-2.png",
  "tagline": "Show falling points that look like snow.",
  "metaTitle": "p5.js Example - Falling Points",
  "metaDescription": "Use arrays to show falling points that look like snow.",
  "metaImage": "/tutorials/p5js/arrays/images/falling-points-3.png",
  "tags": ["example","p5.js","javascript","input"],
  "date": "2021-01-07 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Clickable Text",
  "categories": ["tutorials","p5js","input"],
  "url": "/tutorials/p5js/input/clickable-text",
  "thumbnail": "/tutorials/p5js/input/images/clickable-text-2.png",
  "tagline": "Create text that opens a link when you click it.",
  "metaTitle": "p5.js Example - Clickable Text",
  "metaDescription": "Create text that opens a link when you click it.",
  "metaImage": "/tutorials/p5js/input/images/clickable-text-3.png",
  "tags": ["example","p5.js","javascript","input"],
  "date": "2021-01-06 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Circles",
  "categories": ["tutorials","p5js","calling-functions"],
  "url": "/tutorials/p5js/calling-functions/circles",
  "thumbnail": "/tutorials/p5js/calling-functions/images/circles-2.png",
  "tagline": "Use circles to create an interesting pattern.",
  "metaTitle": "p5.js Example - Circles",
  "metaDescription": "Use circles to create an interesting pattern.",
  "metaImage": "/tutorials/p5js/calling-functions/images/circles-2.png",
  "tags": ["example","p5.js","javascript","calling-functions"],
  "date": "2021-01-05 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Blue Squares",
  "categories": ["tutorials","p5js","calling-functions"],
  "url": "/tutorials/p5js/calling-functions/blue-squares",
  "thumbnail": "/tutorials/p5js/calling-functions/images/blue-squares-2.png",
  "tagline": "A gradient of blue squares.",
  "metaTitle": "p5.js Example - Blue Squares",
  "metaDescription": "A gradient of blue squares.",
  "metaImage": "/tutorials/p5js/calling-functions/images/blue-squares-2.png",
  "tags": ["example","p5.js","javascript","calling-functions"],
  "date": "2021-01-04 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Numbers Station",
  "categories": ["tutorials","p5js","using-objects"],
  "url": "/tutorials/p5js/using-objects/numbers-station",
  "thumbnail": "/tutorials/p5js/using-objects/images/numbers-station-1.png",
  "tagline": "Use text-to-speech to create a numbers station.",
  "metaTitle": "p5.js Example - Numbers Station",
  "metaDescription": "Use text-to-speech to create a numbers station.",
  "metaImage": "/tutorials/p5js/using-objects/images/numbers-station-1.png",
  "tags": ["example","p5.js","javascript","oop"],
  "date": "2021-01-03 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Asimov's Empire, Robot, and Foundation Series (CSS Tables)",
  "categories": ["tutorials","html","css"],
  "url": "/tutorials/html/css/asimov-empire-robots-foundation-tables",
  "thumbnail": "/tutorials/html/images/asimov-empire-robots-foundation-tables-2.png",
  "tagline": "Use CSS to create colored tables!",
  "metaTitle": "Asimov's Empire, Robot, and Foundation Series (CSS Tables)",
  "metaDescription": "Use CSS to create colored tables!",
  "metaImage": "/tutorials/html/images/asimov-empire-robots-foundation-tables.png",
  "tags": ["example","html","css"],
  "date": "2021-01-02 00:00:00 +0000",
  "printedPages": 10
 },





 {
  "title": "Happy New Year 2021",
  "categories": ["blog"],
  "url": "/blog/happy-new-year-2021",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Happy New Year 2021",
  "metaDescription": "2020, amiright?",
  "metaImage": "/blog/images/happy-new-year-2021/thumbnail.jpg",
  "tags": ["new-year"],
  "date": "2021-01-02 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "Year Percent",
  "categories": ["tutorials","p5js","using-objects"],
  "url": "/tutorials/p5js/using-objects/year-percent",
  "thumbnail": "/tutorials/p5js/using-objects/images/year-percent-1.png",
  "tagline": "How far into the year are we?",
  "metaTitle": "p5.js Example - Year Percent",
  "metaDescription": "How far into the year are we?",
  "metaImage": "/tutorials/p5js/using-objects/images/year-percent-1.png",
  "tags": ["example","p5.js","javascript","oop"],
  "date": "2021-01-01 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Ten Years of Coding on the Internet",
  "categories": ["blog"],
  "url": "/blog/ten-years",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Ten Years of Coding on the Internet",
  "metaDescription": "A look back on the last ten years, from One Program per Week, through Static Void Games, to Happy Coding!",
  "metaImage": "/blog/images/ten-years/thumbnail.png",
  "tags": ["dev-log","favorite"],
  "date": "2020-12-31 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Rainbow",
  "categories": ["tutorials","p5js","calling-functions"],
  "url": "/tutorials/p5js/calling-functions/rainbow",
  "thumbnail": "/tutorials/p5js/calling-functions/images/rainbow-2.png",
  "tagline": "🌈",
  "metaTitle": "p5.js Example - Rainbow",
  "metaDescription": "🌈",
  "metaImage": "/tutorials/p5js/calling-functions/images/rainbow-2.png",
  "tags": ["example","p5.js","javascript","🌈"],
  "date": "2020-12-28 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "How to Learn Coding",
  "categories": ["tutorials","how-to"],
  "url": "/tutorials/how-to/learn-coding",
  "thumbnail": "/tutorials/how-to/images/learn-coding-1.png",
  "tagline": "How to teach yourself to code using Happy Coding.",
  "metaTitle": "How to Learn Coding",
  "metaDescription": "How to teach yourself to code using Happy Coding.",
  "metaImage": "/tutorials/how-to/images/learn-coding-1.png",
  "tags": ["tutorial","how-to","meta","career"],
  "date": "2020-12-27 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "New and Improved p5.js and Processing Tutorials",
  "categories": ["blog"],
  "url": "/blog/p5js-tutorials",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "New and Improved p5.js and Processing Tutorials",
  "metaDescription": "Happy Coding Now Has New and Improved p5.js and Processing Tutorials",
  "metaImage": "/tutorials/p5js/images/hello-world-3.png",
  "tags": ["site-update"],
  "date": "2020-12-12 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Happy Coding is Built With",
  "categories": ["blog"],
  "url": "/blog/happy-coding-is-built-with",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Happy Coding is Built With",
  "metaDescription": "Here's a list of everything I use to create Happy Coding.",
  "metaImage": "/blog/images/happy-coding-is-built-with/thumbnail.jpg",
  "tags": ["site-update","dev-log"],
  "date": "2020-12-06 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "What's Next?",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/next",
  "thumbnail": "/tutorials/processing/images/processing-icon-small-1.png",
  "tagline": "Some options to explore after learning Processing.",
  "metaTitle": "What's Next?",
  "metaDescription": "Some options to explore after learning Processing.",
  "metaImage": "/tutorials/processing/images/processing-icon-large-1.png",
  "tags": ["tutorial","processing"],
  "date": "2020-12-01 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "What's Next?",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/next",
  "thumbnail": "/tutorials/p5js/images/hello-world-3.png",
  "tagline": "Some options to explore after learning p5.js.",
  "metaTitle": "What's Next?",
  "metaDescription": "Some options to explore after learning p5.js.",
  "metaImage": "/tutorials/p5js/images/hello-world-3.png",
  "tags": ["tutorial","p5.js","javascript"],
  "date": "2020-12-01 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Debugging",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/debugging",
  "thumbnail": "/tutorials/p5js/images/hello-world-3.png",
  "tagline": "Learn how to debug your p5.js code.",
  "metaTitle": "Debugging p5.js",
  "metaDescription": "Learn how to debug your p5.js code.",
  "metaImage": "/tutorials/p5js/images/hello-world-3.png",
  "tags": ["tutorial","p5.js","javascript","debugging"],
  "date": "2020-11-26 00:00:00 +0000",
  "printedPages": 10
 },





 {
  "title": "From p5.js to Web Dev",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/web-dev",
  "thumbnail": "/tutorials/p5js/images/web-1.png",
  "tagline": "Mix p5.js with HTML, CSS, and JavaScript.",
  "metaTitle": "From p5.js to Web Dev",
  "metaDescription": "Mix p5.js with HTML, CSS, and JavaScript.",
  "metaImage": "/tutorials/p5js/images/web-2.png",
  "tags": ["tutorial","p5.js","javascript","html","css"],
  "date": "2020-11-21 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Images",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/images",
  "thumbnail": "/tutorials/processing/images/images-1.png",
  "tagline": "Display and manipulate image files.",
  "metaTitle": "Images in p5.js",
  "metaDescription": "Learn how to load, display, and manipulate image files in p5.js.",
  "metaImage": "/tutorials/processing/images/images-8.png",
  "tags": ["tutorial","p5.js","javascript","image"],
  "date": "2020-11-16 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Array Functions",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/array-functions",
  "thumbnail": "/tutorials/processing/images/arraylists-1.gif",
  "tagline": "Take arrays to the next level.",
  "metaTitle": "Array Functions in p5.js",
  "metaDescription": "Take arrays to the next level.",
  "metaImage": "/tutorials/processing/arraylists/images/random-walkers-3.png",
  "tags": ["tutorial","p5.js","javascript","arrays"],
  "date": "2020-11-14 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Creating Classes",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/creating-classes",
  "thumbnail": "/tutorials/processing/images/creating-classes-4.gif",
  "tagline": "Create blueprints for your own objects.",
  "metaTitle": "Creating Classes in p5.js",
  "metaDescription": "Learn how to create classes in p5.js to create blueprints for your own objects.",
  "metaImage": "/tutorials/processing/images/creating-classes-3.png",
  "tags": ["tutorial","p5.js","javascript","objects"],
  "date": "2020-11-07 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "Using Objects",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/using-objects",
  "thumbnail": "/tutorials/processing/images/using-objects-2.gif",
  "tagline": "Group related variables together.",
  "metaTitle": "Using Objects in p5.js",
  "metaDescription": "Learn how to use objects in p5.js to group related variables together.",
  "metaImage": "/tutorials/processing/using-objects/images/eyes-5.png",
  "tags": ["tutorial","p5.js","javascript","objects"],
  "date": "2020-10-24 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "Google Cloud Java 11 Migration",
  "categories": ["blog"],
  "url": "/blog/google-cloud-java-11",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Google Cloud Java 11 Migration",
  "metaDescription": "Some ranting and rambling about the surprisingly painful Google Cloud Java 11 migration.",
  "metaImage": "/tutorials/google-cloud/images/google-cloud-icon-2.png",
  "tags": ["site-update","dev-log"],
  "date": "2020-10-24 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Migrating to Java 11",
  "categories": ["tutorials","google-cloud"],
  "url": "/tutorials/google-cloud/migrating-to-java-11",
  "thumbnail": "/tutorials/google-cloud/images/google-cloud-icon-1.png",
  "tagline": "Upgrade from Java 8 to Java 11.",
  "metaTitle": "Google Cloud Migrating from Java 8 to Java 11",
  "metaDescription": "Upgrade your Google Cloud project from Java 8 to Java 11, and from the App Engine SDK to the Cloud SDK.",
  "metaImage": "/tutorials/google-cloud/images/google-cloud-icon-2.png",
  "tags": ["tutorial","java","google","cloud"],
  "date": "2020-10-11 00:00:00 +0000",
  "printedPages": 11
 },





 {
  "title": "EmojAvoid (LD 47)",
  "categories": ["gallery","emojavoid-ld-47"],
  "url": "/gallery/emojavoid-ld-47/index",
  "thumbnail": "/gallery/emojavoid-ld-47/images/thumbnail.png",
  "tagline": "Ludum Dare 47",
  "metaTitle": "EmojAvoid (Ludum Dare 47)",
  "metaDescription": "Avoid the obstacles in 5 game at one time!",
  "metaImage": "/gallery/emojavoid-ld-47/images/thumbnail.png",
  "tags": [],
  "date": "2020-10-04 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Translation Web App Hello World",
  "categories": ["tutorials","google-cloud","translation"],
  "url": "/tutorials/google-cloud/translation/translation-hello-world-webapp",
  "thumbnail": "/tutorials/google-cloud/images/translation-2.png",
  "tagline": "Use Google Translation in your own web app.",
  "metaTitle": "Google Cloud Translation Web App Hello World Example",
  "metaDescription": "Use Google Translation in your own web app.",
  "metaImage": "/tutorials/google-cloud/images/translation-3.png",
  "tags": ["example","java","google-cloud","app-engine","post","fetch","translation"],
  "date": "2020-09-27 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "Translation Standalone Hello World",
  "categories": ["tutorials","google-cloud","translation"],
  "url": "/tutorials/google-cloud/translation/translation-hello-world-standalone",
  "thumbnail": "/tutorials/google-cloud/images/translation-2.png",
  "tagline": "Use Google Translate in your own code.",
  "metaTitle": "Google Translation Standalone Hello World Example",
  "metaDescription": "Use Google Translate in your own code.",
  "metaImage": "/tutorials/google-cloud/images/translation-3.png",
  "tags": ["example","java","google-cloud","translation"],
  "date": "2020-09-27 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Natural Language Web App Hello World",
  "categories": ["tutorials","google-cloud","natural-language"],
  "url": "/tutorials/google-cloud/natural-language/natural-language-hello-world-webapp",
  "thumbnail": "/tutorials/google-cloud/images/natural-language-3.png",
  "tagline": "Use machine learning to analyze natural language.",
  "metaTitle": "Google Cloud Natural Language Web App Hello World Example",
  "metaDescription": "Use machine learning to analyze natural language.",
  "metaImage": "/tutorials/google-cloud/images/natural-language-4.png",
  "tags": ["example","java","google-cloud","app-engine","natural-language","sentiment-analysis"],
  "date": "2020-09-27 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "Natural Language Standalone Hello World",
  "categories": ["tutorials","google-cloud","natural-language"],
  "url": "/tutorials/google-cloud/natural-language/natural-language-hello-world-standalone",
  "thumbnail": "/tutorials/google-cloud/images/natural-language-3.png",
  "tagline": "Use machine learning to analyze natural language.",
  "metaTitle": "Google Cloud Natural Language Standalone Hello World Example",
  "metaDescription": "Use machine learning to analyze natural language.",
  "metaImage": "/tutorials/google-cloud/images/natural-language-4.png",
  "tags": ["example","java","google-cloud","natural-language"],
  "date": "2020-09-27 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Google Maps Marker",
  "categories": ["tutorials","google-cloud","maps"],
  "url": "/tutorials/google-cloud/maps/maps-markers",
  "thumbnail": "/tutorials/javascript/images/washington-dc-tour-1.png",
  "tagline": "Add  marker to your Google map.",
  "metaTitle": "Google Maps Marker Example",
  "metaDescription": "Add a marker to your Google map.",
  "metaImage": "/tutorials/javascript/images/washington-dc-tour-2.png",
  "tags": ["example","javascript","google-cloud","maps"],
  "date": "2020-09-27 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Shoutbox V1 (POST Requests)",
  "categories": ["tutorials","google-cloud","app-engine"],
  "url": "/tutorials/google-cloud/app-engine/shoutbox-v1",
  "thumbnail": "/tutorials/java-server/images/post-9.png",
  "tagline": "Use POST requests to create a shoutbox.",
  "metaTitle": "Shoutbox V1 (POST Requests)",
  "metaDescription": "Use POST requests to create a shoutbox.",
  "metaImage": "/tutorials/java-server/images/post-10.png",
  "tags": ["example","java","google-cloud","app-engine","post"],
  "date": "2020-09-27 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "My Quarantine",
  "categories": ["blog"],
  "url": "/blog/my-quarantine",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "My Quarantine",
  "metaDescription": "Two years later, welcome to the new normal.",
  "metaImage": "/blog/images/my-quarantine/thumbnail.jpg",
  "tags": ["personal","favorite"],
  "date": "2020-09-26 00:00:00 +0000",
  "printedPages": 38
 },





 {
  "title": "Cloud Vision Web App Hello World",
  "categories": ["tutorials","google-cloud","vision"],
  "url": "/tutorials/google-cloud/vision/cloud-vision-hello-world-webapp",
  "thumbnail": "/tutorials/google-cloud/images/vision-3.png",
  "tagline": "Use machine learning to analyze images.",
  "metaTitle": "Google Cloud Vision Web App Hello World Example",
  "metaDescription": "Use machine learning to analyze images.",
  "metaImage": "/tutorials/google-cloud/images/vision-4.png",
  "tags": ["example","java","google-cloud","app-engine","cloud-vision"],
  "date": "2020-09-20 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "Cloud Vision Standalone Hello World",
  "categories": ["tutorials","google-cloud","vision"],
  "url": "/tutorials/google-cloud/vision/cloud-vision-hello-world-standalone",
  "thumbnail": "/tutorials/google-cloud/images/vision-3.png",
  "tagline": "Use machine learning to analyze images.",
  "metaTitle": "Google Cloud Vision Standalone Hello World Example",
  "metaDescription": "Use machine learning to analyze images.",
  "metaImage": "/tutorials/google-cloud/images/vision-4.png",
  "tags": ["example","java","google-cloud","cloud-vision"],
  "date": "2020-09-20 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Google Maps Info Windows",
  "categories": ["tutorials","google-cloud","maps"],
  "url": "/tutorials/google-cloud/maps/maps-info-windows",
  "thumbnail": "/tutorials/javascript/images/washington-dc-tour-1.png",
  "tagline": "Add info windows to your Google map.",
  "metaTitle": "Google Maps Info Windows Example",
  "metaDescription": "Add info windows to your Google map.",
  "metaImage": "/tutorials/javascript/images/washington-dc-tour-2.png",
  "tags": ["example","javascript","google-cloud","maps"],
  "date": "2020-09-20 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Google Maps Hello World",
  "categories": ["tutorials","google-cloud","maps"],
  "url": "/tutorials/google-cloud/maps/maps-hello-world",
  "thumbnail": "/tutorials/javascript/images/washington-dc-tour-1.png",
  "tagline": "Add a Google map to your page.",
  "metaTitle": "Google Maps Hello World Example",
  "metaDescription": "Add a Google map to your page using the Google Maps JavaScript library.",
  "metaImage": "/tutorials/javascript/images/washington-dc-tour-2.png",
  "tags": ["example","javascript","google-cloud","maps"],
  "date": "2020-09-20 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Google Maps Tour",
  "categories": ["tutorials","google-cloud","maps"],
  "url": "/tutorials/google-cloud/maps/maps-google-tour",
  "thumbnail": "/tutorials/javascript/images/washington-dc-tour-1.png",
  "tagline": "Take a tour of Google's campus.",
  "metaTitle": "Google Maps Tour Example",
  "metaDescription": "Take a tour of Google's campus using the Google Maps JavaScript library.",
  "metaImage": "/tutorials/javascript/images/washington-dc-tour-2.png",
  "tags": ["example","javascript","google-cloud","maps"],
  "date": "2020-09-20 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Shoutbox V2 (Datastore)",
  "categories": ["tutorials","google-cloud","datastore"],
  "url": "/tutorials/google-cloud/datastore/datastore-shoutbox-v2",
  "thumbnail": "/tutorials/google-cloud/images/datastore-1.png",
  "tagline": "Store your data.",
  "metaTitle": "Shoutbox V2 (Datastore Example)",
  "metaDescription": "Store data using Google Datastore.",
  "metaImage": "/tutorials/google-cloud/images/datastore-2.png",
  "tags": ["example","java","google-cloud","app-engine","datastore"],
  "date": "2020-09-20 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "Cloud Storage Hello World",
  "categories": ["tutorials","google-cloud","cloud-storage"],
  "url": "/tutorials/google-cloud/cloud-storage/cloud-storage-hello-world",
  "thumbnail": "/tutorials/google-cloud/images/blobstore-4.png",
  "tagline": "Let users upload images and other files.",
  "metaTitle": "Google Cloud Storage Hello World Example",
  "metaDescription": "Let users upload images and other files.",
  "metaImage": "/tutorials/google-cloud/images/blobstore-5.png",
  "tags": ["example","java","server","google-cloud","app-engine","cloud-storage"],
  "date": "2020-09-20 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "App Engine Hello World",
  "categories": ["tutorials","google-cloud","app-engine"],
  "url": "/tutorials/google-cloud/app-engine/app-engine-hello-world",
  "thumbnail": "/tutorials/java-server/images/hosting-google-app-engine-5.png",
  "tagline": "Deploy your web app.",
  "metaTitle": "Google App Engine Hello World Example",
  "metaDescription": "Deploy your web app on Google App Engine.",
  "metaImage": "/tutorials/java-server/images/hosting-google-app-engine-6.png",
  "tags": ["example","java","server","google-cloud","app-engine"],
  "date": "2020-09-19 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Cloud Storage",
  "categories": ["tutorials","google-cloud"],
  "url": "/tutorials/google-cloud/cloud-storage",
  "thumbnail": "/tutorials/google-cloud/images/blobstore-4.png",
  "tagline": "Let users upload images and other files.",
  "metaTitle": "Google Cloud Storage Tutorial",
  "metaDescription": "Let users upload images and other files.",
  "metaImage": "/tutorials/google-cloud/images/blobstore-5.png",
  "tags": ["tutorial","javascript","google","cloud","cloud-storage"],
  "date": "2020-09-12 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "OAuth 2.0",
  "categories": ["tutorials","google-cloud"],
  "url": "/tutorials/google-cloud/oauth-2",
  "thumbnail": "/tutorials/google-cloud/images/authentication-1.png",
  "tagline": "Let users log into your site using their Google accounts.",
  "metaTitle": "Google OAuth 2.0 Tutorial",
  "metaDescription": "Let users log into your site using their Google accounts.",
  "metaImage": "/tutorials/google-cloud/images/authentication-2.png",
  "tags": ["tutorial","java","server","google","cloud","oauth-2","authentication"],
  "date": "2020-09-06 00:00:00 +0000",
  "printedPages": 12
 },





 {
  "title": "Datastore",
  "categories": ["tutorials","google-cloud"],
  "url": "/tutorials/google-cloud/datastore",
  "thumbnail": "/tutorials/google-cloud/images/datastore-1.png",
  "tagline": "Store your data.",
  "metaTitle": "Google Datastore Tutorial",
  "metaDescription": "Store data using Google Datastore.",
  "metaImage": "/tutorials/google-cloud/images/datastore-2.png",
  "tags": ["tutorial","java","server","google","cloud","datastore","database"],
  "date": "2020-08-23 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "Setup",
  "categories": ["tutorials","google-cloud"],
  "url": "/tutorials/google-cloud/setup",
  "thumbnail": "/tutorials/google-cloud/images/google-cloud-icon-1.png",
  "tagline": "Getting started with Google Cloud",
  "metaTitle": "Google Cloud Setup",
  "metaDescription": "Getting started with Google Cloud",
  "metaImage": "/tutorials/google-cloud/images/google-cloud-icon-2.png",
  "tags": ["tutorial","java","server","google","cloud"],
  "date": "2020-08-22 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "App Engine",
  "categories": ["tutorials","google-cloud"],
  "url": "/tutorials/google-cloud/app-engine",
  "thumbnail": "/tutorials/java-server/images/hosting-google-app-engine-5.png",
  "tagline": "Deploy your web app.",
  "metaTitle": "Google App Engine Tutorial",
  "metaDescription": "Deploy your web app on Google App Engine.",
  "metaImage": "/tutorials/java-server/images/hosting-google-app-engine-6.png",
  "tags": ["tutorial","java","server","google","cloud","app-engine"],
  "date": "2020-08-16 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "Music Visualization",
  "categories": ["gallery","music"],
  "url": "/gallery/music/index",
  "thumbnail": "/gallery/music/images/thumbnail.png",
  "tagline": "Visualizations of songs and albums.",
  "metaTitle": "Music Visualization",
  "metaDescription": "Visualizations of songs and albums.",
  "metaImage": "/gallery/music/images/thumbnail.png",
  "tags": [],
  "date": "2020-07-19 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Arrays",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/arrays",
  "thumbnail": "/tutorials/processing/images/arrays-5.gif",
  "tagline": "Create variables that hold multiple values.",
  "metaTitle": "Arrays in p5.js",
  "metaDescription": "Learn how to use arrays in p5.js. Use arrays to store multiple values in a single variable!",
  "metaImage": "/tutorials/processing/images/arrays-6.png",
  "tags": ["tutorial","p5.js","javascript","arrays"],
  "date": "2020-07-18 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Spirals",
  "categories": ["gallery","spirals"],
  "url": "/gallery/spirals/index",
  "thumbnail": "/gallery/spirals/images/spiral-6.0x3.0-sw=normal-bg=normal-rs=7.png",
  "tagline": "Computer-generated spiral art.",
  "metaTitle": "Spirals",
  "metaDescription": "Computer-generated spiral art.",
  "metaImage": "/gallery/spirals/images/spiral-6.0x3.0-sw=normal-bg=normal-rs=7.png",
  "tags": [],
  "date": "2020-07-02 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Black Lives Matter to Me",
  "categories": ["blog"],
  "url": "/blog/black-lives-matter-to-me",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Black Lives Matter to Me",
  "metaDescription": "How confirmation bias and us-vs-them mentalities have affected my understanding of #BlackLivesMatter.",
  "metaImage": "/blog/images/black-lives-matter-to-me/thumbnail.png",
  "tags": ["personal"],
  "date": "2020-06-20 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "For Loops",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/for-loops",
  "thumbnail": "/tutorials/processing/images/for-loops-7.png",
  "tagline": "Use patterns to repeat work without repeating code.",
  "metaTitle": "For Loops in p5.js",
  "metaDescription": "Learn how to use for loops in p5.js.",
  "metaImage": "/tutorials/processing/images/for-loops-7.png",
  "tags": ["tutorial","p5.js","javascript","for-loops"],
  "date": "2020-06-13 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Input",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/input",
  "thumbnail": "/tutorials/processing/images/input-12.gif",
  "tagline": "Use mouse and keyboard input to make interactive sketches.",
  "metaTitle": "User Input in p5.js",
  "metaDescription": "Learn how to detect mouse and keyboard input to make interactive programs in p5.js.",
  "metaImage": "/tutorials/processing/images/input-13.png",
  "tags": ["tutorial","p5.js","javascript","input"],
  "date": "2020-06-06 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Animation",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/animation",
  "thumbnail": "/tutorials/processing/images/animation-7.gif",
  "tagline": "Create animated visualizations.",
  "metaTitle": "Animation in p5.js",
  "metaDescription": "Learn how to create animations in p5.js",
  "metaImage": "/tutorials/processing/images/animation-8.png",
  "tags": ["tutorial","p5.js","javascript","animation"],
  "date": "2020-05-30 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "If Statements",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/if-statements",
  "thumbnail": "/tutorials/javascript/images/if-statements-1.png",
  "tagline": "Make decisions in your p5.js code.",
  "metaTitle": "If Statements in p5.js",
  "metaDescription": "Learn how to use if statements to make decisions in your code.",
  "metaImage": "/tutorials/javascript/images/if-statements-1.png",
  "tags": ["tutorial","p5.js","javascript","if-statements"],
  "date": "2020-05-24 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "Creating Functions",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/creating-functions",
  "thumbnail": "/tutorials/processing/images/creating-functions-9.gif",
  "tagline": "Write your own custom functions.",
  "metaTitle": "Creating Functions in p5.js",
  "metaDescription": "Learn how to write your own functions in p5.js.",
  "metaImage": "/tutorials/processing/images/creating-functions-7.png",
  "tags": ["tutorial","p5.js","javascript"],
  "date": "2020-05-23 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Creating Variables",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/creating-variables",
  "thumbnail": "/tutorials/processing/images/creating-variables-thumbnail.gif",
  "tagline": "Give your code a memory.",
  "metaTitle": "Creating Variables in p5.js",
  "metaDescription": "Learn how to create your own variables in p5.js.",
  "metaImage": "/tutorials/processing/images/using-variables-7.png",
  "tags": ["tutorial","p5.js","javascript"],
  "date": "2020-05-17 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "Using Variables",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/using-variables",
  "thumbnail": "/tutorials/processing/images/using-variables-7.png",
  "tagline": "Get information from the computer.",
  "metaTitle": "Using Variables in p5.js",
  "metaDescription": "Learn how to use variables to get information from p5.js.",
  "metaImage": "/tutorials/processing/images/using-variables-7.png",
  "tags": ["tutorial","p5.js","javascript"],
  "date": "2020-05-03 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Calling Functions",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/calling-functions",
  "thumbnail": "/tutorials/p5js/images/calling-functions-4.png",
  "tagline": "Tell the computer what to do.",
  "metaTitle": "Calling Functions in p5.js",
  "metaDescription": "Learn the first step to coding: calling functions!",
  "metaImage": "/tutorials/p5js/images/calling-functions-4.png",
  "tags": ["tutorial","p5.js","javascript"],
  "date": "2020-05-02 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "Welcome to Coding",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/welcome-to-coding",
  "thumbnail": "/tutorials/p5js/images/hello-world-3.png",
  "tagline": "Get ready to write some code!",
  "metaTitle": "Welcome to Coding p5.js",
  "metaDescription": "Get ready to write some code!",
  "metaImage": "/tutorials/p5js/images/hello-world-3.png",
  "tags": ["tutorial","p5.js","javascript"],
  "date": "2020-04-26 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Ludum Dare 46 Retrospective",
  "categories": ["blog"],
  "url": "/blog/ludum-dare-46",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Ludum Dare 46 Retrospective",
  "metaDescription": "What happens when you combine the Game of Life with a 48-hour game jam?",
  "metaImage": "/gallery/the-next-generation-ld-46/images/thumbnail.png",
  "tags": ["dev-log"],
  "date": "2020-04-26 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "The Next Generation (LD 46)",
  "categories": ["gallery","the-next-generation-ld-46"],
  "url": "/gallery/the-next-generation-ld-46/index",
  "thumbnail": "/gallery/the-next-generation-ld-46/images/thumbnail.png",
  "tagline": "Ludum Dare 46",
  "metaTitle": "The Next Generation (Ludum Dare 46)",
  "metaDescription": "Play The Next Generation, a Game of Life game!",
  "metaImage": "/gallery/the-next-generation-ld-46/images/thumbnail.png",
  "tags": [],
  "date": "2020-04-19 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Run Map - About",
  "categories": ["gallery","run-map"],
  "url": "/gallery/run-map/about",
  "thumbnail": "/gallery/run-map/images/run-1.png",
  "tagline": "🏃🌎",
  "metaTitle": "Run Map - About",
  "metaDescription": "I used Google Maps to visualize every run I've, uh, run.",
  "metaImage": "/gallery/run-map/images/run-1.png",
  "tags": [],
  "date": "2020-03-07 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Map",
  "categories": ["gallery","run-map"],
  "url": "/gallery/run-map/map",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": null,
  "metaDescription": null,
  "metaImage": null,
  "tags": [],
  "date": "2020-02-27 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Run Map",
  "categories": ["gallery","run-map"],
  "url": "/gallery/run-map/index",
  "thumbnail": "/gallery/run-map/images/run-1.png",
  "tagline": "🏃🌎",
  "metaTitle": "Run Map",
  "metaDescription": "I used Google Maps to visualize every run I've, uh, run.",
  "metaImage": "/gallery/run-map/images/run-1.png",
  "tags": [],
  "date": "2020-02-24 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Feliz Left Nav-idad",
  "categories": ["blog"],
  "url": "/blog/feliz-left-nav-idad",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Feliz Left Nav-idad",
  "metaDescription": "Here's a list of everything I googled while I added a left nav to the site.",
  "metaImage": "/blog/images/feliz-left-nav-idad/thumbnail.png",
  "tags": ["site-update"],
  "date": "2020-02-17 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "My Year in Pixels 2019",
  "categories": ["blog"],
  "url": "/blog/year-in-pixels-2019",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "My Year in Pixels 2019",
  "metaDescription": "Are you happy most of the time, with temporary intervals of unhappiness? Or are you unhappy most of the time, with temporary intervals of happiness?",
  "metaImage": "/blog/images/year-in-pixels-2019/thumbnail.png",
  "tags": ["new-year"],
  "date": "2020-02-15 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "What is Happy Coding?",
  "categories": ["blog"],
  "url": "/blog/what-is-happy-coding",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "What is HappyCoding.io?",
  "metaDescription": "Some ramblings and reflections on the future of Happy Coding.",
  "metaImage": "/blog/images/what-is-happy-coding/thumbnail.png",
  "tags": ["personal","new-year"],
  "date": "2020-01-11 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Happy New Year 2020",
  "categories": ["blog"],
  "url": "/blog/happy-new-year-2020",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Happy New Year 2020",
  "metaDescription": "2019 is so last year!",
  "metaImage": "/blog/images/happy-new-year-2020/thumbnail.jpg",
  "tags": ["new-year"],
  "date": "2020-01-01 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "The Subjective Side of Code",
  "categories": ["blog"],
  "url": "/blog/subjective-side-of-code",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "The Subjective Side of Code",
  "metaDescription": "You might be surprised to hear that a lot of decisions about code come down to a subjective, opinionated question: how does this code make you feel?",
  "metaImage": "/blog/images/subjective-side-of-code/opinions-1.jpg",
  "tags": ["personal"],
  "date": "2019-12-24 00:00:00 +0000",
  "printedPages": 11
 },





 {
  "title": "About #000000",
  "categories": ["gallery","ludum-dare-45"],
  "url": "/gallery/ludum-dare-45/about",
  "thumbnail": "/gallery/images/ludum-dare-45-1.png",
  "tagline": "Ludum Dare 45 Postmortem",
  "metaTitle": "About #000000",
  "metaDescription": "Here's the postmortem for #000000, my Ludum Dare 45 entry.",
  "metaImage": "/gallery/images/ludum-dare-45-1.png",
  "tags": [],
  "date": "2019-10-16 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "#000000",
  "categories": ["gallery","ludum-dare-45"],
  "url": "/gallery/ludum-dare-45/index",
  "thumbnail": "/gallery/images/ludum-dare-45-1.png",
  "tagline": "Ludum Dare 45",
  "metaTitle": "#000000",
  "metaDescription": "Play #000000, a game about color gradients!",
  "metaImage": "/gallery/images/ludum-dare-45-1.png",
  "tags": [],
  "date": "2019-10-05 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "The Quadrilateral of Creativity",
  "categories": ["blog"],
  "url": "/blog/quadrilateral-of-creativity",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "The Quadrilateral of Creativity",
  "metaDescription": "The 4 corners of creativity.",
  "metaImage": "/blog/images/quadrilateral-of-creativity/chart-2.png",
  "tags": ["personal"],
  "date": "2019-09-28 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "How to Interview",
  "categories": ["tutorials","how-to"],
  "url": "/tutorials/how-to/interview",
  "thumbnail": "/tutorials/how-to/images/interview-2.jpg",
  "tagline": "What to expect and how to approach tech interviews.",
  "metaTitle": "How to Interview",
  "metaDescription": "What to expect and how to approach tech interviews.",
  "metaImage": "/tutorials/how-to/images/interview-1.jpg",
  "tags": ["tutorial","how-to","interview","career"],
  "date": "2019-08-10 00:00:00 +0000",
  "printedPages": 28
 },





 {
  "title": "Debootstrapification",
  "categories": ["blog"],
  "url": "/blog/debootstrapification",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Debootstrapification",
  "metaDescription": "Lose 24,503 lines of code with this one weird trick!",
  "metaImage": "/blog/images/debootstrapification/thumbnail.png",
  "tags": ["site-update"],
  "date": "2019-07-07 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Checking My Privilege",
  "categories": ["blog"],
  "url": "/blog/checking-my-privilege",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Checking My Privilege",
  "metaDescription": "Me, privileged? No way! (Yes way.)",
  "metaImage": "/blog/images/checking-my-privilege/thumbnail.jpg",
  "tags": ["personal","favorite"],
  "date": "2019-06-09 00:00:00 +0000",
  "printedPages": 11
 },





 {
  "title": "Google Cloud Tutorials",
  "categories": ["blog"],
  "url": "/blog/google-cloud-tutorials",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Google Cloud Tutorials",
  "metaDescription": "Happy Coding now has Google Cloud tutorials!",
  "metaImage": "/tutorials/google-cloud/images/google-cloud-icon-2.png",
  "tags": ["site-update"],
  "date": "2019-05-25 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Cloud Vision",
  "categories": ["tutorials","google-cloud"],
  "url": "/tutorials/google-cloud/vision",
  "thumbnail": "/tutorials/google-cloud/images/vision-3.png",
  "tagline": "Use machine learning to analyze images.",
  "metaTitle": "Google Cloud Vision Tutorial",
  "metaDescription": "Use machine learning to analyze images.",
  "metaImage": "/tutorials/google-cloud/images/vision-4.png",
  "tags": ["tutorial","javascript","google","cloud","vision"],
  "date": "2019-05-06 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "Client / Server Communication",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/client-server",
  "thumbnail": "/tutorials/java-server/images/client-server-7.png",
  "tagline": "Learn about clients, servers, requests, and responses.",
  "metaTitle": "Client / Server Communication",
  "metaDescription": "Learn about clients, servers, requests, and responses.",
  "metaImage": "/tutorials/java-server/images/client-server-8.png",
  "tags": ["tutorial","java","server","post"],
  "date": "2019-05-04 00:00:00 +0000",
  "printedPages": 13
 },





 {
  "title": "Translation",
  "categories": ["tutorials","google-cloud"],
  "url": "/tutorials/google-cloud/translation",
  "thumbnail": "/tutorials/google-cloud/images/translation-2.png",
  "tagline": "¡Feliz codificación!",
  "metaTitle": "Google Translation API Tutorial",
  "metaDescription": "Use machine learning to translate text.",
  "metaImage": "/tutorials/google-cloud/images/translation-3.png",
  "tags": ["tutorial","javascript","google","cloud","translation"],
  "date": "2019-04-28 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "Natural Language",
  "categories": ["tutorials","google-cloud"],
  "url": "/tutorials/google-cloud/natural-language",
  "thumbnail": "/tutorials/google-cloud/images/natural-language-3.png",
  "tagline": "Use machine learning to analyze natural language.",
  "metaTitle": "Google Natural Language API Tutorial",
  "metaDescription": "Use machine learning to analyze natural language.",
  "metaImage": "/tutorials/google-cloud/images/natural-language-4.png",
  "tags": ["tutorial","javascript","google","cloud","natural-language"],
  "date": "2019-04-20 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Blobstore (Java 8)",
  "categories": ["tutorials","google-cloud","java-8"],
  "url": "/tutorials/google-cloud/java-8/blobstore",
  "thumbnail": "/tutorials/google-cloud/images/blobstore-4.png",
  "tagline": "Allow users to upload images and other files.",
  "metaTitle": "Google Blobstore Tutorial",
  "metaDescription": "Allow users to upload images and other files.",
  "metaImage": "/tutorials/google-cloud/images/blobstore-5.png",
  "tags": ["tutorial","javascript","google","cloud","blobstore"],
  "date": "2019-04-13 00:00:00 +0000",
  "printedPages": 10
 },





 {
  "title": "Google Maps",
  "categories": ["tutorials","google-cloud"],
  "url": "/tutorials/google-cloud/maps",
  "thumbnail": "/tutorials/javascript/images/washington-dc-tour-1.png",
  "tagline": "Add an interactive map to your page.",
  "metaTitle": "Google Maps Tutorial",
  "metaDescription": "Add an interactive map to your page.",
  "metaImage": "/tutorials/javascript/images/washington-dc-tour-2.png",
  "tags": ["tutorial","javascript","google","cloud","maps"],
  "date": "2019-04-01 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Authentication (Java 8)",
  "categories": ["tutorials","google-cloud","java-8"],
  "url": "/tutorials/google-cloud/java-8/authentication",
  "thumbnail": "/tutorials/google-cloud/images/authentication-1.png",
  "tagline": "Allow users to login.",
  "metaTitle": "Google Authentication Tutorial",
  "metaDescription": "Allow users to login using the Google User API.",
  "metaImage": "/tutorials/google-cloud/images/authentication-2.png",
  "tags": ["tutorial","java","server","google","cloud","authentication"],
  "date": "2019-03-29 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Datastore (Java 8)",
  "categories": ["tutorials","google-cloud","java-8"],
  "url": "/tutorials/google-cloud/java-8/datastore",
  "thumbnail": "/tutorials/google-cloud/images/datastore-1.png",
  "tagline": "Store your data.",
  "metaTitle": "Google Datastore Tutorial",
  "metaDescription": "Store data using Google Datastore.",
  "metaImage": "/tutorials/google-cloud/images/datastore-2.png",
  "tags": ["tutorial","java","server","google","cloud","datastore","database"],
  "date": "2019-03-24 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "App Engine (Java 8)",
  "categories": ["tutorials","google-cloud","java-8"],
  "url": "/tutorials/google-cloud/java-8/app-engine",
  "thumbnail": "/tutorials/java-server/images/hosting-google-app-engine-5.png",
  "tagline": "Deploy your web app.",
  "metaTitle": "Google App Engine Tutorial",
  "metaDescription": "Deploy your web app on Google App Engine.",
  "metaImage": "/tutorials/java-server/images/hosting-google-app-engine-6.png",
  "tags": ["tutorial","java","server","google","cloud","app-engine"],
  "date": "2019-03-24 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Setup (Java 8)",
  "categories": ["tutorials","google-cloud","java-8"],
  "url": "/tutorials/google-cloud/java-8/setup",
  "thumbnail": "/tutorials/google-cloud/images/google-cloud-icon-1.png",
  "tagline": "Getting started with Google Cloud",
  "metaTitle": "Google Cloud Setup (Java 8)",
  "metaDescription": "Getting started with Google Cloud",
  "metaImage": "/tutorials/google-cloud/images/google-cloud-icon-2.png",
  "tags": ["tutorial","java","server","google","cloud"],
  "date": "2019-03-19 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "The Stack Overflow Culture Wars",
  "categories": ["blog"],
  "url": "/blog/stack-overflow-culture-wars",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "The Stack Overflow Culture Wars",
  "metaDescription": "Stack Overflow's identity crisis.",
  "metaImage": "/blog/images/stack-overflow-culture-wars/stack-overflow-logo.png",
  "tags": ["personal"],
  "date": "2019-03-03 00:00:00 +0000",
  "printedPages": 14
 },





 {
  "title": "Happy Arting",
  "categories": ["blog"],
  "url": "/blog/happy-arting",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Happy Arting",
  "metaDescription": "Stanley has wares if you have coin.",
  "metaImage": "/blog/images/happy-arting/stanley-thumbnail.jpg",
  "tags": ["dev-log"],
  "date": "2019-02-16 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "How to Sell Digital Art Online",
  "categories": ["tutorials","how-to"],
  "url": "/tutorials/how-to/sell-digital-art-online",
  "thumbnail": "/tutorials/how-to/images/sell-digital-art-online-3.png",
  "tagline": "How to sell your art on Etsy.",
  "metaTitle": "How to Sell Digital Art Online",
  "metaDescription": "How to sell your art on Etsy.",
  "metaImage": "/tutorials/how-to/images/sell-digital-art-online-2.png",
  "tags": ["tutorial","how-to","art"],
  "date": "2019-02-10 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "The Power of Boredom",
  "categories": ["blog"],
  "url": "/blog/the-power-of-boredom",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "The Power of Boredom",
  "metaDescription": "I'm very lazy. Here's how I use my boredom as a tool to trick myself into putting in the work.",
  "metaImage": "/blog/images/the-power-of-boredom/cat-thumbnail.png",
  "tags": ["personal","favorite"],
  "date": "2019-01-28 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Happy New Year 2019",
  "categories": ["blog"],
  "url": "/blog/happy-new-year-2019",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Happy New Year 2019",
  "metaDescription": "Here's how 2018 went and what I plan on doing in 2019.",
  "metaImage": "/blog/images/happy-new-year-2019/thumbnail.png",
  "tags": ["new-year"],
  "date": "2019-01-01 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Unit Testing",
  "categories": ["tutorials","java"],
  "url": "/tutorials/java/unit-testing",
  "thumbnail": "/tutorials/java/images/unit-testing-1.png",
  "tagline": "JUnit and Mockito",
  "metaTitle": "Java Unit Testing",
  "metaDescription": "Learn how to use JUnit and Mockito to test your Java code.",
  "metaImage": "/tutorials/java/images/unit-testing-2.png",
  "tags": ["tutorial","java","junit","mockito"],
  "date": "2018-11-04 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "Pathfinding",
  "categories": ["tutorials","libgdx"],
  "url": "/tutorials/libgdx/pathfinding",
  "thumbnail": "/tutorials/libgdx/images/pathfinding-13.png",
  "tagline": "From A to B.",
  "metaTitle": "LibGDX Pathfinding",
  "metaDescription": "Add pathfinding to your libGDX game.",
  "metaImage": "/tutorials/libgdx/images/pathfinding-12.png",
  "tags": ["tutorial","libgdx","gdxai","pathfinding","a-star"],
  "date": "2018-11-03 00:00:00 +0000",
  "printedPages": 19
 },





 {
  "title": "Random",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/random",
  "thumbnail": "/tutorials/p5js/images/random-34.png",
  "tagline": "The power and beauty of the random function.",
  "metaTitle": "P5.js Random Function",
  "metaDescription": "The power and beauty of the random function.",
  "metaImage": "/tutorials/p5js/images/random-33.png",
  "tags": ["tutorial","p5.js","javascript","random"],
  "date": "2018-08-20 00:00:00 +0000",
  "printedPages": 24
 },





 {
  "title": "When Failing isn't Failure",
  "categories": ["blog"],
  "url": "/blog/when-failing-isnt-failure",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "When Failing isn't Failure",
  "metaDescription": "I failed at Ludum Dare, and that's okay.",
  "metaImage": "/blog/images/when-failing-isnt-failure/thumbnail-1.png",
  "tags": ["dev-log"],
  "date": "2018-08-19 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Android and LibGDX Tutorials",
  "categories": ["blog"],
  "url": "/blog/android-libgdx-tutorials",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Android and LibGDX Tutorials",
  "metaDescription": "Happy Coding now has Android and LibGDX tutorials!",
  "metaImage": "/tutorials/android/images/hello-world-9.png",
  "tags": ["site-update"],
  "date": "2018-08-10 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Libraries",
  "categories": ["tutorials","libgdx"],
  "url": "/tutorials/libgdx/libraries",
  "thumbnail": "/tutorials/libgdx/images/libraries-3.png",
  "tagline": "Cross-platform code.",
  "metaTitle": "LibGDX Libraries",
  "metaDescription": "Use cross-platform libraries to expand libGDX functionality.",
  "metaImage": "/tutorials/libgdx/images/libraries-2.png",
  "tags": ["tutorial","libgdx"],
  "date": "2018-08-04 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Sound",
  "categories": ["tutorials","libgdx"],
  "url": "/tutorials/libgdx/sound",
  "thumbnail": "/tutorials/processing/libraries/images/random-piano-1.png",
  "tagline": "Add music and sound effects.",
  "metaTitle": "LibGDX Sounds",
  "metaDescription": "Use music and sound effects in your game.",
  "metaImage": "/tutorials/processing/libraries/images/random-piano-2.png",
  "tags": ["tutorial","libgdx"],
  "date": "2018-08-01 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Movie Colors",
  "categories": ["gallery","movie-colors"],
  "url": "/gallery/movie-colors/index",
  "thumbnail": "/gallery/movie-colors/images/thumbnail-1.png",
  "tagline": "Every frame a line, every line a color.",
  "metaTitle": "Movie Colors",
  "metaDescription": "Every frame a line, every line a color.",
  "metaImage": "/gallery/movie-colors/images/thumbnail-2.png",
  "tags": [],
  "date": "2018-07-31 00:00:00 +0000",
  "printedPages": 14
 },





 {
  "title": "Comic Book Colors - Interactive Visualization",
  "categories": ["gallery","comic-book-colors"],
  "url": "/gallery/comic-book-colors/interactive",
  "thumbnail": "/gallery/comic-book-colors/images/thumbnail-1.png",
  "tagline": null,
  "metaTitle": "Comic Book Colors - Interactive Visualization",
  "metaDescription": "Color is very important to comic books- here's why!",
  "metaImage": "/gallery/comic-book-colors/images/thumbnail-2.png",
  "tags": [],
  "date": "2018-07-16 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Comic Book Colors",
  "categories": ["gallery","comic-book-colors"],
  "url": "/gallery/comic-book-colors/index",
  "thumbnail": "/gallery/comic-book-colors/images/thumbnail-1.png",
  "tagline": "Color is very important to comic books- here's why!",
  "metaTitle": "Comic Book Colors",
  "metaDescription": "Color is very important to comic books- here's why!",
  "metaImage": "/gallery/comic-book-colors/images/thumbnail-2.png",
  "tags": [],
  "date": "2018-07-16 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Comic Book Colors - Code",
  "categories": ["gallery","comic-book-colors"],
  "url": "/gallery/comic-book-colors/code",
  "thumbnail": "/gallery/comic-book-colors/images/thumbnail-1.png",
  "tagline": null,
  "metaTitle": "Comic Book Colors",
  "metaDescription": "Color is very important to comic books- here's why!",
  "metaImage": "/gallery/comic-book-colors/images/thumbnail-2.png",
  "tags": [],
  "date": "2018-07-16 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "Comic Book Colors - About",
  "categories": ["gallery","comic-book-colors"],
  "url": "/gallery/comic-book-colors/about",
  "thumbnail": "/gallery/comic-book-colors/images/thumbnail-1.png",
  "tagline": null,
  "metaTitle": "Comic Book Colors",
  "metaDescription": "Color is very important to comic books- here's why!",
  "metaImage": "/gallery/comic-book-colors/images/thumbnail-1.png",
  "tags": [],
  "date": "2018-07-16 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Fireworks",
  "categories": ["tutorials","p5js","creating-classes"],
  "url": "/tutorials/p5js/creating-classes/fireworks",
  "thumbnail": "/tutorials/p5js/creating-classes/images/fireworks-2.png",
  "tagline": "Ooh! Aah!",
  "metaTitle": "P5.js Fireworks Example",
  "metaDescription": "Use P5.js to put on a fieworks show!",
  "metaImage": "/tutorials/p5js/creating-classes/images/fireworks-1.png",
  "tags": ["example","p5.js","javascript","es6"],
  "date": "2018-07-04 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Images",
  "categories": ["tutorials","libgdx"],
  "url": "/tutorials/libgdx/images",
  "thumbnail": "/tutorials/libgdx/images/images-3.png",
  "tagline": "Use images in your game.",
  "metaTitle": "LibGDX Images",
  "metaDescription": "Use images in your game.",
  "metaImage": "/tutorials/android/images/images-4.png",
  "tags": ["tutorial","libgdx"],
  "date": "2018-06-18 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Graphics",
  "categories": ["tutorials","libgdx"],
  "url": "/tutorials/libgdx/graphics",
  "thumbnail": "/tutorials/libgdx/images/graphics-4.png",
  "tagline": "Use OpenGL to draw your game.",
  "metaTitle": "LibGDX Graphics",
  "metaDescription": "Use OpenGL to draw your game.",
  "metaImage": "/tutorials/android/images/graphics-5.png",
  "tags": ["tutorial","libgdx"],
  "date": "2018-06-15 00:00:00 +0000",
  "printedPages": 14
 },





 {
  "title": "Simple Reference",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/simple-reference",
  "thumbnail": "/tutorials/processing/images/hour-of-code-11.png",
  "tagline": "Just the drawing functions.",
  "metaTitle": "Simple Processing Reference",
  "metaDescription": "This simplified reference contains just the drawing functions.",
  "metaImage": "/tutorials/processing/images/hour-of-code-12.png",
  "tags": ["tutorial","processing"],
  "date": "2018-06-02 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Multiple Game Screens",
  "categories": ["tutorials","libgdx"],
  "url": "/tutorials/libgdx/game-screens",
  "thumbnail": "/tutorials/libgdx/images/game-screens-3.png",
  "tagline": "Show different screens in your game.",
  "metaTitle": "LibGDX Multiple Game Screens",
  "metaDescription": "Show different screens in your game.",
  "metaImage": "/tutorials/android/images/game-screens-4.png",
  "tags": ["tutorial","libgdx"],
  "date": "2018-05-27 00:00:00 +0000",
  "printedPages": 10
 },





 {
  "title": "User Input",
  "categories": ["tutorials","libgdx"],
  "url": "/tutorials/libgdx/input",
  "thumbnail": "/tutorials/libgdx/images/input-1.png",
  "tagline": "React to user input.",
  "metaTitle": "LibGDX User Input",
  "metaDescription": "Make an interactive libGDX game.",
  "metaImage": "/tutorials/android/images/input-2.png",
  "tags": ["tutorial","libgdx","input"],
  "date": "2018-05-26 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Hello World",
  "categories": ["tutorials","libgdx"],
  "url": "/tutorials/libgdx/hello-world",
  "thumbnail": "/tutorials/libgdx/images/hello-world-3.png",
  "tagline": "Create your first libGDX game.",
  "metaTitle": "LibGDX Hello World",
  "metaDescription": "Create your first libGDX game.",
  "metaImage": "/tutorials/android/images/hello-world-4.png",
  "tags": ["tutorial","libgdx"],
  "date": "2018-05-21 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Build a Social App",
  "categories": ["tutorials","how-to"],
  "url": "/tutorials/how-to/social-app",
  "thumbnail": "/tutorials/processing/images/hour-of-code-11.png",
  "tagline": "How to build a social networking app.",
  "metaTitle": "How to Build a Social Networking App",
  "metaDescription": "I have an idea for an app! How do I get started?",
  "metaImage": "/tutorials/processing/images/hour-of-code-12.png",
  "tags": ["tutorial","how-to"],
  "date": "2018-04-23 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "Setup",
  "categories": ["tutorials","libgdx"],
  "url": "/tutorials/libgdx/setup",
  "thumbnail": "/tutorials/libgdx/images/libgdx-1.png",
  "tagline": "Prepare your workspace.",
  "metaTitle": "LibGDX Setup",
  "metaDescription": "Prepare your libGDX workspace.",
  "metaImage": "/tutorials/android/images/libgdx-2.png",
  "tags": ["tutorial","libgdx"],
  "date": "2018-03-25 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Custom Drawing",
  "categories": ["tutorials","android"],
  "url": "/tutorials/android/custom-drawing",
  "thumbnail": "/tutorials/android/images/custom-drawing-4.png",
  "tagline": "Create your own View.",
  "metaTitle": "Custom Drawing in Android",
  "metaDescription": "Create your own View.",
  "metaImage": "/tutorials/android/images/drawing-drawing-5.png",
  "tags": ["tutorial","android"],
  "date": "2018-03-17 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Storage",
  "categories": ["tutorials","android"],
  "url": "/tutorials/android/storage",
  "thumbnail": "/tutorials/android/images/storage-2.png",
  "tagline": "Save your app's data.",
  "metaTitle": "Android Storage",
  "metaDescription": "Save your app's data.",
  "metaImage": "/tutorials/android/images/storage-3.png",
  "tags": ["tutorial","android"],
  "date": "2018-03-10 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "Activities",
  "categories": ["tutorials","android"],
  "url": "/tutorials/android/activities",
  "thumbnail": "/tutorials/android/images/activities-1.png",
  "tagline": "Explore the Android lifecycle.",
  "metaTitle": "Android Activities",
  "metaDescription": "Explore the Android lifecycle.",
  "metaImage": "/tutorials/android/images/layouts-5.png",
  "tags": ["tutorial","android"],
  "date": "2018-01-15 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Layouts",
  "categories": ["tutorials","android"],
  "url": "/tutorials/android/layouts",
  "thumbnail": "/tutorials/android/images/layouts-5.png",
  "tagline": "Define your app's user interface.",
  "metaTitle": "Android Layouts",
  "metaDescription": "Define your app's user interface.",
  "metaImage": "/tutorials/android/images/layouts-5.png",
  "tags": ["tutorial","android"],
  "date": "2018-01-11 00:00:00 +0000",
  "printedPages": 11
 },





 {
  "title": "Anatomy of an Android App",
  "categories": ["tutorials","android"],
  "url": "/tutorials/android/anatomy",
  "thumbnail": "/tutorials/android/images/hello-world-8.png",
  "tagline": "Activities and Layouts and Views, oh my!",
  "metaTitle": "Anatomy of an Android App",
  "metaDescription": "Activities and Layouts and Views, oh my!",
  "metaImage": "/tutorials/android/images/hello-world-9.png",
  "tags": ["tutorial","android"],
  "date": "2018-01-07 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Hello World",
  "categories": ["tutorials","android"],
  "url": "/tutorials/android/hello-world",
  "thumbnail": "/tutorials/android/images/hello-world-10.png",
  "tagline": "Create your first Android app.",
  "metaTitle": "Hello Android World",
  "metaDescription": "Create your first Android app.",
  "metaImage": "/tutorials/android/images/hello-world-9.png",
  "tags": ["tutorial","android","hello-world"],
  "date": "2018-01-06 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Happy New Year",
  "categories": ["blog"],
  "url": "/blog/happy-new-year-2018",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Happy New Year",
  "metaDescription": "Happy New Year!",
  "metaImage": "/blog/images/happy-new-year-2018/total-posts.png",
  "tags": ["new-year"],
  "date": "2018-01-01 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Libraries",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/libraries",
  "thumbnail": "/tutorials/p5js/images/libraries-2.png",
  "tagline": "Use libraries to expand what p5.js can do.",
  "metaTitle": "How to Use p5.js Libraries",
  "metaDescription": "Mix other JavaScript libraries with p5.js",
  "metaImage": "/tutorials/p5js/images/libraries-3.png",
  "tags": ["tutorial","p5.js","javascript","libraries"],
  "date": "2017-12-15 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "One Roomba",
  "categories": ["gallery"],
  "url": "/gallery/one-roomba",
  "thumbnail": "/gallery/images/one-roomba-1.png",
  "tagline": "Ludum Dare 37",
  "metaTitle": "One Roomba",
  "metaDescription": "Play One Roomba",
  "metaImage": "/gallery/images/one-roomba-2.png",
  "tags": [],
  "date": "2017-11-04 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Review",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/review",
  "thumbnail": "/tutorials/p5js/images/review-1.png",
  "tagline": "Review Processing, HTML, and JavaScript topics.",
  "metaTitle": "P5.js Prerequisite Review",
  "metaDescription": "Review Processing, HTML, and JavaScript topics in a P5.js context.",
  "metaImage": "/tutorials/p5js/images/review-2.png",
  "tags": ["tutorial","p5.js","javascript","review"],
  "date": "2017-10-14 00:00:00 +0000",
  "printedPages": 12
 },





 {
  "title": "Hello World",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/hello-world",
  "thumbnail": "/tutorials/p5js/images/hello-world-2.png",
  "tagline": "Say hello to P5.js!",
  "metaTitle": "P5.js Hello World",
  "metaDescription": "Say hello world to P5.js!",
  "metaImage": "/tutorials/p5js/images/hello-world-3.png",
  "tags": ["tutorial","p5.js","javascript","hello-world"],
  "date": "2017-09-23 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Editors",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/editors",
  "thumbnail": "/tutorials/p5js/images/editors-9.png",
  "tagline": "Which p5.js editor should I use?",
  "metaTitle": "p5.js Editors",
  "metaDescription": "Which p5.js editor should I use?",
  "metaImage": "/tutorials/p5js/images/editors-10.png",
  "tags": ["tutorial","p5.js","javascript"],
  "date": "2017-09-20 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Server Tutorials",
  "categories": ["blog"],
  "url": "/blog/server-tutorials",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Server Tutorials",
  "metaDescription": "Happy Coding now has server tutorials!",
  "metaImage": "/tutorials/java-server/images/servlets-7.png",
  "tags": ["site-update"],
  "date": "2017-09-19 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Which Processing should I use?",
  "categories": ["tutorials","p5js"],
  "url": "/tutorials/p5js/which-processing",
  "thumbnail": "/tutorials/p5js/images/which-processing-1.png",
  "tagline": "Should I use p5.js or Processing?",
  "metaTitle": "Which Processing should I use?",
  "metaDescription": "Should I use p5.js or Processing? What's the difference between Processing, Processing.js, and p5.js?",
  "metaImage": "/tutorials/p5js/images/which-processing-2.png",
  "tags": ["tutorial","p5.js","processing","processing.js","javascript"],
  "date": "2017-09-16 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Secure Password Storage",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/secure-password-storage",
  "thumbnail": "/tutorials/java-server/images/secure-password-storage-1.png",
  "tagline": "How to (not) store passwords.",
  "metaTitle": "Secure Password Storage",
  "metaDescription": "How to (not) store passwords.",
  "metaImage": "/tutorials/java-server/images/secure-password-storage-2.png",
  "tags": ["tutorial","java","server","post","secure-password-storage"],
  "date": "2017-09-07 00:00:00 +0000",
  "printedPages": 20
 },





 {
  "title": "Social Feed Website Part 5: Thread Safety",
  "categories": ["tutorials","java-server","thread-safety"],
  "url": "/tutorials/java-server/thread-safety/social-feed-website-part-5-thread-safety",
  "thumbnail": "/tutorials/java-server/images/social-feed-website-part-5-thread-safety-7.png",
  "tagline": "Let multiple users post messages safely.",
  "metaTitle": "Social Feed Website Part 5: Thread Safety",
  "metaDescription": "Let multiple users post messages safely.",
  "metaImage": "/tutorials/java-server/images/social-feed-website-part-5-thread-safety-8.png",
  "tags": ["example","java","server","jsp","post","sessions","thread-safety"],
  "date": "2017-08-27 00:00:00 +0000",
  "printedPages": 10
 },





 {
  "title": "Social Feed Website Part 4: Sessions",
  "categories": ["tutorials","java-server","sessions"],
  "url": "/tutorials/java-server/sessions/social-feed-website-part-4-sessions",
  "thumbnail": "/tutorials/java-server/images/social-feed-website-part-5-sessions-7.png",
  "tagline": "Let users login and create their own posts.",
  "metaTitle": "Social Feed Website Part 4: Sessions",
  "metaDescription": "Let users login and create their own posts.",
  "metaImage": "/tutorials/java-server/images/social-feed-website-part-5-sessions-8.png",
  "tags": ["example","java","server","jsp","post","sessions"],
  "date": "2017-08-26 00:00:00 +0000",
  "printedPages": 11
 },





 {
  "title": "Sanitizing User Input",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/sanitizing-user-input",
  "thumbnail": "/tutorials/java-server/images/sanitizing-user-input-7.png",
  "tagline": "Safely handle user input.",
  "metaTitle": "Sanitizing User Input",
  "metaDescription": "Learn how to safely handle user input.",
  "metaImage": "/tutorials/java-server/images/sanitizing-user-input-8.png",
  "tags": ["tutorial","java","server","post","sanitizing-user-input"],
  "date": "2017-08-26 00:00:00 +0000",
  "printedPages": 15
 },





 {
  "title": "Social Feed Website Part 3: Post Requests",
  "categories": ["tutorials","java-server","post"],
  "url": "/tutorials/java-server/post/social-feed-website-part-3-post-requests",
  "thumbnail": "/tutorials/java-server/images/social-feed-website-part-3-post-requests-3.png",
  "tagline": "Let users create their own posts.",
  "metaTitle": "Social Feed Website Part 3: Post Requests",
  "metaDescription": "Let users create their own posts.",
  "metaImage": "/tutorials/java-server/images/social-feed-website-part-3-post-requests-4.png",
  "tags": ["example","java","server","jsp","post"],
  "date": "2017-08-23 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Social Feed Website Part 1: Servlets",
  "categories": ["tutorials","java-server","servlets"],
  "url": "/tutorials/java-server/servlets/social-feed-website-part-1-servlets",
  "thumbnail": "/tutorials/java-server/images/social-feed-website-part-1-servlets-3.png",
  "tagline": "Use servlets to show user posts.",
  "metaTitle": "Social Feed Website Part 1: Servlets",
  "metaDescription": "Use servlets to show user posts.",
  "metaImage": "/tutorials/java-server/images/social-feed-website-part-1-servlets-4.png",
  "tags": ["example","java","server","servlets"],
  "date": "2017-08-16 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Social Feed Website Part 2: JSP",
  "categories": ["tutorials","java-server","jsp"],
  "url": "/tutorials/java-server/jsp/social-feed-website-part-2-jsp",
  "thumbnail": "/tutorials/java-server/images/social-feed-website-part-2-jsp-3.png",
  "tagline": "Use JSP to render user posts.",
  "metaTitle": "Social Feed Website Part 2: JSP",
  "metaDescription": "Use JSP to render user posts.",
  "metaImage": "/tutorials/java-server/images/social-feed-website-part-2-jsp-4.png",
  "tags": ["example","java","server","jsp"],
  "date": "2017-08-16 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Struts",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/struts",
  "thumbnail": "/tutorials/java-server/images/struts-2.png",
  "tagline": "Use the Struts framework to make advanced web apps.",
  "metaTitle": "Struts",
  "metaDescription": "Learn how to use the Struts framework to make advanced web apps.",
  "metaImage": "/tutorials/java-server/images/struts-3.png",
  "tags": ["tutorial","java","server","struts"],
  "date": "2017-08-05 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Uploading Files",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/uploading-files",
  "thumbnail": "/tutorials/java-server/images/uploading-files-1.png",
  "tagline": "Let users upload images and other files.",
  "metaTitle": "Uploading Files",
  "metaDescription": "Learn how to handle file uploads in your server code.",
  "metaImage": "/tutorials/java-server/images/uploading-files-2.png",
  "tags": ["tutorial","java","server","file-upload"],
  "date": "2017-07-21 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "Creating a REST API",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/rest-api",
  "thumbnail": "/tutorials/java-server/images/rest-api-3.png",
  "tagline": "Use REST to support various clients.",
  "metaTitle": "Creating a REST API",
  "metaDescription": "Learn how to use REST to support various clients.",
  "metaImage": "/tutorials/java-server/images/rest-api-4.png",
  "tags": ["tutorial","java","server","rest","ajax","json"],
  "date": "2017-07-08 00:00:00 +0000",
  "printedPages": 25
 },





 {
  "title": "Databases",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/databases",
  "thumbnail": "/tutorials/java-server/images/databases-2.png",
  "tagline": "Store your data in a database.",
  "metaTitle": "Database Tutorial",
  "metaDescription": "Learn how to store your data in a database.",
  "metaImage": "/tutorials/java-server/images/databases-3.png",
  "tags": ["tutorial","java","server","database"],
  "date": "2017-06-29 00:00:00 +0000",
  "printedPages": 28
 },





 {
  "title": "Libraries",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/libraries",
  "thumbnail": "/tutorials/java-server/images/libraries-5.png",
  "tagline": "Use libraries in your server code.",
  "metaTitle": "Sever Libraries",
  "metaDescription": "Learn how to use libaries in your server code.",
  "metaImage": "/tutorials/java-server/images/libraries-6.png",
  "tags": ["tutorial","java","server","libraries"],
  "date": "2017-06-26 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Hosting on Google App Engine",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/hosting-google-app-engine",
  "thumbnail": "/tutorials/java-server/images/hosting-google-app-engine-5.png",
  "tagline": "Host your server on Google App Engine so other people can use your web app.",
  "metaTitle": "Hosting on Google App Engine",
  "metaDescription": "Learn how to host your server on Google App Engine so other people can use your web app.",
  "metaImage": "/tutorials/java-server/images/hosting-google-app-engine-6.png",
  "tags": ["tutorial","java","server","hosting","google-app-engine"],
  "date": "2017-06-24 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "Hosting on AWS",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/hosting-aws",
  "thumbnail": "/tutorials/java-server/images/hosting-aws-9.png",
  "tagline": "Host your server on AWS so other people can use your web app.",
  "metaTitle": "Hosting on AWS",
  "metaDescription": "Learn how to host your server on AWS so other people can use your web app.",
  "metaImage": "/tutorials/java-server/images/hosting-aws-10.png",
  "tags": ["tutorial","java","server","hosting","aws"],
  "date": "2017-06-18 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "Thread Safety",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/thread-safety",
  "thumbnail": "/tutorials/java-server/images/thread-safety-7.png",
  "tagline": "Safely handle multiple requests at the same time.",
  "metaTitle": "Thread Safety",
  "metaDescription": "Learn how to safely handle multiple requests at the same time.",
  "metaImage": "/tutorials/java-server/images/thread-safety-8.png",
  "tags": ["tutorial","java","server","threading"],
  "date": "2017-06-15 00:00:00 +0000",
  "printedPages": 15
 },





 {
  "title": "Sessions",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/sessions",
  "thumbnail": "/tutorials/java-server/images/sessions-7.png",
  "tagline": "Store user data between requests.",
  "metaTitle": "Sessions",
  "metaDescription": "Learn how to store data between requests for a particular user.",
  "metaImage": "/tutorials/java-server/images/sessions-8.png",
  "tags": ["tutorial","java","server","session"],
  "date": "2017-06-11 00:00:00 +0000",
  "printedPages": 16
 },





 {
  "title": "Post Requests",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/post",
  "thumbnail": "/tutorials/java-server/images/post-9.png",
  "tagline": "Send data to your server.",
  "metaTitle": "Post Requests",
  "metaDescription": "Learn how to send data to your server.",
  "metaImage": "/tutorials/java-server/images/post-10.png",
  "tags": ["tutorial","java","server","post"],
  "date": "2017-06-10 00:00:00 +0000",
  "printedPages": 13
 },





 {
  "title": "Eclipse EE",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/eclipse-ee",
  "thumbnail": "/tutorials/java/images/eclipse-15.png",
  "tagline": "Use Eclipse to write server code.",
  "metaTitle": "Eclipse EE",
  "metaDescription": "Learn how to use Eclipse to write server code.",
  "metaImage": "/tutorials/java/images/eclipse-15.png",
  "tags": ["tutorial","java","server","eclipse"],
  "date": "2017-06-04 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Processing Showcase",
  "categories": ["tutorials","java","processing-in-java"],
  "url": "/tutorials/java/processing-in-java/processing-showcase",
  "thumbnail": "/tutorials/processing/images/processing-icon-small-1.png",
  "tagline": "Create a Java program that cycles through Processing sketches.",
  "metaTitle": "Processing Showcase",
  "metaDescription": "Create a Java program that cycles through Processing sketches.",
  "metaImage": "/tutorials/processing/images/processing-icon-large-1.png",
  "tags": ["example","java","processing","processing-in-java"],
  "date": "2017-05-30 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "JSP",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/jsp",
  "thumbnail": "/tutorials/java-server/images/jsp-7.png",
  "tagline": "Jakarta Server Pages",
  "metaTitle": "JSP",
  "metaDescription": "Learn how to use JSP in your web app.",
  "metaImage": "/tutorials/java-server/images/jsp-8.png",
  "tags": ["tutorial","java","server","jsp"],
  "date": "2017-05-29 00:00:00 +0000",
  "printedPages": 16
 },





 {
  "title": "Servlets",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/servlets",
  "thumbnail": "/tutorials/java-server/images/servlets-6.png",
  "tagline": "Create a dynamic web app.",
  "metaTitle": "Servlets",
  "metaDescription": "Create a dynamic web app.",
  "metaImage": "/tutorials/java-server/images/servlets-7.png",
  "tags": ["tutorial","java"],
  "date": "2017-05-28 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "New Nav Font",
  "categories": ["blog"],
  "url": "/blog/new-nav-font",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "New Nav Font",
  "metaDescription": "The trials and tribulations of aligning text.",
  "metaImage": "/blog/images/new-nav-font/new-nav-font-3.png",
  "tags": ["site-update"],
  "date": "2017-05-28 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Jetty Setup",
  "categories": ["tutorials","java-server"],
  "url": "/tutorials/java-server/jetty-setup",
  "thumbnail": "/tutorials/java-server/images/jetty-setup-4.png",
  "tagline": "Run your own Jetty server.",
  "metaTitle": "Jetty Setup",
  "metaDescription": "Run your own Jetty server.",
  "metaImage": "/tutorials/java-server/images/jetty-setup-5.png",
  "tags": ["tutorial","java","server","jetty"],
  "date": "2017-05-27 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Swing Control Window",
  "categories": ["tutorials","java","processing-in-java"],
  "url": "/tutorials/java/processing-in-java/swing-control-window",
  "thumbnail": "/tutorials/java/images/swing-control-window-4.png",
  "tagline": "Create a Processing sketch with a Swing control window.",
  "metaTitle": "Swing Control Window",
  "metaDescription": "Create a Processing sketch with a Swing control window.",
  "metaImage": "/tutorials/java/images/swing-control-window-5.png",
  "tags": ["example","java","processing","processing-in-java"],
  "date": "2017-05-21 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Java Tutorials",
  "categories": ["blog"],
  "url": "/blog/java-tutorials",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Java Tutorials",
  "metaDescription": "Happy Coding now has Java tutorials!",
  "metaImage": "/tutorials/java/images/setup-6.png",
  "tags": ["site-update"],
  "date": "2017-05-13 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Free Paycheck Calculator",
  "categories": ["tutorials","java","hello-world"],
  "url": "/tutorials/java/hello-world/free-paycheck-calculator",
  "thumbnail": "/tutorials/java/images/free-paycheck-calculator-1.png",
  "tagline": "Find months that have three paychecks in them.",
  "metaTitle": "Free Paycheck Calculator",
  "metaDescription": "This Java program finds months that have free paychecks in them.",
  "metaImage": "/tutorials/java/images/free-paycheck-calculator-2.png",
  "tags": ["example","java","hello-world","util"],
  "date": "2017-05-06 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Processing in Java",
  "categories": ["tutorials","java"],
  "url": "/tutorials/java/processing-in-java",
  "thumbnail": "/tutorials/java/images/processing-in-java-4.png",
  "tagline": "Use Processing as a Java library.",
  "metaTitle": "Processing in Java",
  "metaDescription": "Learn how to use Processing as a Java library.",
  "metaImage": "/tutorials/java/images/processing-in-java-5.png",
  "tags": ["tutorial","java","processing"],
  "date": "2017-05-06 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "Exporting Jar Files",
  "categories": ["tutorials","java"],
  "url": "/tutorials/java/exporting-jars",
  "thumbnail": "/tutorials/java/images/exporting-jars-5.png",
  "tagline": "Package your code so other people can run it.",
  "metaTitle": "Exporting Jar Files",
  "metaDescription": "Learn how to package your Java program so other people can run it.",
  "metaImage": "/tutorials/java/images/exporting-jars-6.png",
  "tags": ["tutorial","java","jar"],
  "date": "2017-04-23 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "Eclipse",
  "categories": ["tutorials","java"],
  "url": "/tutorials/java/eclipse",
  "thumbnail": "/tutorials/java/images/eclipse-15.png",
  "tagline": "Upgrade your code editor.",
  "metaTitle": "Eclipse",
  "metaDescription": "Learn how to use the Eclipse IDE.",
  "metaImage": "/tutorials/java/images/eclipse-15.png",
  "tags": ["tutorial","java","eclipse"],
  "date": "2017-04-22 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "Collision Detection",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/collision-detection",
  "thumbnail": "/tutorials/processing/images/collision-detection-16.png",
  "tagline": "Trigger an action when objects overlap.",
  "metaTitle": "Processing Collision Detection",
  "metaDescription": "Learn how to trigger an action when objects overlap in Processing!",
  "metaImage": "/tutorials/processing/images/collision-detection-17.png",
  "tags": ["tutorial","processing","advanced","collision-detection"],
  "date": "2017-04-15 00:00:00 +0000",
  "printedPages": 22
 },





 {
  "title": "Libraries",
  "categories": ["tutorials","java"],
  "url": "/tutorials/java/libraries",
  "thumbnail": "/tutorials/java/images/libraries-3.png",
  "tagline": "The power of other people's code.",
  "metaTitle": "Java Libraries",
  "metaDescription": "Learn how to use Java libraries.",
  "metaImage": "/tutorials/java/images/libraries-3.png",
  "tags": ["tutorial","java","libraries"],
  "date": "2017-04-10 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Higher Lower",
  "categories": ["tutorials","java","swing"],
  "url": "/tutorials/java/swing/higher-lower-computer-gui",
  "thumbnail": "/tutorials/java/images/higher-lower-random-computer-player-2.png",
  "tagline": "Guessing game gui",
  "metaTitle": "Circle Button",
  "metaDescription": "Create a custom class that shows a circle button.",
  "metaImage": "/tutorials/java/images/higher-lower-random-computer-player-3.png",
  "tags": ["example","java","swing"],
  "date": "2017-04-09 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Circle Button",
  "categories": ["tutorials","java","swing"],
  "url": "/tutorials/java/swing/circle-button",
  "thumbnail": "/tutorials/java/images/circle-button-1.png",
  "tagline": "Rectangle buttons are so last year.",
  "metaTitle": "Circle Button",
  "metaDescription": "Create a custom class that shows a circle button.",
  "metaImage": "examples/java/images/circle-button-2.png",
  "tags": ["example","java","swing"],
  "date": "2017-04-08 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Swing",
  "categories": ["tutorials","java"],
  "url": "/tutorials/java/swing",
  "thumbnail": "/tutorials/java/images/swing-17.png",
  "tagline": "Create a graphical user interface.",
  "metaTitle": "Java Swing",
  "metaDescription": "Learn how to create a graphical user interface with Java.",
  "metaImage": "/tutorials/java/images/swing-18.png",
  "tags": ["tutorial","java"],
  "date": "2017-03-27 00:00:00 +0000",
  "printedPages": 28
 },





 {
  "title": "Inheritance",
  "categories": ["tutorials","java"],
  "url": "/tutorials/java/inheritance",
  "thumbnail": "/tutorials/java/images/inheritance-2.png",
  "tagline": "Take OOP to the next level.",
  "metaTitle": "Java Inheritance",
  "metaDescription": "Take OOP to the next level.",
  "metaImage": "/tutorials/java/images/inheritance-3.png",
  "tags": ["tutorial","java"],
  "date": "2017-03-14 00:00:00 +0000",
  "printedPages": 25
 },





 {
  "title": "Higher Lower (Random Computer Player)",
  "categories": ["tutorials","java","hello-world"],
  "url": "/tutorials/java/hello-world/higher-lower-random-computer-player",
  "thumbnail": "/tutorials/java/images/higher-lower-random-computer-player-2.png",
  "tagline": "Think of a number and the computer will guess what it is.",
  "metaTitle": "Higher Lower (Random Computer Player)",
  "metaDescription": "Think of a number and the computer will guess what it is.",
  "metaImage": "/tutorials/java/images/higher-lower-random-computer-player-3.png",
  "tags": ["example","java","hello-world","higher-lower"],
  "date": "2017-03-12 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Higher Lower (Human Player)",
  "categories": ["tutorials","java","hello-world"],
  "url": "/tutorials/java/hello-world/higher-lower-human-player",
  "thumbnail": "/tutorials/java/images/higher-lower-human-player-2.png",
  "tagline": "Try to guess what number the computer is thinking.",
  "metaTitle": "Higher Lower (Human Player)",
  "metaDescription": "Try to guess what number the computer is thinking.",
  "metaImage": "/tutorials/java/images/higher-lower-human-player-3.png",
  "tags": ["example","java","hello-world","higher-lower"],
  "date": "2017-03-09 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Debugging",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/debugging",
  "thumbnail": "/tutorials/processing/images/debugging-6.png",
  "tagline": "How to fix errors in your code.",
  "metaTitle": "Debugging Processing",
  "metaDescription": "Learn how to fix errors in your code.",
  "metaImage": "/tutorials/processing/images/debugging-7.png",
  "tags": ["tutorial","processing","debugging"],
  "date": "2017-03-04 00:00:00 +0000",
  "printedPages": 10
 },





 {
  "title": "Errors",
  "categories": ["tutorials","java"],
  "url": "/tutorials/java/errors",
  "thumbnail": "/tutorials/java/images/setup-7.png",
  "tagline": "Catch exceptions and debug errors in your code.",
  "metaTitle": "Handling Java Errors",
  "metaDescription": "Catch exceptions and debug errors in your code.",
  "metaImage": "/tutorials/java/images/setup-6.png",
  "tags": ["tutorial","java"],
  "date": "2017-02-26 00:00:00 +0000",
  "printedPages": 18
 },





 {
  "title": "Creating Classes",
  "categories": ["tutorials","java"],
  "url": "/tutorials/java/creating-classes",
  "thumbnail": "/tutorials/java/images/creating-classes-2.png",
  "tagline": "Learn more about creating classes.",
  "metaTitle": "Creating Java Classes",
  "metaDescription": "Learn more about creating Java classes.",
  "metaImage": "/tutorials/java/images/creating-classes-3.png",
  "tags": ["tutorial","java"],
  "date": "2017-02-25 00:00:00 +0000",
  "printedPages": 18
 },





 {
  "title": "Hello World",
  "categories": ["tutorials","java"],
  "url": "/tutorials/java/hello-world",
  "thumbnail": "/tutorials/java/images/hello-world-3.png",
  "tagline": "Write, compile, and run your first Java application.",
  "metaTitle": "Hello World",
  "metaDescription": "Write, compile, and run your first Java application.",
  "metaImage": "/tutorials/java/images/hello-world-4.png",
  "tags": ["tutorial","java"],
  "date": "2017-02-22 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "Java Setup",
  "categories": ["tutorials","java"],
  "url": "/tutorials/java/setup",
  "thumbnail": "/tutorials/java/images/setup-7.png",
  "tagline": "Install and run Java.",
  "metaTitle": "Java Setup",
  "metaDescription": "Install and run Java.",
  "metaImage": "/tutorials/java/images/setup-6.png",
  "tags": ["tutorial","java"],
  "date": "2017-02-21 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Teaching Resources",
  "categories": ["blog"],
  "url": "/blog/teaching-resources",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Teaching",
  "metaDescription": "Happy Coding now has teaching resources!",
  "metaImage": "/tutorials/how-to/images/circles-2.png",
  "tags": ["site-update"],
  "date": "2017-02-20 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Links",
  "categories": ["gallery"],
  "url": "/gallery/links",
  "thumbnail": "/tutorials/processing/images/hour-of-code-11.png",
  "tagline": "Links to cool projects.",
  "metaTitle": "Links",
  "metaDescription": "Links to cool projects.",
  "metaImage": "/tutorials/processing/images/hour-of-code-12.png",
  "tags": [],
  "date": "2017-02-19 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Intro to Coding with p5.js and Processing",
  "categories": ["teaching","guides"],
  "url": "/teaching/guides/semester",
  "thumbnail": "/teaching/guides/images/semester-1.png",
  "tagline": "Some ideas for teaching an intro to coding course.",
  "metaTitle": "Intro to Coding with p5.js and Processing",
  "metaDescription": "Some ideas for teaching an intro to coding course.",
  "metaImage": "/teaching/guides/images/semester-1.png",
  "tags": ["teaching"],
  "date": "2017-02-18 00:00:00 +0000",
  "printedPages": 17
 },





 {
  "title": "Multi-Year Curriculum",
  "categories": ["teaching","guides"],
  "url": "/teaching/guides/curriculum",
  "thumbnail": "/teaching/guides/images/curriculum-3.png",
  "tagline": "Plan a multi-year curriculum with Happy Coding.",
  "metaTitle": "Multi-Year Curriculum",
  "metaDescription": "Plan a multi-year curriculum with Happy Coding.",
  "metaImage": "/teaching/guides/images/curriculum-3.png",
  "tags": ["teaching"],
  "date": "2017-02-18 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "How to Program",
  "categories": ["tutorials","how-to"],
  "url": "/tutorials/how-to/program",
  "thumbnail": "/tutorials/how-to/images/program-1.png",
  "tagline": "Break problems down into smaller steps.",
  "metaTitle": "How to Program",
  "metaDescription": "Breaking problems down into smaller steps.",
  "metaImage": "/tutorials/how-to/images/program-2.png",
  "tags": ["tutorial","how-to"],
  "date": "2017-02-15 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Scaling Heart",
  "categories": ["tutorials","processing","using-variables"],
  "url": "/tutorials/processing/using-variables/scaling-heart",
  "thumbnail": "/tutorials/processing/using-variables/images/scaling-heart-1.png",
  "tagline": "Scale a heart. ❤",
  "metaTitle": "Valentine's Day Heart",
  "metaDescription": "Use Processing to draw a heart! ❤",
  "metaImage": "/tutorials/processing/using-variables/images/scaling-heart-2.png",
  "tags": ["example","processing","❤"],
  "date": "2017-02-14 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Random Hearts",
  "categories": ["tutorials","processing","creating-functions"],
  "url": "/tutorials/processing/creating-functions/random-hearts",
  "thumbnail": "/tutorials/processing/creating-functions/images/random-hearts-1.png",
  "tagline": "Draw random hearts. ❤",
  "metaTitle": "Random Hearts",
  "metaDescription": "Use Processing to draw random hearts! ❤",
  "metaImage": "/tutorials/processing/creating-functions/images/random-hearts-2.png",
  "tags": ["example","processing","❤"],
  "date": "2017-02-14 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Heart",
  "categories": ["tutorials","processing","calling-functions"],
  "url": "/tutorials/processing/calling-functions/heart",
  "thumbnail": "/tutorials/processing/using-variables/images/scaling-heart-1.png",
  "tagline": "Draw a heart. ❤",
  "metaTitle": "Valentine's Day Heart",
  "metaDescription": "Use Processing to draw a heart! ❤",
  "metaImage": "/tutorials/processing/using-variables/images/scaling-heart-2.png",
  "tags": ["example","processing","❤"],
  "date": "2017-02-14 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "One-Day Workshop",
  "categories": ["teaching","guides"],
  "url": "/teaching/guides/day",
  "thumbnail": "/teaching/guides/images/day-1.png",
  "tagline": "Teach a one-day workshop.",
  "metaTitle": "Teaching a One-Day Coding Workshop",
  "metaDescription": "Teaching a One-Day Coding Workshop",
  "metaImage": "/teaching/guides/images/day-1.png",
  "tags": ["teaching"],
  "date": "2017-02-13 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Simple Weather Map",
  "categories": ["tutorials","javascript","libraries"],
  "url": "/tutorials/javascript/libraries/simple-weather-map",
  "thumbnail": "/tutorials/javascript/images/simple-weather-map-1.png",
  "tagline": "View the current weather on a map.",
  "metaTitle": "Simple Weather Map",
  "metaDescription": "Just a simple weather map. No ads, no clickbait, just a map.",
  "metaImage": "/tutorials/javascript/images/simple-weather-map-2.png",
  "tags": ["example","javascript","libraries","maps"],
  "date": "2017-02-11 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Personal Webpage (default Bootstrap styles)",
  "categories": ["tutorials","javascript","bootstrap"],
  "url": "/tutorials/javascript/bootstrap/personal-page-bootstrap-default",
  "thumbnail": "/tutorials/javascript/images/personal-page-bootstrap-default-1.png",
  "tagline": "Use Bootstrap to style your personal webpage.",
  "metaTitle": "Personal Webpage (default Bootstrap styles)",
  "metaDescription": "Use Bootstrap to style your personal webpage.",
  "metaImage": "/tutorials/javascript/images/personal-page-bootstrap-default-2.png",
  "tags": ["example","javascript","html","css","bootstrap"],
  "date": "2017-02-11 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Personal Webpage (Cyborg Bootstrap theme)",
  "categories": ["tutorials","javascript","bootstrap"],
  "url": "/tutorials/javascript/bootstrap/personal-page-bootstrap-cyborg",
  "thumbnail": "/tutorials/javascript/images/personal-page-bootstrap-cyborg-1.png",
  "tagline": "Use Bootstrap themes to style your personal webpage.",
  "metaTitle": "Personal Webpage (Cyborg Bootstrap theme)",
  "metaDescription": "Use Bootstrap themes to style your personal webpage.",
  "metaImage": "/tutorials/javascript/images/personal-page-bootstrap-cyborg-2.png",
  "tags": ["example","javascript","html","css","bootstrap"],
  "date": "2017-02-11 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Personal Webpage (light styles)",
  "categories": ["tutorials","html","css"],
  "url": "/tutorials/html/css/personal-page-light-styles",
  "thumbnail": "/tutorials/html/images/personal-page-light-styles-1.png",
  "tagline": "Add styles to your personal webpage.",
  "metaTitle": "Personal Webpage (light styles)",
  "metaDescription": "Add styles to your personal webpage.",
  "metaImage": "/tutorials/html/images/personal-page-light-styles-2.png",
  "tags": ["example","html","css"],
  "date": "2017-02-11 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Personal Webpage (dark styles)",
  "categories": ["tutorials","html","css"],
  "url": "/tutorials/html/css/personal-page-dark-styles",
  "thumbnail": "/tutorials/html/images/personal-page-dark-styles-1.png",
  "tagline": "Add dark styles to your personal webpage.",
  "metaTitle": "Personal Webpage (dark styles)",
  "metaDescription": "Give you personal webpage a sp00ky dark theme!",
  "metaImage": "/tutorials/html/images/personal-page-dark-styles-2.png",
  "tags": ["example","html","css"],
  "date": "2017-02-11 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Hour of Code",
  "categories": ["teaching","guides"],
  "url": "/teaching/guides/hour",
  "thumbnail": "/teaching/guides/images/hour-1.png",
  "tagline": "Only have an hour to spare? That's plenty of time!",
  "metaTitle": "Teaching an Hour of Code",
  "metaDescription": "Only have an hour to spare? That's plenty of time!",
  "metaImage": "/teaching/guides/images/hour-1.png",
  "tags": ["teaching","hour of code"],
  "date": "2017-02-08 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Processing.js",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/processing-js",
  "thumbnail": "/tutorials/processing/images/processing-js-1.png",
  "tagline": "Embed your sketch in a webpage.",
  "metaTitle": "Processing.js",
  "metaDescription": "Embed your sketch in a webpage.",
  "metaImage": "/tutorials/processing/images/processing-js-2.png",
  "tags": ["tutorial","processing","processing.js"],
  "date": "2017-02-07 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Exporting Applications",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/exporting-applications",
  "thumbnail": "/tutorials/processing/images/exporting-applications-5.png",
  "tagline": "Share your programs with other people.",
  "metaTitle": "Exporting Applications",
  "metaDescription": "Share your programs with other people.",
  "metaImage": "/tutorials/processing/images/exporting-applications-6.png",
  "tags": ["tutorial","processing"],
  "date": "2017-02-05 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Hosting",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/hosting",
  "thumbnail": "/tutorials/html/images/personal-page-unstyled-1.png",
  "tagline": "Let other people visit your page.",
  "metaTitle": "Hosting",
  "metaDescription": "Learn how to let other people visit your page.",
  "metaImage": "/tutorials/html/images/personal-page-unstyled-2.png",
  "tags": ["tutorial","html"],
  "date": "2017-02-05 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Hour of Code",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/hour-of-code",
  "thumbnail": "/tutorials/processing/images/hour-of-code-11.png",
  "tagline": "Learn the basics of programming in an hour!",
  "metaTitle": "Hour of Code",
  "metaDescription": "Learn the basics of programming in an hour!",
  "metaImage": "/tutorials/processing/images/hour-of-code-12.png",
  "tags": ["tutorial","processing","hour-of-code"],
  "date": "2017-02-03 00:00:00 +0000",
  "printedPages": 19
 },





 {
  "title": "Personal Webpage (no styles)",
  "categories": ["tutorials","html","html-tags"],
  "url": "/tutorials/html/html-tags/personal-page-unstyled",
  "thumbnail": "/tutorials/html/images/personal-page-unstyled-1.png",
  "tagline": "Check out my basic personal webpage.",
  "metaTitle": "Personal Webpage (no styles)",
  "metaDescription": "Check out my basic personal webpage.",
  "metaImage": "/tutorials/html/images/personal-page-unstyled-2.png",
  "tags": ["example","html"],
  "date": "2017-02-01 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Washington DC Tour",
  "categories": ["tutorials","javascript","libraries"],
  "url": "/tutorials/javascript/libraries/washington-dc-tour",
  "thumbnail": "/tutorials/javascript/images/washington-dc-tour-1.png",
  "tagline": "Take a tour of my favorite Washington DC places!",
  "metaTitle": "Washington DC Tour",
  "metaDescription": "Take a tour of my favorite Washington DC places!",
  "metaImage": "/tutorials/javascript/images/washington-dc-tour-2.png",
  "tags": ["example","javascript","libraries","maps"],
  "date": "2017-01-30 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "JavaScript Tutorials",
  "categories": ["blog"],
  "url": "/blog/javascript-tutorials",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "JavaScript Tutorials",
  "metaDescription": "Happy Coding now has JavaScript tutorials!",
  "metaImage": "/tutorials/javascript/images/calling-javascript-4.png",
  "tags": ["site-update"],
  "date": "2017-01-29 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "AJAX and JSON",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/ajax",
  "thumbnail": "/tutorials/javascript/images/ajax-1.png",
  "tagline": "Load external content into your webpage.",
  "metaTitle": "AJAX and JSON",
  "metaDescription": "Load external content into your webpage.",
  "metaImage": "/tutorials/html/javascript/ajax-2.png",
  "tags": ["tutorial","javascript","ajax"],
  "date": "2017-01-17 00:00:00 +0000",
  "printedPages": 14
 },





 {
  "title": "Bootstrap",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/bootstrap",
  "thumbnail": "/tutorials/javascript/images/bootstrap-1.png",
  "tagline": "Create a website using Bootstrap.",
  "metaTitle": "Bootstrap",
  "metaDescription": "Create a website using Bootstrap.",
  "metaImage": "/tutorials/javascript/images/bootstrap-2.png",
  "tags": ["tutorial","javascript","css","bootstrap"],
  "date": "2017-01-15 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "jQuery",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/jquery",
  "thumbnail": "/tutorials/javascript/images/jquery-1.png",
  "tagline": "Learn about one of the most popular JavaScript libraries.",
  "metaTitle": "jQuery Tutorial",
  "metaDescription": "Learn about one of the most popular JavaScript libraries.",
  "metaImage": "/tutorials/html/javascript/jquery-2.png",
  "tags": ["tutorial","javascript","jquery"],
  "date": "2017-01-14 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Libraries",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/libraries",
  "thumbnail": "/tutorials/javascript/images/libraries-1.png",
  "tagline": "Learn about using libraries in JavaScript.",
  "metaTitle": "Using JavaScript Libraries",
  "metaDescription": "Learn about using libraries in JavaScript.",
  "metaImage": "/tutorials/javascript/images/libraries-1.png",
  "tags": ["tutorial","javascript","libraries"],
  "date": "2017-01-09 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Spiral",
  "categories": ["tutorials","processing","for-loops"],
  "url": "/tutorials/processing/for-loops/spiral",
  "thumbnail": "/tutorials/processing/for-loops/images/spiral-2.png",
  "tagline": "Create a colorful spiral.",
  "metaTitle": "Spiral",
  "metaDescription": "This example uses a for loop to draw a colorful spiral.",
  "metaImage": "/tutorials/processing/for-loops/images/spiral-3.png",
  "tags": ["example","processing","for-loop","pretty","100-days-of-code"],
  "date": "2017-01-08 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Letters",
  "categories": ["tutorials","processing","for-loops"],
  "url": "/tutorials/processing/for-loops/letters",
  "thumbnail": "/tutorials/processing/for-loops/images/letters-1.png",
  "tagline": "Show a grid of letters.",
  "metaTitle": "Letters",
  "metaDescription": "This example uses nested for loops to show a grid of letters.",
  "metaImage": "/tutorials/processing/for-loops/images/letters-2.png",
  "tags": ["example","processing","for-loop","typography","100-days-of-code"],
  "date": "2017-01-06 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Developer Tools",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/developer-tools",
  "thumbnail": "/tutorials/javascript/images/developer-tools-2.png",
  "tagline": "Meet your new best friend.",
  "metaTitle": "Developer Tools",
  "metaDescription": "Meet your new best friend.",
  "metaImage": "/tutorials/javascript/images/developer-tools-3.png",
  "tags": ["tutorial","javascript","debugging"],
  "date": "2017-01-04 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Vine",
  "categories": ["tutorials","processing","animation"],
  "url": "/tutorials/processing/animation/vine",
  "thumbnail": "/tutorials/processing/animation/images/vine-3.png",
  "tagline": "Procedurally generated vine animation.",
  "metaTitle": "Vine",
  "metaDescription": "Animate a vine that crawls up the screen.",
  "metaImage": "/tutorials/processing/animation/images/vine-4.png",
  "tags": ["example","processing","animation","nature","generative-art","100-days-of-code"],
  "date": "2017-01-03 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "100 Days of Code",
  "categories": ["blog"],
  "url": "/blog/100-days-of-code",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "100 Days of Code",
  "metaDescription": "Join the challenge and write code for 100 days!",
  "metaImage": "/blog/images/100-days-of-code/100-days-of-code-2.jpg",
  "tags": ["dev-log"],
  "date": "2017-01-01 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Interactive HTML",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/interactive-html",
  "thumbnail": "/tutorials/javascript/images/interactive-html-1.png",
  "tagline": "Learn about creating interactive HTML with JavaScript.",
  "metaTitle": "Interactive HTML",
  "metaDescription": "Learn more about creating interactive HTML with JavaScript.",
  "metaImage": "/tutorials/javascript/images/interactive-html-2.png",
  "tags": ["tutorial","javascript","html"],
  "date": "2016-12-30 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "Creating Functions",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/creating-functions",
  "thumbnail": "/tutorials/javascript/images/creating-functions-1.png",
  "tagline": "Learn about creating functions in JavaScript.",
  "metaTitle": "Creating Functions",
  "metaDescription": "Learn more about creating functions in JavaScript.",
  "metaImage": "/tutorials/javascript/images/creating-functions-2.png",
  "tags": ["tutorial","javascript"],
  "date": "2016-12-28 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Calling JavaScript",
  "categories": ["tutorials","javascript"],
  "url": "/tutorials/javascript/calling-javascript",
  "thumbnail": "/tutorials/javascript/images/calling-javascript-3.png",
  "tagline": "Start making interactive webpages.",
  "metaTitle": "Calling JavaScript",
  "metaDescription": "Start learning how to make interactive webpages.",
  "metaImage": "/tutorials/javascript/images/calling-javascript-4.png",
  "tags": ["tutorial","javascript"],
  "date": "2016-12-27 00:00:00 +0000",
  "printedPages": 6
 },





 {
  "title": "Ludum Dare and Programming Without a Computer",
  "categories": ["blog"],
  "url": "/blog/ludum-dare-and-programming-without-a-computer",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Ludum Dare and Programming Without a Computer",
  "metaDescription": "Here's how I entered Ludum Dare by programming a game without using a computer.",
  "metaImage": "https://pbs.twimg.com/media/CzWVc-ZUAAAVoBA.jpg",
  "tags": ["dev-log"],
  "date": "2016-12-24 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Random Synthesizer",
  "categories": ["tutorials","processing","libraries"],
  "url": "/tutorials/processing/libraries/random-synthesizer",
  "thumbnail": "/tutorials/processing/libraries/images/random-synthesizer-1.png",
  "tagline": "Use the Minim library to play random synthesizer notes.",
  "metaTitle": "Random Synthesizer",
  "metaDescription": "Use the Minim library to play random synthesizer notes.",
  "metaImage": "/tutorials/processing/libraries/images/random-synthesizer-2.png",
  "tags": ["example","processing","library"],
  "date": "2016-11-26 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Rainbow Logo",
  "categories": ["tutorials","html","css"],
  "url": "/tutorials/html/css/rainbow-logo",
  "thumbnail": "/tutorials/html/images/rainbow-logo-1.png",
  "tagline": "Use CSS to create a rainbow logo!",
  "metaTitle": "Rainbow Logo",
  "metaDescription": "This example shows how to use CSS to create a rainbow logo.",
  "metaImage": "/tutorials/html/images/rainbow-logo-2.png",
  "tags": ["example","html","css"],
  "date": "2016-11-26 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "CSS",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/css",
  "thumbnail": "/teaching/intro-to-web-dev-2022-spring/images/week-02-css/css.png",
  "tagline": "Learn how to style your HTML pages.",
  "metaTitle": "CSS",
  "metaDescription": "Learn how to style your HTML pages.",
  "metaImage": "/teaching/intro-to-web-dev-2022-spring/images/week-02-css/css.png",
  "tags": ["tutorial","html","css"],
  "date": "2016-11-24 00:00:00 +0000",
  "printedPages": 12
 },





 {
  "title": "Draggable Circle",
  "categories": ["tutorials","processing","input"],
  "url": "/tutorials/processing/input/draggable-circle",
  "thumbnail": "/tutorials/processing/input/images/draggable-circle-1.gif",
  "tagline": "Reposition a circle by dragging it around the screen.",
  "metaTitle": "Draggable Circle",
  "metaDescription": "This example lets the user reposition a circle by dragging it around the screen.",
  "metaImage": "/tutorials/processing/input/images/draggable-circle-2.png",
  "tags": ["example","processing","input"],
  "date": "2016-11-22 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Random Circles",
  "categories": ["tutorials","processing","for-loops"],
  "url": "/tutorials/processing/for-loops/random-circles",
  "thumbnail": "/tutorials/processing/for-loops/images/random-circles-1.png",
  "tagline": "Random circles fill up the screen.",
  "metaTitle": "Random Circles",
  "metaDescription": "This example uses a for loop to create cool-looking circles.",
  "metaImage": "/tutorials/processing/for-loops/images/random-circles-2.png",
  "tags": ["example","processing","for-loop","pretty"],
  "date": "2016-11-22 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Radial Gradient",
  "categories": ["tutorials","processing","for-loops"],
  "url": "/tutorials/processing/for-loops/radial-gradient",
  "thumbnail": "/tutorials/processing/for-loops/images/radial-gradient-1.png",
  "tagline": "Create a radial gradient.",
  "metaTitle": "Radial Gradient",
  "metaDescription": "This example uses nested for loops to create a radial gradient.",
  "metaImage": "/tutorials/processing/for-loops/images/radial-gradient-2.png",
  "tags": ["example","processing","for-loop"],
  "date": "2016-11-21 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Corner Gradient",
  "categories": ["tutorials","processing","for-loops"],
  "url": "/tutorials/processing/for-loops/corner-gradient",
  "thumbnail": "/tutorials/processing/for-loops/images/corner-gradient-1.png",
  "tagline": "Create a corner gradient.",
  "metaTitle": "Corner Gradient",
  "metaDescription": "This example uses nested for loops to create a corner gradient.",
  "metaImage": "/tutorials/processing/for-loops/images/corner-gradient-2.png",
  "tags": ["example","processing","for-loop"],
  "date": "2016-11-21 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Bouncing Gradient",
  "categories": ["tutorials","processing","for-loops"],
  "url": "/tutorials/processing/for-loops/bouncing-gradient",
  "thumbnail": "/tutorials/processing/for-loops/images/bouncing-gradient-1.png",
  "tagline": "Create a bouncing gradient.",
  "metaTitle": "Bouncing Gradient",
  "metaDescription": "This example uses nested for loops to create a bouncing gradient.",
  "metaImage": "/tutorials/processing/for-loops/images/bouncing-gradient-2.png",
  "tags": ["example","processing","for-loop"],
  "date": "2016-11-21 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "2D Gradient",
  "categories": ["tutorials","processing","for-loops"],
  "url": "/tutorials/processing/for-loops/2d-gradient",
  "thumbnail": "/tutorials/processing/for-loops/images/2d-gradient-1.png",
  "tagline": "Create a 2D gradient.",
  "metaTitle": "2D Gradient",
  "metaDescription": "This example uses nested for loops to create a 2D gradient.",
  "metaImage": "/tutorials/processing/for-loops/images/2d-gradient-2.png",
  "tags": ["example","processing","for-loop","pretty"],
  "date": "2016-11-18 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Code Can Bring Us Together",
  "categories": ["blog"],
  "url": "/blog/code-can-bring-us-together",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Code Can Bring Us Together",
  "metaDescription": "This seemed like the right time to reflect on why I created this site.",
  "metaImage": "/tutorials/processing/creating-functions/images/turtle-graphics-2.png",
  "tags": ["personal"],
  "date": "2016-11-09 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Worms",
  "categories": ["tutorials","processing","animation"],
  "url": "/tutorials/processing/animation/worms",
  "thumbnail": "/tutorials/processing/animation/images/worms-1.png",
  "tagline": "Your basghetti is now worms!",
  "metaTitle": "Worms",
  "metaDescription": "Your basghetti is now worms!",
  "metaImage": "/tutorials/processing/animation/images/worms-2.png",
  "tags": ["example","processing","animation","generative-art"],
  "date": "2016-11-08 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "HTML Tags",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/html-tags",
  "thumbnail": "/tutorials/html/images/html-tags-1.png",
  "tagline": "Learn about some more tags you can use in HTML.",
  "metaTitle": "HTML Tags",
  "metaDescription": "Learn about some more tags you can use in HTML.",
  "metaImage": "/tutorials/html/images/html-tags-2.png",
  "tags": ["tutorial","html"],
  "date": "2016-11-06 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "Turtle Graphics",
  "categories": ["tutorials","processing","creating-functions"],
  "url": "/tutorials/processing/creating-functions/turtle-graphics",
  "thumbnail": "/tutorials/processing/creating-functions/images/turtle-graphics-1.gif",
  "tagline": "Use functions to create a pen that you can rotate and move.",
  "metaTitle": "Turtle Graphics",
  "metaDescription": "This example shows you how to use functions to create a pen that you can rotate and move.",
  "metaImage": "/tutorials/processing/creating-functions/images/turtle-graphics-2.png",
  "tags": ["example","processing","procedural-generation","🐢"],
  "date": "2016-11-04 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "HTML",
  "categories": ["tutorials","html"],
  "url": "/tutorials/html/html",
  "thumbnail": "/tutorials/html/images/html-2.png",
  "tagline": "Get started using HTML.",
  "metaTitle": "HTML",
  "metaDescription": "Learn how to provide web content using HTML.",
  "metaImage": "/tutorials/html/images/html-3.png",
  "tags": ["tutorial","html"],
  "date": "2016-11-03 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Background Info",
  "categories": ["blog"],
  "url": "/blog/background-info",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Background Info",
  "metaDescription": "Here's how I generate random background images. Here's how you can too!",
  "metaImage": "/blog/images/background-info/circles-10.png",
  "tags": ["site-update"],
  "date": "2016-11-01 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Random Piano",
  "categories": ["tutorials","processing","libraries"],
  "url": "/tutorials/processing/libraries/random-piano",
  "thumbnail": "/tutorials/processing/libraries/images/random-piano-1.png",
  "tagline": "Use the Minim library to play random piano notes.",
  "metaTitle": "Random Piano",
  "metaDescription": "Use the Minim library to play random piano notes.",
  "metaImage": "/tutorials/processing/libraries/images/random-piano-2.png",
  "tags": ["example","processing","library"],
  "date": "2016-10-30 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Libraries",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/libraries",
  "thumbnail": "/tutorials/processing/images/libraries-7.png",
  "tagline": "Use libraries to expand what Processing can do.",
  "metaTitle": "How to Use Processing Libraries",
  "metaDescription": "Learn how to use libraries to expand what Processing can do.",
  "metaImage": "/tutorials/processing/images/libraries-6.png",
  "tags": ["tutorial","processing","java","library"],
  "date": "2016-10-28 00:00:00 +0000",
  "printedPages": 5
 },





 {
  "title": "Tricks and Treats and Tags",
  "categories": ["blog"],
  "url": "/blog/tricks-and-treats-and-tags",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Tricks and Treats and Tags",
  "metaDescription": "We now have a tag system. Check out the 🎃 tag!",
  "metaImage": "/tutorials/processing/creating-functions/images/glowing-jack-o-lantern-3.png",
  "tags": ["site-update"],
  "date": "2016-10-23 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Pumpkin Patch",
  "categories": ["tutorials","processing","input"],
  "url": "/tutorials/processing/input/pumpkin-patch",
  "thumbnail": "/tutorials/processing/input/images/pumpkin-patch-2.gif",
  "tagline": "Click to add a pumpkin to the patch.",
  "metaTitle": "Pumpkin Patch",
  "metaDescription": "This example detects user input to grow a pumpkin patch! 🎃",
  "metaImage": "/tutorials/processing/input/images/pumpkin-patch-3.png",
  "tags": ["example","processing","input","🎃"],
  "date": "2016-10-21 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Glowing Jack-o'-Lantern",
  "categories": ["tutorials","processing","creating-functions"],
  "url": "/tutorials/processing/creating-functions/glowing-jack-o-lantern",
  "thumbnail": "/tutorials/processing/creating-functions/images/glowing-jack-o-lantern-2.gif",
  "tagline": "Make a glowing Jack-o'-lantern.",
  "metaTitle": "Glowing Jack-o'-Lantern",
  "metaDescription": "This example shows you how to make a glowing Jack-o'-lantern.",
  "metaImage": "/tutorials/processing/creating-functions/images/glowing-jack-o-lantern-3.png",
  "tags": ["example","processing","procedural-generation","🎃"],
  "date": "2016-10-20 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Twitter Cards and Open Graph",
  "categories": ["blog"],
  "url": "/blog/twitter-cards-and-open-graph",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Twitter Cards and Open Graph",
  "metaDescription": "Ever wonder how sites like Twitter and Facebook figure out what to show when you share a link?",
  "metaImage": "/tutorials/processing/creating-classes/images/flyers-4.png",
  "tags": ["site-update"],
  "date": "2016-10-17 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Jack-o'-Lantern",
  "categories": ["tutorials","processing","using-variables"],
  "url": "/tutorials/processing/using-variables/jack-o-lantern",
  "thumbnail": "/tutorials/processing/using-variables/images/jack-o-lantern-1.png",
  "tagline": "Draw a Jack-o'-lantern.",
  "metaTitle": "Jack-o'-lantern",
  "metaDescription": "Use Processing to draw a Jack-o'-lantern!",
  "metaImage": "/tutorials/processing/creating-variables/images/random-jack-o-lantern-2.png",
  "tags": ["example","processing","🎃"],
  "date": "2016-10-13 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Random Jack-o'-Lantern",
  "categories": ["tutorials","processing","creating-variables"],
  "url": "/tutorials/processing/creating-variables/random-jack-o-lantern",
  "thumbnail": "/tutorials/processing/creating-variables/images/random-jack-o-lantern-1.png",
  "tagline": "Procedurally generate a Jack-o'-lantern.",
  "metaTitle": "Random Jack-o'-Lantern",
  "metaDescription": "Procedurally generate a Jack-o'-lantern.",
  "metaImage": "/tutorials/processing/creating-variables/images/random-jack-o-lantern-2.png",
  "tags": ["example","processing","procedural-generation","🎃"],
  "date": "2016-10-13 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Flower",
  "categories": ["tutorials","processing","using-variables"],
  "url": "/tutorials/processing/using-variables/flower",
  "thumbnail": "/tutorials/processing/using-variables/images/flower-5.png",
  "tagline": "Scale a flower.",
  "metaTitle": "Flower",
  "metaDescription": "This example uses variables to scale a flower drawing.",
  "metaImage": "/tutorials/processing/using-variables/images/flower-4.png",
  "tags": ["example","processing","pretty"],
  "date": "2016-10-12 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Happy Commenting",
  "categories": ["blog"],
  "url": "/blog/happy-commenting",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Happy Commenting",
  "metaDescription": "We now have a comment section! *gulp*",
  "metaImage": "/tutorials/processing/using-objects/images/eyes-5.png",
  "tags": ["site-update"],
  "date": "2016-10-12 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "NES Filter",
  "categories": ["tutorials","processing","images"],
  "url": "/tutorials/processing/images/nes-filter",
  "thumbnail": "/tutorials/processing/images/images/nes-filter-2.png",
  "tagline": "Color an image using the NES palette.",
  "metaTitle": "Nintendo Image Filter",
  "metaDescription": "Use Processing to create a NES image filter!",
  "metaImage": "/tutorials/processing/images/images/nes-filter-3.png",
  "tags": ["example","processing","image"],
  "date": "2016-10-06 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Flower",
  "categories": ["tutorials","processing","calling-functions"],
  "url": "/tutorials/processing/calling-functions/flower",
  "thumbnail": "/tutorials/processing/calling-functions/images/flower-1.png",
  "tagline": "Draw a flower.",
  "metaTitle": "Flower",
  "metaDescription": "This example calls functions to draw a flower.",
  "metaImage": "/tutorials/processing/using-variables/images/flower-4.png",
  "tags": ["example","processing","pretty"],
  "date": "2016-10-06 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Images",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/images",
  "thumbnail": "/tutorials/processing/images/images-1.png",
  "tagline": "Display and manipulate image files.",
  "metaTitle": "Images in Processing",
  "metaDescription": "Learn how to load, display, and manipulate image files in Processing.",
  "metaImage": "/tutorials/processing/images/images-8.png",
  "tags": ["tutorial","processing","image"],
  "date": "2016-10-06 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "The CodePen is Mightier than the Sword",
  "categories": ["blog"],
  "url": "/blog/the-codepen-is-mightier-than-the-sword",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "The CodePen is Mightier than the Sword",
  "metaDescription": "All of the tutorials and examples now have a code editor embedded directly in them!",
  "metaImage": "/tutorials/processing/images/images/nes-filter-3.png",
  "tags": ["site-update"],
  "date": "2016-10-03 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Random Walkers",
  "categories": ["tutorials","processing","arraylists"],
  "url": "/tutorials/processing/arraylists/random-walkers",
  "thumbnail": "/tutorials/processing/arraylists/images/random-walkers-1.gif",
  "tagline": "Randomly colored random walkers.",
  "metaTitle": "Random Walkers",
  "metaDescription": "This example uses random walkers to create scribble art!",
  "metaImage": "/tutorials/processing/arraylists/images/random-walkers-3.png",
  "tags": ["example","processing","animation","arraylist","random-walker","generative-art","emergence"],
  "date": "2016-09-30 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Flocking",
  "categories": ["tutorials","processing","arraylists"],
  "url": "/tutorials/processing/arraylists/flocking",
  "thumbnail": "/tutorials/processing/arraylists/images/flocking-1.gif",
  "tagline": "Drag to create more Flockers.",
  "metaTitle": "Flocking",
  "metaDescription": "This example shows how to create a program that models the flocking behavior of birds.",
  "metaImage": "/tutorials/processing/arraylists/images/flocking-3.png",
  "tags": ["example","processing","animation","arraylist","flocking","emergence"],
  "date": "2016-09-30 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Por Ejemplo",
  "categories": ["blog"],
  "url": "/blog/por-ejemplo",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Por Ejemplo",
  "metaDescription": "Happy Coding now has examples!",
  "metaImage": "/tutorials/processing/input/images/bouncing-balls-2.png",
  "tags": ["site-update"],
  "date": "2016-09-30 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Eyes",
  "categories": ["tutorials","processing","using-objects"],
  "url": "/tutorials/processing/using-objects/eyes",
  "thumbnail": "/tutorials/processing/using-objects/images/eyes-1.gif",
  "tagline": null,
  "metaTitle": "Following Eyes",
  "metaDescription": "This example creates creepy eyes that follow your mouse.",
  "metaImage": "/tutorials/processing/using-objects/images/eyes-5.png",
  "tags": ["example","processing","oop"],
  "date": "2016-09-29 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Flyers",
  "categories": ["tutorials","processing","creating-classes"],
  "url": "/tutorials/processing/creating-classes/flyers",
  "thumbnail": "/tutorials/processing/creating-classes/images/flyers-2.gif",
  "tagline": "Create a swarm that follows the mouse.",
  "metaTitle": "Flyers",
  "metaDescription": "This example creates a swarm that follows your mouse around.",
  "metaImage": "/tutorials/processing/creating-classes/images/flyers-4.png",
  "tags": ["example","processing","creating-classes","animation"],
  "date": "2016-09-29 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Flocking",
  "categories": ["tutorials","processing","creating-classes"],
  "url": "/tutorials/processing/creating-classes/flocking",
  "thumbnail": "/tutorials/processing/creating-classes/images/flocking-1.gif",
  "tagline": "Simulate the behavior of a flock of birds.",
  "metaTitle": "Flocking",
  "metaDescription": "This example shows how to create a program that models the flocking behavior of birds.",
  "metaImage": "/tutorials/processing/arraylists/images/flocking-3.png",
  "tags": ["example","processing","creating-classes","animation","flocking","emergence"],
  "date": "2016-09-29 00:00:00 +0000",
  "printedPages": 3
 },





 {
  "title": "Random Walkers",
  "categories": ["tutorials","processing","input"],
  "url": "/tutorials/processing/input/random-walkers",
  "thumbnail": "/tutorials/processing/input/images/random-walkers-2.gif",
  "tagline": "Randomly colored random walkers.",
  "metaTitle": "Random Walkers",
  "metaDescription": "This example detects user input to create scribble art!",
  "metaImage": "/tutorials/processing/arraylists/images/random-walkers-3.png",
  "tags": ["example","processing","generative-art","random-walker","emergence"],
  "date": "2016-09-26 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Random Walkers",
  "categories": ["tutorials","processing","arrays"],
  "url": "/tutorials/processing/arrays/random-walkers",
  "thumbnail": "/tutorials/processing/arrays/images/random-walkers-6.gif",
  "tagline": "Randomly colored random walkers.",
  "metaTitle": "Random Walkers",
  "metaDescription": "This example creates random walkers to create scribble art!",
  "metaImage": "/tutorials/processing/arraylists/images/random-walkers-3.png",
  "tags": ["example","processing","animation","random-walker","generative-art","random"],
  "date": "2016-09-26 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Bouncing Balls",
  "categories": ["tutorials","processing","input"],
  "url": "/tutorials/processing/input/bouncing-balls",
  "thumbnail": "/tutorials/processing/input/images/bouncing-balls-1.gif",
  "tagline": "Make a random bouncing ball pit.",
  "metaTitle": "Bouncing Balls",
  "metaDescription": "This examples detects user input to create a bunch of bouncing balls.",
  "metaImage": "/tutorials/processing/input/images/bouncing-balls-2.png",
  "tags": ["example","processing","input"],
  "date": "2016-09-24 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Good Morning",
  "categories": ["tutorials","processing","if-statements"],
  "url": "/tutorials/processing/if-statements/good-morning",
  "thumbnail": "/tutorials/processing/if-statements/images/good-morning-1.png",
  "tagline": "Say hello based on the time of day.",
  "metaTitle": "Good Morning",
  "metaDescription": "This example uses if statements to say hello based on the time of day.",
  "metaImage": "/tutorials/processing/if-statements/images/good-morning-2.png",
  "tags": ["example","processing","if"],
  "date": "2016-09-24 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Random Colors",
  "categories": ["tutorials","processing","for-loops"],
  "url": "/tutorials/processing/for-loops/random-colors",
  "thumbnail": "/tutorials/processing/for-loops/images/random-colors-1.png",
  "tagline": "Make every pixel a different color.",
  "metaTitle": "Random Colors",
  "metaDescription": "This example uses nested for loops to make every pixel a random color.",
  "metaImage": "/tutorials/processing/for-loops/images/random-colors-2.png",
  "tags": ["example","processing","for-loop"],
  "date": "2016-09-24 00:00:00 +0000",
  "printedPages": 1
 },





 {
  "title": "Bouncing Balls",
  "categories": ["tutorials","processing","arrays"],
  "url": "/tutorials/processing/arrays/bouncing-balls",
  "thumbnail": "/tutorials/processing/arrays/images/bouncing-balls-1.gif",
  "tagline": "Make a random bouncing ball pit.",
  "metaTitle": "Bouncing Balls",
  "metaDescription": "This examples uses arrays to create a bunch of bouncing balls.",
  "metaImage": "/tutorials/processing/input/images/bouncing-balls-2.png",
  "tags": ["example","processing","array","animation","random"],
  "date": "2016-09-24 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Random Walker",
  "categories": ["tutorials","processing","animation"],
  "url": "/tutorials/processing/animation/random-walker",
  "thumbnail": "/tutorials/processing/animation/images/random-walker-2.gif",
  "tagline": "aka the scribbler",
  "metaTitle": "Random Walker",
  "metaDescription": "Animate a random walker that scribbles on the screen.",
  "metaImage": "/tutorials/processing/animation/images/random-walker-5.png",
  "tags": ["example","processing","animation","random-walker","generative-art"],
  "date": "2016-09-24 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Random Faces",
  "categories": ["tutorials","processing","creating-functions"],
  "url": "/tutorials/processing/creating-functions/random-faces",
  "thumbnail": "/tutorials/processing/creating-functions/images/random-faces-1.gif",
  "tagline": "Procedurally generate infinite smiley faces.",
  "metaTitle": "Random Faces",
  "metaDescription": "This example uses functions to procedurally generate random faces.",
  "metaImage": "/tutorials/processing/creating-functions/images/random-faces-2.png",
  "tags": ["example","processing","procedural-generation"],
  "date": "2016-09-23 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Smiley Face",
  "categories": ["tutorials","processing","using-variables"],
  "url": "/tutorials/processing/using-variables/smiley-face",
  "thumbnail": "/tutorials/processing/using-variables/images/smiley-face-2.png",
  "tagline": "Scale a smiley face.",
  "metaTitle": "Smiley Face",
  "metaDescription": "This example uses variables to scale a drawing of a face.",
  "metaImage": "/tutorials/processing/creating-functions/images/random-faces-2.png",
  "tags": ["example","processing"],
  "date": "2016-08-05 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Random Face",
  "categories": ["tutorials","processing","creating-variables"],
  "url": "/tutorials/processing/creating-variables/random-face",
  "thumbnail": "/tutorials/processing/creating-variables/images/random-face-4.png",
  "tagline": "Procedurally generate a smiley face.",
  "metaTitle": "Random Face",
  "metaDescription": "This example uses variables to procedurally generate random faces.",
  "metaImage": "/tutorials/processing/creating-functions/images/random-faces-2.png",
  "tags": ["example","processing","procedural-generation"],
  "date": "2016-08-05 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Smiley Face",
  "categories": ["tutorials","processing","calling-functions"],
  "url": "/tutorials/processing/calling-functions/smiley-face",
  "thumbnail": "/tutorials/processing/calling-functions/images/smiley-face-1.png",
  "tagline": "Draw a smiley face.",
  "metaTitle": "Smiley Face",
  "metaDescription": "This example calls functions to draw a smiley face.",
  "metaImage": "/tutorials/processing/creating-functions/images/random-faces-2.png",
  "tags": ["example","processing"],
  "date": "2016-07-30 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Hello World",
  "categories": ["blog"],
  "url": "/blog/hello-world",
  "thumbnail": null,
  "tagline": null,
  "metaTitle": "Hello World",
  "metaDescription": "The first blog post on the new site!",
  "metaImage": "/tutorials/processing/creating-functions/images/random-faces-2.png",
  "tags": ["site-update","favorite"],
  "date": "2016-07-28 00:00:00 +0000",
  "printedPages": 2
 },





 {
  "title": "Creating Classes",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/creating-classes",
  "thumbnail": "/tutorials/processing/images/creating-classes-4.gif",
  "tagline": "Create blueprints for your own objects.",
  "metaTitle": "Creating Classes in Processing",
  "metaDescription": "Learn how to create classes in Processing.",
  "metaImage": "/tutorials/processing/images/creating-classes-3.png",
  "tags": ["tutorial","processing","objects"],
  "date": "2016-07-18 00:00:00 +0000",
  "printedPages": 14
 },





 {
  "title": "ArrayLists",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/arraylists",
  "thumbnail": "/tutorials/processing/images/arraylists-1.gif",
  "tagline": "Create an object that stores other objects.",
  "metaTitle": "ArrayLists",
  "metaDescription": "Learn how to use ArrayLists in Processing.",
  "metaImage": "/tutorials/processing/arraylists/images/random-walkers-3.png",
  "tags": ["tutorial","processing","arraylist"],
  "date": "2016-07-18 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "Using Objects",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/using-objects",
  "thumbnail": "/tutorials/processing/images/using-objects-2.gif",
  "tagline": "Group related variables together.",
  "metaTitle": "Using Objects",
  "metaDescription": "Learn how to use objects to group related variables together.",
  "metaImage": "/tutorials/processing/using-objects/images/eyes-5.png",
  "tags": ["tutorial","processing","objects"],
  "date": "2016-07-16 00:00:00 +0000",
  "printedPages": 13
 },





 {
  "title": "Input",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/input",
  "thumbnail": "/tutorials/processing/images/input-12.gif",
  "tagline": "Use mouse and keyboard input to make interactive sketches.",
  "metaTitle": "User Input in Processing",
  "metaDescription": "Learn how to detect mouse and keyboard input to make interactive programs in Processing.",
  "metaImage": "/tutorials/processing/images/input-13.png",
  "tags": ["tutorial","processing","input"],
  "date": "2016-07-14 00:00:00 +0000",
  "printedPages": 14
 },





 {
  "title": "For Loops",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/for-loops",
  "thumbnail": "/tutorials/processing/images/for-loops-7.png",
  "tagline": "Use patterns to repeat work without repeating code.",
  "metaTitle": "For loops",
  "metaDescription": "Learn how to use for loops in Processing.",
  "metaImage": "/tutorials/processing/images/for-loops-7.png",
  "tags": ["tutorial","processing","for-loops"],
  "date": "2016-07-12 00:00:00 +0000",
  "printedPages": 10
 },





 {
  "title": "Arrays",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/arrays",
  "thumbnail": "/tutorials/processing/images/arrays-5.gif",
  "tagline": "Create variables that hold multiple values.",
  "metaTitle": "Arrays in Processing",
  "metaDescription": "Learn how to use arrays in Processing. Use arrays to store multiple values in a single variable!",
  "metaImage": "/tutorials/processing/images/arrays-6.png",
  "tags": ["tutorial","processing","arrays"],
  "date": "2016-07-12 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "Animation",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/animation",
  "thumbnail": "/tutorials/processing/images/animation-7.gif",
  "tagline": "Create animated visualizations.",
  "metaTitle": "Animation",
  "metaDescription": "Learn how to create animations in Processing.",
  "metaImage": "/tutorials/processing/images/animation-8.png",
  "tags": ["tutorial","processing","animation"],
  "date": "2016-07-11 00:00:00 +0000",
  "printedPages": 11
 },





 {
  "title": "If Statements",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/if-statements",
  "thumbnail": "/tutorials/processing/images/if-statements-6.gif",
  "tagline": "Make decisions in your code.",
  "metaTitle": "If Statements",
  "metaDescription": "Learn how to use if statements to make decisions in your code.",
  "metaImage": "/tutorials/processing/images/if-statements-5.png",
  "tags": ["tutorial","processing","if-statements"],
  "date": "2016-07-09 00:00:00 +0000",
  "printedPages": 10
 },





 {
  "title": "Creating Functions",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/creating-functions",
  "thumbnail": "/tutorials/processing/images/creating-functions-9.gif",
  "tagline": "Write your own custom functions.",
  "metaTitle": "Creating Functions in Processing",
  "metaDescription": "Learn how to write your own functions in Processing.",
  "metaImage": "/tutorials/processing/images/creating-functions-7.png",
  "tags": ["tutorial","processing","functions"],
  "date": "2016-07-08 00:00:00 +0000",
  "printedPages": 9
 },





 {
  "title": "Using Variables",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/using-variables",
  "thumbnail": "/tutorials/processing/images/using-variables-7.png",
  "tagline": "Get information from the computer.",
  "metaTitle": "Using Variables in Processing",
  "metaDescription": "Learn how to use variables to get information from Processing.",
  "metaImage": "/tutorials/processing/images/using-variables-7.png",
  "tags": ["tutorial","processing"],
  "date": "2016-06-30 00:00:00 +0000",
  "printedPages": 7
 },





 {
  "title": "Creating Variables",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/creating-variables",
  "thumbnail": "/tutorials/processing/images/creating-variables-thumbnail.gif",
  "tagline": "Give your code a memory.",
  "metaTitle": "Creating Variables",
  "metaDescription": "Learn how to create your own variables in Processing.",
  "metaImage": "/tutorials/processing/images/using-variables-7.png",
  "tags": ["tutorial","processing"],
  "date": "2016-06-30 00:00:00 +0000",
  "printedPages": 8
 },





 {
  "title": "What is Programming?",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/what-is-programming",
  "thumbnail": "/tutorials/processing/images/what-is-programming-2.png",
  "tagline": "Get ready to write some code.",
  "metaTitle": "What is Programming?",
  "metaDescription": "Before diving into the code, let's talk about the terms we'll be using.",
  "metaImage": "/tutorials/processing/images/what-is-programming-2.png",
  "tags": ["tutorial","processing","fundamentals"],
  "date": "2016-06-24 00:00:00 +0000",
  "printedPages": 4
 },





 {
  "title": "Calling Functions",
  "categories": ["tutorials","processing"],
  "url": "/tutorials/processing/calling-functions",
  "thumbnail": "/tutorials/p5js/images/calling-functions-4.png",
  "tagline": "Tell the computer what to do.",
  "metaTitle": "Calling Functions",
  "metaDescription": "Learn the first step to coding: calling functions!",
  "metaImage": "/tutorials/p5js/images/calling-functions-4.png",
  "tags": ["tutorial","processing","basic"],
  "date": "2016-06-24 00:00:00 +0000",
  "printedPages": 7
 }

]
