diff --git a/north-bay-python-2023/category.json b/north-bay-python-2023/category.json new file mode 100644 index 000000000..f75dac2fa --- /dev/null +++ b/north-bay-python-2023/category.json @@ -0,0 +1,3 @@ +{ + "title": "North Bay Python 2023" +} diff --git a/north-bay-python-2023/videos/automate-your-city-data-with-python.json b/north-bay-python-2023/videos/automate-your-city-data-with-python.json new file mode 100644 index 000000000..4aee535d9 --- /dev/null +++ b/north-bay-python-2023/videos/automate-your-city-data-with-python.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "Every week, in every city, hundreds if not thousands of decisions, big and small, are being made about the places where we all live. Most of the time, these decisions are hidden behind old systems, arcane websites, or poorly formatted PDFs. With the power of Datasette, Python data tooling, and Github actions, you can quickly set up a low-or-no-cost city data pipeline, and help us all better understand the decisions being made where we live.", + "duration": 1428, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Philip James" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/MtWzNnZvQ6w/maxresdefault.jpg", + "title": "Automate Your City Data with Python", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=MtWzNnZvQ6w" + } + ] +} diff --git a/north-bay-python-2023/videos/automated-accessibility-audits.json b/north-bay-python-2023/videos/automated-accessibility-audits.json new file mode 100644 index 000000000..b2f2f63ff --- /dev/null +++ b/north-bay-python-2023/videos/automated-accessibility-audits.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "It's 2023, so we all know the importance of website accessibility. Thanks to open source tools, we can now automatically check our Python Web Apps for accessibility issues. In this talk, I'll show how to use the open-source Axe-core accessibility checking engine with Python tools like Pytest and Playwright, plus tips for setting up CI/CD workflows to ensure that accessibility issues don't get introduced.", + "duration": 1526, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Pamela Fox" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/J-4Qa6PSomM/maxresdefault.jpg", + "title": "Automated accessibility audits", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=J-4Qa6PSomM" + } + ] +} diff --git a/north-bay-python-2023/videos/back-to-the-future-of-hypermedia-in-python.json b/north-bay-python-2023/videos/back-to-the-future-of-hypermedia-in-python.json new file mode 100644 index 000000000..f3d89a105 --- /dev/null +++ b/north-bay-python-2023/videos/back-to-the-future-of-hypermedia-in-python.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "\"Hypermedia is your friend,\" they said. \"You don't need JavaScript anymore,\" they said. \"You'll be _fine_...\"\n\nIt's no secret that hypermedia has been making a quiet resurgence in the web development landscape. One of the most popular toolkits in the Python space is htmx, offering a simple, declarative approach to AJAX, CSS Transitions, and Server Sent Events directly from your HTML.\n\nAdditionally, tools like TailwindCSS are making it easier to design your application simply by adding preconfigured CSS classes to your HTML elements. There's no need to meddle around with a CSS file or fear that completely changing your design will increase bloat or introduce clashing code.\n\nYou can now build a beautiful and responsive application with nothing more than Python and HTML!\n\nLet's take a look at some of the tools that exist to enable the PyHAT (Python htmx ASGI Tailwind) stack and discuss where we can go from here.", + "duration": 1665, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Mario Munoz" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/MopeCQVSIUk/maxresdefault.jpg", + "title": "Back to the Future of Hypermedia in Python", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=MopeCQVSIUk" + } + ] +} diff --git a/north-bay-python-2023/videos/beyond-programming-paradigms-with-python-examples.json b/north-bay-python-2023/videos/beyond-programming-paradigms-with-python-examples.json new file mode 100644 index 000000000..c6c2eda29 --- /dev/null +++ b/north-bay-python-2023/videos/beyond-programming-paradigms-with-python-examples.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "Java is object oriented and Haskell is functional. How about Python?\nIs it really OO with free-standing functions and porous encapsulation?\nPython has lambdas and closures, but is it functional? Are these\nuseful questions?", + "duration": 1813, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Luciano Ramalho" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/nku1fjna_rQ/maxresdefault.jpg", + "title": "Beyond Programming Paradigms (with Python examples)", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=nku1fjna_rQ" + } + ] +} diff --git a/north-bay-python-2023/videos/catching-up-on-the-weird-world-of-llms.json b/north-bay-python-2023/videos/catching-up-on-the-weird-world-of-llms.json new file mode 100644 index 000000000..05064a5bf --- /dev/null +++ b/north-bay-python-2023/videos/catching-up-on-the-weird-world-of-llms.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "Large Language Models are the engines that power AI tools like ChatGPT, Bing and Bard.\n\nThey are deeply weird, often frustrating and undeniably fascinating pieces of technology.\n\nThis talk will attempt to summarize everything I've learned about them over the past year: how they are built, what they can do, what they can't do and how we can best tame them and use them to solve interesting problems.\n\nLLMs don't have to be large: I'll talk through the latest developments in openly licensed models you can run on your own devices, including on your phone and even in your web browser.\n\nI'll also discuss their as-yet unconquered security flaws, and the bewildering ethical implications of how they are trained and what they can damage.", + "duration": 2353, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Simon Willison" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/h8Jth_ijZyY/maxresdefault.jpg", + "title": "Catching up on the weird world of LLMs", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=h8Jth_ijZyY" + } + ] +} diff --git a/north-bay-python-2023/videos/celebrating-25-years-of-open-source-our-friend-betsy.json b/north-bay-python-2023/videos/celebrating-25-years-of-open-source-our-friend-betsy.json new file mode 100644 index 000000000..2967f0e77 --- /dev/null +++ b/north-bay-python-2023/videos/celebrating-25-years-of-open-source-our-friend-betsy.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "", + "duration": 315, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Josh Simmons" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/1ttw3sHN2Yo/maxresdefault.jpg", + "title": "Celebrating 25 years of Open Source & our friend Betsy", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=1ttw3sHN2Yo" + } + ] +} diff --git a/north-bay-python-2023/videos/developing-labs-for-teaching-kids-webdev.json b/north-bay-python-2023/videos/developing-labs-for-teaching-kids-webdev.json new file mode 100644 index 000000000..fe8469961 --- /dev/null +++ b/north-bay-python-2023/videos/developing-labs-for-teaching-kids-webdev.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "Come listen to the tale of how I and a small team of Scout Leaders developed and delivered a weekend course that took 11-15-year-old young adults from knowing almost nothing about networking or code, to being able to follow along and build their own website, complete with static HTML, CSS, and then transitioning to a simple Python Flask app, requiring nothing more than a web browser and Visual Studio Code on the student computers.\n\nI'll cover how we gave each student full root access to their own \"server\", through to how we built the course material to be a manageable learning curve over such a tight timeline, the challenges we faced with content delivery, and ideas for improvements before we run our next course.", + "duration": 1523, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Matt Cengia" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/VXFuL5PcPKI/maxresdefault.jpg", + "title": "Developing Labs for Teaching Kids Webdev", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=VXFuL5PcPKI" + } + ] +} diff --git a/north-bay-python-2023/videos/have-you-tried.json b/north-bay-python-2023/videos/have-you-tried.json new file mode 100644 index 000000000..f6056636f --- /dev/null +++ b/north-bay-python-2023/videos/have-you-tried.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "Have you tried turning it off again? \n\nThese words are the most useful and most annoying tech support. Yes, I know that it will probably fix it, but why?? \n\nThis talk is about failure analysis and also robots and maybe there will be a story about my mattress exploding? Whatever the example, failure analysis is incredibly important and I will go over at least 2 case studies for deep root cause analysis and replication of failure states.", + "duration": 1129, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Paloma Fautley" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/tH9RwxgLnJA/maxresdefault.jpg", + "title": "Have you tried...", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=tH9RwxgLnJA" + } + ] +} diff --git a/north-bay-python-2023/videos/i-take-exception-to-your-exceptions-using-custom-errors-to.json b/north-bay-python-2023/videos/i-take-exception-to-your-exceptions-using-custom-errors-to.json new file mode 100644 index 000000000..478e5aa11 --- /dev/null +++ b/north-bay-python-2023/videos/i-take-exception-to-your-exceptions-using-custom-errors-to.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "Have you ever used a library, ran into a generic AttributeError, and then had to go chase down what the problem _actually_ was? Wouldn't it be great to help others from running into that same issue on _your_ code? In this talk, we take a look at custom exceptions in Python and ways to structure your code to use them effectively to communicate issues back to the end user (or end developer). We'll also cover a few cool lesser-used things you can do with exceptions to make your code really stand out!", + "duration": 1880, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Joe Kaufeld" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/wJ5EO7tnDiQ/maxresdefault.jpg", + "title": "I Take Exception to Your Exceptions: Using Custom Errors to Get Your Point Across", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=wJ5EO7tnDiQ" + } + ] +} diff --git a/north-bay-python-2023/videos/make-your-engineering-team-a-fabulous-place-for-programmers-with.json b/north-bay-python-2023/videos/make-your-engineering-team-a-fabulous-place-for-programmers-with.json new file mode 100644 index 000000000..d8bbfca32 --- /dev/null +++ b/north-bay-python-2023/videos/make-your-engineering-team-a-fabulous-place-for-programmers-with.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "In StackOverflow's 2022 annual survey of 16,000 developers worldwide, 10.6% of respondents reported being affected by concentration or memory challenges, such as having Attention Deficit Hyperactivity disorder (ADHD), and 4.3% of respondents self-identified as having an Autism Spectrum Disorder (ASD). These results indicate that on a team of 20 engineers, up to 3 people on the team may have what are called \"neurodivergent\" brains.\n\nWhat are the symptoms of ADHD and ASD? What are the so-called neurodivergent \"superpowers\" you may have seen on social media? How can we create work environments that foster ease and success for neurodivergent software engineers? Join this session to find out!", + "duration": 1368, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Erin 'August' Allard" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/z0ZzCvTFzms/maxresdefault.jpg", + "title": "Make Your Engineering Team A Fabulous Place for Programmers with ADHD and Autism", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=z0ZzCvTFzms" + } + ] +} diff --git a/north-bay-python-2023/videos/observability-for-you-and-me-with-opentelemetry.json b/north-bay-python-2023/videos/observability-for-you-and-me-with-opentelemetry.json new file mode 100644 index 000000000..6483501a6 --- /dev/null +++ b/north-bay-python-2023/videos/observability-for-you-and-me-with-opentelemetry.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "Are you interested in dipping your toes in the cloud native observability waters, but as an engineer you are not sure where to get started with tracing problems through your microservices and application landscapes? Then this is the session for you, where we take you on your first steps in an active open-source project that offers a buffet of languages (err, Python), challenges, and opportunities for getting started with telemetry data. The project is called OpenTelemetry, but before diving into the specifics, we\u2019ll start with de-mystifying key concepts and terms such as observability, telemetry, instrumentation, cardinality, percentile to lay a foundation. After understanding the nuts and bolts of observability and distributed traces, we\u2019ll explore the openTelemetry community; its Special Interest Groups (SIGs), repositories, and how to become not only an end-user, but possibly a contributor.We will wrap up with an overview of the components in this project, such as the Collector, the OpenTelemetry protocol (OTLP), its APIs, and its SDKs. Python in particular has lovely documentation and auto-instrumentation for the most popular frameworks! Attendees will leave with an understanding of key observability concepts, become grounded in distributed tracing terminology, be aware of the components of openTelemetry, and know how to take their first steps to an open-source contribution!", + "duration": 997, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Sarah Hudspeth" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/yJBVVtkplzI/maxresdefault.jpg", + "title": "Observability For You and Me with OpenTelemetry", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=yJBVVtkplzI" + } + ] +} diff --git a/north-bay-python-2023/videos/oh-the-methods-you-can-make-by-dunder-seuss.json b/north-bay-python-2023/videos/oh-the-methods-you-can-make-by-dunder-seuss.json new file mode 100644 index 000000000..3a4290af3 --- /dev/null +++ b/north-bay-python-2023/videos/oh-the-methods-you-can-make-by-dunder-seuss.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "You can make many methods \nOver 100 to be exact \nThat start with two underscores \nWhat do you think of that?\n\nThe runtime, it calls these \nAt points A or B \nTo do special magic \nAt runtime, you see.\n\nYou may have seen `__getattr__` or `__init__` \nBut `__rfloordiv__`? What\u2019s the point of it?\n\nCome take a quick tour, your mother won\u2019t mind \nAnd hear a talk that\u2019s one-of-a-kind \nAbout how Python uses them under-the-hood \nAnd how _you_ can use them to write code that's real good", + "duration": 1403, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Josh Cannon" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/CSpzTx-S8B0/maxresdefault.jpg", + "title": "Oh the (Methods) You Can (Make): By Dunder Seuss", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=CSpzTx-S8B0" + } + ] +} diff --git a/north-bay-python-2023/videos/pep-talk.json b/north-bay-python-2023/videos/pep-talk.json new file mode 100644 index 000000000..42f5e1047 --- /dev/null +++ b/north-bay-python-2023/videos/pep-talk.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "If you use Python, chances are you've heard of PEP 8, the Python style guide.\n\nBut do you know what PEPs really are? PEPs are more than just a style guide. A PEP stands for Python Enhancement Proposal. It's a proposal documentation for when you want to change the Python programming language in a big way, for example when you want to change the syntax of Python. Think of the addition of f-strings, the walrus operator, or the ExceptionGroup, those changes all started with a PEP.\n\nLet's have a PEP talk, where you can learn about the PEP process, what needs a PEP and what doesn't, and how you as community members can take part.", + "duration": 1216, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Mariatta" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/7OHGugQkYzA/maxresdefault.jpg", + "title": "PEP talk", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=7OHGugQkYzA" + } + ] +} diff --git a/north-bay-python-2023/videos/ship-your-python-code-faster-with-pex.json b/north-bay-python-2023/videos/ship-your-python-code-faster-with-pex.json new file mode 100644 index 000000000..65396e53f --- /dev/null +++ b/north-bay-python-2023/videos/ship-your-python-code-faster-with-pex.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "A lot of Python code is shipped around in Docker images. But did you know there is another way to ship Python code to production that is... *better* in some situations? This talk covers our exploration into making code deployment faster for our users (our product runs user code in our cloud). We will cover the limits we faced with Docker builds and container provisioning, various options we explored, and why we settled on PEX.\n\n[PEX](https://pex.readthedocs.io) is a tool that packages Python code and dependencies into a single file. It provides various features such as determinism (given the same input files, you get a bit-for-bit identical output file), isolation (a PEX file runs in the bundled environment, isolated from the system\u2019s site-packages), composition (multiple PEX files can be combined to form new environments), and more. We used a number of these feature to great effect in our solution. By using PEX in addition to Docker we were able to reduce the time a developer waits for code to deploy from 3-4 minutes to about 30 seconds.\n\nShipping code isn't the only use for PEX. Once we see how PEX files work, we will also go over a few fun tips and tricks that are handy for everyday Python development.", + "duration": 1807, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Shalabh Chaturvedi" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/pyRwQByuFfc/maxresdefault.jpg", + "title": "Ship your Python code faster with PEX", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=pyRwQByuFfc" + } + ] +} diff --git a/north-bay-python-2023/videos/svgs-lasers-reality-and-you.json b/north-bay-python-2023/videos/svgs-lasers-reality-and-you.json new file mode 100644 index 000000000..fe914d647 --- /dev/null +++ b/north-bay-python-2023/videos/svgs-lasers-reality-and-you.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "Evan Kohilas is a Software Engineer down from Sydney, Australia, whose passions lie in improving the developer experience by reducing human error, enhancing code health, and optimising workflows.\n\nWhen he's not thinking about security, informatics, or giving talks about his many projects, you'll find him either nomming on subway cookies, or chasing bunny rabbits.\n\nhttps://pretalx.northbaypython.org/nbpy-2023/talk/XB7UTZ/\n\nRecently, I embarked on an adventure to design and laser cut a card for my wallet.\n\nLittle did I know that I'd face a Hydra called Reality. For every challenge that I solved, two new ones emerged...\n\nIn the software world, we often have the privilege of quick feedback loops, be it running code or tests.\n\nBut as we slowly broaden our scope and venture into the real world, navigating unpredictable variables from complex software, proprietary hardware, and a little thing called \"physics\", we quickly lose this privilege.\n\nHow can we use Python and SVGs to speed up and fortify this process, and what can the real world of fabrication with laser cutting teach us regarding software design?\n\nBy the end of the talk, you'll have a basic understanding of how to cleanly design SVGs and SVG paths with the assistance of Python. You'll also understand (more than want to know about) laser cutting, and some suggested learnings regarding software design.\n", + "duration": 1415, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Evan Kohilas" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/F6rW99AZ0ZI/maxresdefault.jpg", + "title": "SVGs, Lasers, Reality, and You", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=F6rW99AZ0ZI" + } + ] +} diff --git a/north-bay-python-2023/videos/teaching-with-jupyter.json b/north-bay-python-2023/videos/teaching-with-jupyter.json new file mode 100644 index 000000000..ccd3bd91f --- /dev/null +++ b/north-bay-python-2023/videos/teaching-with-jupyter.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "Jupyter has a well-deserved reputation for being a research tool. The same properties that make it well suited for research make it a powerful tool for hands-on teaching. Whether it is abstract math, computer science, software development, physics, or many other subjects, Jupyter can be a powerful tool for teaching with integrated hands-on exercises.\n\nThe talk will show how JupyterLab can be used both for assigning independent work as well as to help follow along with traditional frontal teaching. It will cover concrete examples from math, software development, and physics, to show how to put it into practice.\n\nThe talk will also cover how to export Jupyter notebooks in a way suitable for students to download them and how to use Jupyter to grade work assigned as notebooks.", + "duration": 1575, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Moshe Zadka" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/6QJuOZXb_AY/maxresdefault.jpg", + "title": "Teaching with Jupyter", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=6QJuOZXb_AY" + } + ] +} diff --git a/north-bay-python-2023/videos/two-kinds-of-scripting-what-writing-plays-has-taught-me.json b/north-bay-python-2023/videos/two-kinds-of-scripting-what-writing-plays-has-taught-me.json new file mode 100644 index 000000000..437a22403 --- /dev/null +++ b/north-bay-python-2023/videos/two-kinds-of-scripting-what-writing-plays-has-taught-me.json @@ -0,0 +1,20 @@ +{ + "copyright_text": "", + "description": "It\u2019s a set of instructions, describing a series of actions to be taken or events that should happen. It\u2019s written with specialized syntax and formatting. You want it to be efficient; you don\u2019t want it to bog down. It doesn\u2019t reach its full potential until you run through it, start to finish, without error.\n\nAm I talking about a play script, or a Python program?\n\n\"Two Kinds of Scripting\" explores the surprising and thought-provoking connections between writing code and writing plays, from the perspective of a Bay Area software engineer with a degree in drama from a liberal arts college and two decades of playwriting experience. It will discuss how structuring and plotting a play is like structuring a computer program; the way that a knowledge of Method Acting can help you figure out to name your Python methods; and how stage directions are just as controversial among theater folks as code comments are among engineers. Finally, the talk will discuss some things that playwrights could learn from the engineering world, including version control and better feedback/\"debugging\" techniques.\n", + "duration": 1482, + "language": "eng", + "recorded": "2023-07-30", + "related_urls": [], + "speakers": [ + "Marissa Skudlarek" + ], + "tags": [], + "thumbnail_url": "https://i.ytimg.com/vi/hrXFC3VKsRQ/maxresdefault.jpg", + "title": "Two Kinds of Scripting: What Writing Plays Has Taught Me About Writing Python Programs", + "videos": [ + { + "type": "youtube", + "url": "https://www.youtube.com/watch?v=hrXFC3VKsRQ" + } + ] +}