seminars.fb

Python @ Facebook (seminars.fb.notes.dutc.io)

Hardware Engineering Python Learning Series

Logo: Don't Use This Code, LLC

Newsletter

Why should you sign up for our newsletter?

  1. Get Python tips & tricks, brainteasers, code reviews, and other exclusive, original technical content from Don’t Use This Code!
  2. Stay up-to-date with new developments in the projects you love!
  3. Become aware of upcoming events in the global open source community!
  4. Receive advance notice and special deals on new offerings from Don’t Use This Code!

Do you want to be a Python expert? Sign up today @ bit.ly/expert-python!

Sign up!

today (Fri Oct 28): “Data Analysis with Python”
tmate link (https://tmate.io/t/dutc/seminars-fb)

About

Don’t Use This Code; Training & Consulting

Don’t Use This Code is a professional training, coaching, and consulting company. We are deeply invested in the open source scientific computing community, and are dedicated to bringing better processes, better tools, and better understanding to the world.

Don’t Use This Code is growing! We are currently seeking new partners, new clients, and new engagements for our expert consulting and training services.

Teams looking to better employ these tools would benefit from our wide range of training courses on offer, ranging from an intensive introduction to Python fundamentals to advanced applications of Python for building large-scale, production systems. Working with your team, we can craft targeted curricula to meet your training goals. We are also available for consulting services such as building scientific computing and numerical analysis systems using technologies like Python and React.

We pride ourselves on delivering top-notch training. We are committed to providing quality training, and we do so by investing in three key areas: our content, our processes, and our contributors.

James Powell; Consultant, Instructor, & Presenter

James Powell is a professional Python programmer and enthusiast. He got his start with the language by building reporting and analysis systems for proprietary trading offices; now, he uses his experience as a consultant for those building data engineering and scientific computing platforms for a wide range of clients using cutting-edge open source tools like Python and React.

He also currently serves as a Board Director, Chair, and Vice President at NumFOCUS, the 501(c)3 non-profit that supports all the major tools in the Python data analysis ecosystem (i.e., pandas, numpy, jupyter, matplotlib). At NumFOCUS, he helps build global open source communities for data scientists, data engineers, and business analysts. He helps NumFOCUS run the PyData conference series and has sat on speaker selection and organizing committees for 18 conferences. James is also a prolific speaker: since 2013, he has given over seventy (70) conference talks at over fifty (50) Python events worldwide.

Table of Contents

date session  
Fri Oct 28, 2022 workshop notes & materials
Fri Oct 14, 2022 seminar notes & materials
Fri Sep 16, 2022 seminar notes & materials
Fri May 6, 2022 seminar notes & materials
Fri Feb 11, 2022 seminar notes & materials
Fri Dec 17, 2021 seminar notes & materials
Fri Dec 3, 2021 seminar notes & materials
Fri Nov 5, 2021 seminar notes & materials
Fri Oct 15, 2021 seminar notes & materials
Fri Oct 1, 2021 seminar notes & materials
Fri May 21, 2021 workshop notes & materials
Fri May 7, 2021 seminar notes & materials
Fri Mar 12, 2021 seminar notes & materials
Fri Dec 18, 2020 seminar notes & materials
Fri Dec 18, 2020 discussion notes & materials
Fri Dec 11, 2020 discussion notes & materials
Fri Dec 4, 2020 seminar notes & materials
Wed Nov 18, 2020 seminar notes & materials
Wed Nov 11, 2020 discussion notes & materials
Wed Nov 11, 2020 seminar notes & materials
Fri Nov 6, 2020 seminar notes & materials
Mon Oct 30, 2020 discussion notes & materials
Fri Oct 23, 2020 seminar notes & materials
Mon Oct 12, 2020 discussion notes & materials
Mon Oct 12, 2020 seminar notes & materials
Fri Oct 9, 2020 seminar notes & materials

Notes & Materials

Workshop (Fri Oct 28): “Data Analysis”

   
Title “Data Analysis”
Topic hard problems in data analysis
Date Fri Oct 28
Time 1pm~3pm PST
Keywords pandas

Materials

In this advanced workshop, we will share with you some of the most valuable and most complex problems problems we have had to solve in pandas as part of our work with the Hardware Insights team.

In this workshop, we’ll work through these problems together, to see how we can make very sophisticated analyses straightforward and obvious.

Specifically, we will look to answering the following questions:

Seminar (Fri Oct 14): “The Standard Library”

   
Title “The Standard Library”
Topic a quick tour of the Python standard library
Date Fri Oct 14
Time 10am~11am PST
Keywords Python, the standard library

Materials

Audience

These sessions are designed for a broad audience of non-software engineers and software programmers of all backgrounds and skill-levels.

Our expected audience should comprise attendees with a…

During this session, we will endeavor to guide our audience to developing…

Abstract

In previous seminars, we’ve made thorough use of the Python standard library, and we’ve talked about what it takes to develop greater fluency and greater capabilities with Python.

In this seminar, we’ll take a closer look at the Python standard library. We’ll present a motivation for coming to terms with the standard library’s scope and size. We’ll present a perspective on how to understand where and when to use the standard library, rather than writing your own approach or introducing a third-party dependency. We’ll also tour the most interesting and useful parts of the standard library—parts which you could be using right now to improve your work!

What’s Next

Did you enjoy this seminar? Did you learn something new that will help you as you as you write your own pandas analyses?

In a future seminar, we can do a deeper dive into data structures and algorithms that can be applied to solving problems in your work. We can also tour major third party libraries that can bring immediate benefit to your code, and highlight tools that you might not be aware of.

If you’re interested in any of these topics, please let us know! Send us an e-mail at learning@dutc.io or contact us over Workplace with your feedback!

Seminar (Fri Sep 16): “Time Series Analysis in Python (with pandas!)”

   
Title “Time Series Analysis with Python”
Topic analysing common time series data using Python
Date Fri Sep 16
Time 10am~11am PST
Keywords Python, pandas, time series analysis

Materials

Audience

These sessions are designed for a broad audience of non-software engineers and software programmers of all backgrounds and skill-levels.

Our expected audience should comprise attendees with a…

During this session, we will endeavor to guide our audience to developing…

Abstract

In previous seminars, we have seen the use of pandas for analysis of columnar data, and the importance of understanding core NumPy and pandas concepts to make these analyses flexible, efficient, and fluent.

In this seminar, we will take a closer look at analyses involving time data. We’ll construct a sample dataset very similar to actual data that you might work with from Netpipeline, SeRF, ODS, or similar. We’ll investigate a number of specific, actionable analyses (i.e., analyses which tie directly to a business outcome or business decision,) and see how to construct them, step-by-step, in pandas

What’s Next

Did you enjoy this seminar? Did you learn something new that will help you as you as you write your own pandas analyses?

In a future semnar, we can do deeper into advanced pandas features and mechanics, such as the use of MultiIndex; transformation operations like .stack, .unstack, .melt, .pivot, and .pivot_table; grouping and windowing analyses using .groupby, .rolling, and .expanding; efficiency with large data sets (and the occassional need to drop down to the NumPy layer); or other topics that would help you make better use of this powerful analytical tool!

If you’re interested in any of these topics, please let us know! Send us an e-mail at learning@dutc.io or contact us over Workplace with your feedback!

Seminar (Fri May 6): “Mastering the Basics of Python” (developing mastery of basic Python syntax and functionality)

   
Title “Mastering the Basics of Python”
Topic developing mastery of basic Python syntax and functionality
Date Fri May 6
Time 10am~11am PST
Keywords Python, the built-in data types, the built-in functions, the standard library, advanced syntax

Materials

Audience

These sessions are designed for a broad audience of non-software engineers and software programmers of all backgrounds and skill-levels.

Our expected audience should comprise attendees with a…

During this session, we will endeavor to guide our audience to developing…

Abstract

In previous seminars, we have used all manner of Python syntax and core functionality to demonstrate points about data analysis and software development. We have not called attention to some of the precise choices made in our code samples, preferring instead to discuss the use-case or theoretical topic at hand.

In this seminar, we will dive into some of the exacting, precise choices that we regularly make when writing even very simple pieces of Python code. While many of the topics we will discuss could be classified as “introductory” Python, we will approach them from the perspective of someone who has already written a good deal of code in Python, someone who is looking to revisit and solidify decisions they may subconsciously make every day in their code.

Sample Agenda:

What’s Next?

Did you enjoy this seminar? Did you learn something new that will help you as you as you write larger Python scripts and analyses and write libraries to empower your colleagues’ work.

In a future seminar, we can go deeper into new syntax added to Python ≥3.6, and new approaches to writing Python that have evolved in the past five years.

We can discuss…

If you’re interested in any of these topics, please let us know! Send us an e-mail at learning@dutc.io or contact us over Workplace with your feedback!

Seminar (Fri Feb 11): “Give me your data analysis, stat!” (using pandas and statsmodels for statistical analysis of large data sets)

   
Title “Give me your data analysis, stat!”
Topic using scipy, numpy, and statsmodels for statistical analysis of large data sets
Date Fri, Feb 11 2022
Time 10am~11am PST
Keywords descriptive stats, inferential statistics, distributions, probability, modelling, statsmodels, scipy, numpy, pandas

Materials

Audience

These sessions are designed for a broad audience of non-software engineers and software programmers of all backgrounds and skill-levels.

Our expected audience should comprise attendees with a…

During this session, we will endeavor to guide our audience to developing…

Abstract

In previous seminars, we have transformed, visualised, and analysed large data sets using pandas. These analyses have been presented with a focus on the syntax and structure of the computational tools, rather than on the underlying analytical tasks.

In this seminar, we will focus on the analysis itself, and show how to do basic descriptive and inferential statistics tasks in Python using pandas, numpy, scipy, and statsmodels. We will discuss the motivation for this use of statistics, how to formulate and answer hypotheses, and how to do basic correleation and prediction.

Sample Agenda:

What’s Next?

Did you enjoy this seminar? Did you learn something new that will help you as you analyse larger and larger data sets?

In a future seminar, we can go into greater depth on statistical modeling, inference, and prediction. We can also discuss how to approach statistics from the Bayesian approach, or tie our statistical & probability knowledge to topics in information theory.

We can discuss…

If you’re interested in any of these topics, please let us know! Send us an e-mail at learning@dutc.io or contact us over Workplace with your feedback!

Seminar (Fri Dec 17): “Don’t Forget About the .index!”

   
Title Don’t Forget About the .index!
Topic Fluent Use of pandas & core concepts
Date Fri Dec 17
Keywords pandas.Index, MultiIndex

Materials

Audience

These sessions are designed for a broad audience of non-software engineers and software programmers of all backgrounds and skill-levels.

Our expected audience should comprise attendees with a…

During this session, we will endeavour to guide our audience to developing…

Abstract

In a previous seminar, we discussed data analysis of tabular/columnar data sets using pandas.

In this seminar, we will take a close look at what makes pandas special: the index! We’ll look at how a pandas.Series can be conceptualised as a mathematical “restricted computation domain” similar to the numpy.ndarray with some business information attached—a coördinate system or indexing system. We’ll talk about how a pandas.DataFrame is not a two-dimensional data structure but a doubly-indexed collection of index-aligned one-dimesional data. We’ll discuss the mechanisms employed by the Index as part of .loc operations, and core concepts of implicit/explicit hierarchy and monotonicity.

Agenda:

What’s Next?

Did you enjoy this seminar? Did you learn something new that will help you use pandas more effectively, as you do more analysis in your work?

In a future seminar, we may dive deeper into the mechanics of pandas. We can:

If you’re interested in any of these topics, please let us know! Send us an e-mail at learning@dutc.io or contact us over Workplace with your feedback!

Seminar (Fri Dec 3): “Doing More with Asynchronous Python”

   
Title Doing More with Asynchronous Python
Topic Asynchronous Python with async/await
Date Fri Dec 3
Keywords generators, coroutines, await, async def, async for, async with, PEP-492

Materials

Audience

These sessions are designed for a broad audience of non-software engineers and software programmers of all backgrounds and skill levels.

Our expected audience should comprise attendees with a…

During this session, we will endeavour to guide our audience to developing…

Abstract

In a previous seminar, we gave a broad overview of concurrency approaches in Python, comparing them and contrasting them, touching briefly upon asyncio.

In this seminar, we will take a closer look at how asyncio approaches are structured. We’ll review the basics of generators and coroutines, build from there to asynchronous coroutines and event loops, discuss new syntax added to support asynchronous programming (e.g., async def/await.) We’ll also take a look at how this syntax fits into mechanisms added to the Python object model, and wrap up our discussion with a neat demo of a simple asynchronous system.

Agenda:

What’s Next?

Did you enjoy this seminar? Did you learn something new that will help you as you write more complex Python systems that require concurrent approaches?

In a future seminar, we may dive deeper into asynchronous and concurrent design.

We can:

If you’re interested in any of these topics, please let us know! Send us an e-mail at learning@dutc.io or contact us over Workplace with your feedback!

Seminar (Fri Nov 5): “Grouping, Rolling, and Expanding in pandas

   
Title Grouping, Rolling, and Expanding in pandas
Topic Grouping (.groupby) and Window (.rolling, .expanding) Functions in pandas
Date Fri Nov 5
Keywords {DataFrame,Series}.groupby, .groupby.agg, .groupby.apply, .groupby.transform, .rolling, .expanding

Materials

Audience

These sessions are designed for a broad audience of non-software engineers and software programmers of all backgrounds and skill levels.

Our expected audience should comprise attendees with a…

During this session, we will endeavour to guide our audience to developing…

Abstract

In a previous seminar, we looked at the pandas.DataFrame and how it provides a data type for manipulating liked-indexed columnar datasets.

In this seminar, we will look at .groupby in-depth, as well as the various reduction operations it supports (.apply, .transform, .aggregate.) We will explore .groupby in the context of other window functions in pandas—functions which operate on “windows” of multiple rows or multiple columns to perform aggregations or other transformations.

We’ll also look at .rolling, .expanding, and .ewm, their various options and modalities, as well as the operations available on the Window, Rolling, Expanding, and ExponentialMovingWindow objects they return. We’ll discuss these operations in the context of time series analysis and discuss performance considerations related to the use of each.

Agenda:

What’s Next?

Did you enjoy this seminar? Did you learn something new that will help you as you use pandas and window functions more and more in your work?

In a future seminar, we may dive deeper into the use of pandas.

We can:

If you’re interested in any of these topics, please let us know! Send us an e-mail at learning@dutc.io or contact us over Workplace with your feedback!

Seminar (Fri Oct 15): “Seeing Things in Context with Context Managers”

   
Title Seeing Things in Context with Context Managers
Topic Resource Management & Context Managers
Date Fri Oct 15
Keywords context managers, with-statement, asynchronous context managers, contextlib, __del__, __weakref__, PEP-343, PEP-567, PEP-492

Materials

Audience

These sessions are designed for a broad audience of non-software engineers and software programmers of all backgrounds and skill levels.

Our expected audience should comprise attendees with a…

During this session, we will endeavour to guide our audience to developing…

Abstract

In previous seminars, we have discussed the motivation, mechanisms, and metaphors provided by advanced Python features such as generators, coroutines, and aspects of the OO model.

In this seminar, we will tackle PEP-343 Context Managers. We’ll discuss the motivation of deterministic management of resources, prior approaches and potential missteps and misapprehensions when coming from other programming languages. We’ll discuss the “metaphor” that context managers provide, and how this sequencing metaphor leads to a direct relationship between context managers and generators (typically via contextlib.contextmanager.) We’ll discuss the mechanism behind context managers, including the OO model API, as well as details related to context manager in asynchronous code (and the motivation and appropriate use of async with syntax.) Finally, we’ll discuss common problems related to composition of context managers, as well as the need for context-local state (and the subsequent development of PEP-567 context variables.)

Agenda:

What’s Next?

Did you enjoy this seminar? Did you learn something new that will help you as you use advanced features in Python more and more in your work?

In a future seminar, we can discuss other advanced Python syntax. We can discuss:

If you’re interested in any of these topics, please let us know! Send us an e-mail at learning@dutc.io or contact us over Workplace with your feedback!

Seminar (Fri Oct 1): “All the Syntax They Didn’t Teach You In School”

   
Title All the Syntax They Didn’t Teach You In School
Topic Overview of Contemporary and Upcoming Syntax in Python
Date Fri Oct 1
Keywords comprehensions, unpacking, floor division, true division, augmented assignment, walrus, pattern matching, string formatting, f-string, breakpoint, dataclasses, class decorators, metaclasses, __init_subclass__

Materials

Audience

These sessions are designed for a broad audience of non-software engineers and software programmers of all backgrounds and skill levels.

Our expected audience should comprise attendees with a…

During this session, we will endeavour to guide our audience to developing…

Abstract

In previous seminars, we’ve seen code that makes use of syntax, functionality, and features introduced in Python 3.0 or Python 3.6 or later versions. These have been presented without drawing any special attention to them, but care has been taken to ensure that all code samples have been written in a modern style.

In this seminar, we’ll take a look at a handful of examples of new functionality or features that constitute modern Python style. But instead of parading these one-after-the-other, we’ll take a look at the underlying design considerations that tie these together, in an attempt to convey an overarching, coherent understanding of what constitutes modern, fluent Python.

Sample Agenda:

What’s Next?

Did you enjoy this seminar? Did you learn something new that will help you as you use Python more and more in your work?

In a future seminar, we can take a look at these areas in isolation and discuss the design problems these solve, as well as the overall thematic direction Python is taking as it evolves.

We can discuss:

If you’re interested in any of these topics, please let us know! Send us an e-mail at learning@dutc.io or contact us over Workplace with your feedback!

Advanced Use-Cases → “Graphs and Networks”

Workshop (Fri, May 21, 2021; 1:30 PM PST)

Theme: Graphs and networks

Topic: modeling graphs, graph problems, working with graphs in python

Keywords: nodes, edges, paths, graphs, networks, networkx

Presenter James Powell james@dutc.io
Date Friday, May 21, 2021
Time 1:30 PM PST

“All around me I see nodes and edges! Graphs are everywhere—in all sorts of problems we need to solve, from modeling connectivity in a data center to modeling workflows and business processes! In this session, we’ll brush up on some fundamental graph theory and discuss how to work with and model graphs in Python!”

Hands-on with Graph Analysis in Python.

Join Python expert-in-residence James Powell for a hands-on, small group workshop on Working with Graphs in Python! Using a case study as a foundation, we will cover topics based on attendees interests, such as:

There are no formal prerequisites, however, experience with Python is a must! There will be plenty of time during the session for questions and discussion.

Materials:


Programming Fundamentals → “Metaprogramming in Python: Writing code that writes code”

Seminar (Fri, May 7, 2021; 12:30 PM PST)

Theme: Programming Fundamentals

Topic: Metaprogramming

Presenter James Powell james@dutc.io
Date Friday, May 7, 2021
Time 12:30 PM PST

Computers make our lives easier by allowing us to automate tasks we would otherwise do by hand. But the practice of writing code itself can be tedious. So why can’t I write a computer programme that automates my task of writing computer programmes that automates my task of writing computer programmes that automates my task of writing computer programmes…?

This seminar will present a view of metaprogramming approaches in Python, focusing on questions like:

Materials:


Programming Fundamentals → “Complexity Analysis, Big-O, Data Structures, and Algorithms”

Seminar (Fri, Mar 12, 2021; 1 PM PST)

Theme: Programming Fundamentals

Topic: Complexity Analysis, Big-O, Data Structures, and Algorithms

Keywords: complexity analysis, big-o, data structures, and algorithms

Presenter James Powell james@dutc.io
Date Friday, March 12, 2021
Time 1:00 PM PST

Okay, so your code is slow. That’s no good! Nobody likes slow code. But what does it really matter? And when does it really matter? And what does it all really mean?

This seminar will present an introductory view of a critical topic in software development: complexity analysis and Big-O notation as it applies to our choices of algorithms and data structures in Python programmes. We will be covering important questions like:

Materials:


Programming Fundamentals → “Generators”

Seminar (Fri, Dec 18, 2020; 9 AM PST)

Theme: Programming Fundamentals

Topic: Generators

Keywords: generators, laziness, coroutines, comprehension syntax

Presenter James Powell james@dutc.io
Date Friday, December 18, 2020
Time 9:00 AM PST

Materials:


Programming Fundamentals → “OO Design”

Seminar (Fri, Dec 18, 2020; 11 PM PST)

Theme: Programming Fundamentals

Topic: OO Design

Keywords: objects, classes, design

Presenter James Powell james@dutc.io
Date Friday, December 18, 2020
Time 11:00 PM PST

Materials:


Grab Bag → “Stocking Stuffers”

Seminar (Fri, Dec 11, 2020; 12 PM PST)

Theme: Grab Bag

Topic: Stocking Stuffers

Keywords: simulation design

Presenter James Powell james@dutc.io
Date Friday, December 11, 2020
Time 12:00 PM PST

Materials:


Tools & Approaches → “designing functions”

Seminar (Fri, Dec 4, 2020; 9 PM PST)

Theme: Tools and Approaches

Topic: Function Design

Keywords: *args, **kwargs, functools.wraps, lambda functions; inspect.signature; decorators

Presenter James Powell james@dutc.io
Date Friday, December 4, 2020
Time 9:00 AM PST

Materials:


Data Analysis & Engineering → “pandas is really good, actually

Seminar (Wed, Nov 18, 2020; 12 PM PST)

Theme: Data Analysis & Engineering

Topic: pandas is really good, actually

Keywords: Python, data analysis, data engineering, numpy, pandas

Presenter James Powell james@dutc.io
Date Wednesday, November 18, 2020
Time 12:00 PM PST

Materials:


Tools and Approaches → “Testing, Property Testing & hypothesis

Follow-up (Wed, Nov 11, 2020; 12 PM PST)

Theme: Tools and Approaches

Topic: Testing, Property Testing & hypothesis

Keywords: Python, testing, pytest, hypothesis

presenter James Powell james@dutc.io
date Wednesday, November 11, 2020
time 12:00 PM PST

Materials:


Automation → “Concurrency Approaches & threading, multiprocessing, and asyncio

Seminar (Wed, Nov 11, 2020; 9 AM PST)

Theme: Automation

Topic: Concurrency Approaches & threading, multiprocessing, and asyncio

Keywords: Python, automation, concurrency, parallelism, threading, multiprocessing, asyncio

Presenter James Powell james@dutc.io
Date Wednesday, November 11, 2020
Time 9:00 AM PST

Materials:


Programming Fundamentals → “Object-Orientation in Python and the Python Object Model”

Seminar (Fri, Nov 6, 2020; 9 AM PST)

Theme: Programming (& Python!) Fundamentals

Topic: Object-Orientation in Python and the Python Object Model

Keywords: Python, object orientation, data model, object model

Presenter James Powell james@dutc.io
Date Friday, November 6, 2020
Time 9:00 AM PST

Materials:


Data Analysis & Engineering → “How Python, numpy, and pandas ‘Fit’ Together”

Follow-up (Mon, Oct 30, 2020; 12 PM PST)

Theme: Data Analysis & Engineering

Topic: How Python, numpy, and pandas ‘Fit’ Together

Keywords: Python, data anaylsis, data engineering, numpy, pandas

Presenter James Powell james@dutc.io
Date Monday, October 30, 2020
Time 12:00 PM PST

tmate: https://tmate.io/t/ro-AMpD8zLZnpdHq5pPMaKx3wKGj

Materials:


Tools and Approaches → “Testing, Property Testing & hypothesis

Seminar (Fri, Oct 23, 2020; 9 AM PST)

Theme: Tools and Approaches

Topic: Testing, Property Testing & hypothesis

Keywords: Python, testing, pytest, hypothesis

presenter James Powell james@dutc.io
date Friday, October 23, 2020
time 9:00 AM PST

Materials:


Device Automation → “Automation with asyncssh and paramiko

Follow-up (Mon, Oct 12, 2020; 12 PM PST)

Theme: Device Automation

Topic: Automation Using asynchssh and paramiko

Keywords: Python, Device Automation, ssh

presenter James Powell james@dutc.io
date Monday, October 12, 2020
time 12:00 PM PST

tmate: https://tmate.io/t/ro-kGFKnayD9JjAdHBMDvJH4EFTh

Materials:


Data Analysis & Engineering → “How Python, numpy, and pandas ‘Fit’ Together”

Seminar (Mon, Oct 12, 2020; 9 AM PST)

Theme: Data Analysis & Engineering

Topic: How Python, numpy, and pandas ‘Fit’ Together

Keywords: Python, data analysis, data engineering, numpy, pandas

presenter James Powell james@dutc.io
date Monday, October 12, 2020
time 9:00 AM PST

Materials:


Device Automation → “Automation with asyncssh and paramiko

Seminar (Fri, Oct 9, 2020; 9 AM PST)

Theme: Device Automation

Topic: Automation Using asynchssh and paramiko

Keywords: Python, Device Automation, ssh

presenter James Powell james@dutc.io
date Friday, October 9, 2020
time 9:00 AM PST

Materials: