RECENT TOPICS

The truth about objects By: Naomi Ceder
Date: Aug. 8, 2024, 6 p.m.

“Everything in Python is an object.” This is a profound truth about Python, but what does it mean? Is literally EVERYTHING an object? And what is an object anyway? Are objects the same as instances of a class? How do classes and types really work in Python? And what do metaclasses have to do with anything?

In fact, the answers to these questions are probably not what you think they are - Python’s approach to objects is different from most other languages in sometimes surprising ways.

This talk will use simple live coded examples to explore how objects work in Python and clear up several common misconceptions and misunderstandings about how objects and instances, classes and types, and metaclasses all work together.

Be warned - you are likely to be surprised when you learn the truth about objects in Python.

Package and Share Your Python Code Like a Pro By: Paul Zuradzki
Date: Aug. 8, 2024, 6 p.m.

Have you ever struggled with making your Python scripts reproducible? Do you want another project to be able to use your code without forcing users to copy your files? 

Ever get stumped by these errors:
```
ImportError: No module named MyPackage
ImportError: attempted relative import with no known parent package
```

If yes, then this talk is for you!

We will talk about
- Python module search path basics
- Learn to make a pip-installable package with automated code quality tools. Introducing `pyproject.toml` and `setup.py`.
- Installing a Python package from zip, GitHub, or PyPI
- Introduce a minimal GitHub Actions workflow file and pre-commits. 
- Introduce code quality tools for linting, formatting, type checking, and testing (pytest, black, mypy, ruff). We won't go into the details of each, but we will show how to run these tools in a automated fashion.

Innovating with Python to be better professionally and personally By: Drake Loud
Date: July 11, 2024, 6 p.m.

In this talk, I hope that you will walk away inspired on ways you might innovate in work or at home. 

I'll discuss a particular personal problem that I had, and how I solved it with a solution using serverless functions and a simple UI. We will dig into the architecture and code. Where I will briefly  show how the solution was solved in Python. 

Finally, we will end with ways to build your innovation muscles and why it matters for you personally and professionally. 

 

The CPython JIT By: Jeff Glass
Date: July 11, 2024, 6 p.m.

Starting in Python 3.13, CPython includes the option to run with a Just-In-Time Compiler, which emits snippets of machine-code at runtime for added speed. The novel 'copy-and-patch' JIT CPython uses means that the Python runtime doesn't need to actually know anything about compiling this machine-code - it just 'fills in the blanks' of pre-compiled stencils.

This talk will introduce the core concepts of CPython's Tier 2 Interpreter, its copy and patch JIT, and current active areas of exploration. It will also include notes on my own explorations with Superinstructions - sequences of multiple bytecodes compiled together for additional time savings.

Python: The Language for Understanding and Building the Future of AI By: Paul Ebreo
Date: June 13, 2024, 6 p.m.

This talk explores a new framework for building Artificial Intelligence (AI) inspired by the human brain and leveraging the power of Python. We'll delve into the concept of consciousness as a combination of memory, prediction, and experience. By using hierarchical probabilities, similar to Google's PageRank algorithm, we can build AI systems that are not only powerful but also understandable and aligned with human values. Python will be our toolset as we explore the exciting future of AI development.

What happens if I delete this "setup.py" file? By: Heather White
Date: June 13, 2024, 6 p.m.

What does it mean when people talk about "old-style" vs. "new-style" packaging?  Why do some projects have setup.py, when some have setup.cfg, and others have pyproject.toml?

Let's discuss new vs. old-style packaging, the files involved, and walk through upgrading a sample project from setuptools to hatchling.

Shipping ChiPy: Running ChiPy.org on a Kubernetes Cluster By: Joe Jasinski
Date: May 9, 2024, 6:50 p.m.

Join us for an insightful talk where we delve into Kubernetes, the industry-standard deployment technology. Experience firsthand the deployment of a Python application as we transform the chipy.org website to operate on Kubernetes. Explore essential concepts including Nodes, Deployments, Jobs, Services, Ingress, PV/PVCs, Operators, ServiceAccounts, ConfigMaps, Secrets, and more!

What to do at PyCon? By: Raymond Berg
Date: May 9, 2024, 6:35 p.m.

First time at PyCon? Not sure what to do while you are there? How do you network? Will it hurt?

All your questions about about America's biggest Python conference will be answered in a way that will probably help anyone at any conference.

Understanding Unicode By: Evan Hahn
Date: May 9, 2024, 7:45 p.m.

The farmer emoji (👩🏾‍🌾) is a bit of a mystery.

In Python, its length is 4.

Same in Ruby. In JavaScript, its length is 7. It's 15 in Go and 12 in Java. There's just one character here...shouldn't they all have the same length: 1?

To understand this madness, you need to understand a little about Unicode. Many developers, myself included, get intimidated by Unicode. What's "UTF-8"? What's a "code point"? What does "U+1F937" mean?

In this talk, I'll try to answer these questions so that the next time someone gets confused by the length of the farmer emoji, you can help.

Intro to Property-Based Testing with Hypothesis By: Paul Zuradzki
Date: April 11, 2024, 6 p.m.

One shortfall of example-based unit tests is that they only test known examples. Property-based testing lets you test against randomized inputs if you can specify properties that must be true of the code's behavior ("invariants"). You also test your function against extreme-values (aka, fuzzing).

In this talk, will review some examples of property-based tests using the Hypothesis library. We will demo automated test generation ("ghostwriting" tests) to make writing tests easier. We will demo stateful testing to confirm that all possible states are valid in a program.  Lastly, we will end with parting thoughts on how to specify properties. Often, the tricky part with PBT is knowing what to test! Since we are using randomized input, we need to specify properties that should hold true across all outputs.