[KEYNOTE] The attentive programmer
by Daniele Procida - Canonical
Programming is the expression of will. We’re like God! ๐
This is a love project, this is something Daniele has programmed about: C is for Camera. And this is something about writing the right content to the right audience: Diรกtaxis.
Poem
Pay attention Be astonished Tell about it
[TALK] Modern observability for Python
by Adrian Garcia Badaracco
The way we monitor a Python program has passed through many layers: from print
to logging, to metrics and traces, to distributed traces to Open Telemetry (OTEL).
In general, each layers add features and information, at the price of adding complexity.
print
works, but it’s very basic.
Logging works, but it’s cumbersome to configure, it’s built-in but it’s complex and gives no context.
Traces are logs with context. They are more than a single line in a .txt
file. Use them instead of logging.
Metrics summarize large amount of data. They can be used to summarize traces.
Distributed traces are traces used with microservices; therefore, they trace the many calls made when every microservice calls other microservices.
OTEL it’s a standard and it’s implementable for many languages, Python included. It’s surely more complex to setup and to configure, but it’s more comprehensive and interchangeable.
Slides made with Slides.com, interesting app!
[TALK] Quit Simplifying!
by Florian Haas - slides (very nice)
New is simpler than old because it can do less. This is why new fancy tools seems so easy to use; but looking closer at them, you can see they have less functionalities (compare Pop with Teams).
You can’t escape the Configuration Complexity Clock. Mike Hadlow’s 2012 article is really interesting: the CCC has no way out!
Complexity does not recede. This is the second law of thermodynamics ๐.
Pushing complexity downstream does not reduce it. Therefore, don’t try to create a kind of untouchable “core” software and an ecosystem of “plugins” which actually end up being not plugins but de-facto parts of the core because without them the core is de-facto incomplete.
A leader’s job is to slow the growth of disorder. Because the unstoppable growth will be accelerated by some actions, namely: not using features flags, not testing, not documenting, refactoring without feature parity, violating the Principle of Least Astonishment.
Keep things simple; you can’t make them simple. Don’t mismatch the KISS principle (Keep It Small and Simple) with the MISS principle (Make it Small and Simple), which actually is invalidated by practice and by the second law of thermodynamics.
[TALK] Writing Beautiful, Simple, and Safe Operations Scripts with Python
by Yossi Rozantsev
He showed his ShPyX library, a wrapper around Python’s subprocess
.
[WORKSHOP] Data Analysis, the Polars Way
by Jan Pipek
The material (data and notebook) are available at this Jan’s repo.
Gentle introduction to Polars. You aren’t supposed to have any experience with it. I just think it misses a small comparison with Pandas and a stronger part on why Polars should be adopted instead of Pandas.
[WORKSHOP] A Tale from the Trenches
by Sheena O’Connell - Umuzi - slides
Hugo is a nice site creator with pages based on Markdown.
When teaching something, put people in a professional environment with kind-of real work dynamics. If you want to teach them to code, expose them to code review, to being open at receiving feedbacks, to be ready to give the right feedback. You can use a Kanban board like ๐
Backlog (projects to develop) | In progress | Review - Feedback | Review - Requested | Done |
---|---|---|---|---|
Card n.13 | Card n.12 | Card n.1 | Card n.2 | Card n.3 |
Card n.14 | – | – | Card n.9 | Card n.6 |
Card n.15 | – | – | – | Card n.10 |
Follow Mastery-Based learning: the learner must be a “master” on a skill before he proceeding to learn a new skill.
Skills requirements create a pyramid of knowledge: for example, to learn how to cycle using list comprehension, a learner must know what lists are and what cycling means; therefore, the former skill is a “lego brick” which builds on top of the two latter skills. They can also be viewed as a graph. ๐ Therefore, there’s an order when you’re learning something. When tackling a project card, this card should have a list of skills required; the combination of these skills and of their recursive requirements creates the learning path.
1-to-1 tutoring isn’t expensive, because they’re much more effective when compared to 1-to-many tutoring.