[KEYNOTE] Mirror, mirror: LLMs and the illusion of humanity
Blake Lemoine article on LamDA. 1984’s Newspeak: what’s the meaning of a word? Octopus thought test. Thomas Nagel’s paper: What is like to be a bat?.
[TALK] Il software funzionante è il principale metro di misura di progresso
by Raffaele Colace - 20tab srl (look at the Product Management Festival) The title is a citation of the Agile Manifesto.
What if the airplane software panicked because of a silly bug? Or the surgery equipment during an operation to a loved one? Is the software…
- harmful for people, the environment, to objects?
- made of buggy code?
- cyclically verifiable?
Robert “Uncle Bob” Martin said: “We will not ship shit!”
Shit is:
- a bug
- a not tested function
- a poorly written function
- a not needed coupling
- much more…
WRITE TESTS!
To write User Stories with the customer use Gherkin.
[TALK] Documenting Python Code
Why do we reverse engineer the code instead of documenting it?
Every day without documenting, the software debt increases.
Documentation has to be treated like code!
You can generate beautiful documentation websites from Python’s docstrings using Sphinx. A tutorial on how to use the reStructuredText to write docstrings is available here (for example, NumPy uses this lightweight markup language to write its own documentation, as you can see from the source code of the array page).
There should be few, but responsible, people who manage the documentation. They can be called “the doctators”.
[TALK] Simplifying Python Code through the Lens of Functional Programming
by Artem Kislovskiy (material available in his GitHub)
Teach yourself programming in 10 years, by Peter Norvig, is a must read.
So, let’s do some functional programming! Tackle the “problem” of reading a simple .csv
and to compute the average of a column.
We can ask ChatGPT to create some code for us. This code will be used as baseline. We’ll refactor this code according to functional programming.
All the code is available in the author’s GitHub repo.
Functions must do one thing, and to it well. Refactor to create functions like open_csv
and read_column
not like open_and_read_csv
.
Functions should be curried instead of having many, many arguments.
Example: avoid f(x, y, z)
but instead create the function with currying like f(x)(y)(z)
.
Compose the functions using pipes.
Example: avoid f(g(h(x)))
but instead use a pipe
function in this way pipe(f, g, h)(x)
.
To handle errors, refer to Railway Oriented Programming by creating monads : the code runs on the “everything is fine” railway track; if an error is raised, the code will move on the “errors encountered” track. The functions must return a “box”, which can contain a value or can be void; if it contains something, you’re on the “everything is fine” track; if it’s void, you’re on the “errors encountered” track. It really reminds me of Rust’s Option.
While refactoring, you can proceed with TDD and end up with a very clean and clear solution!
Unfortunately, Python doesn’t implement natively all functional programming features, like monads or currying; you must rely on third-party libraries (which the author doesn’t suggest to use in production) or to write yourself the logic.
[WORKSHOP] Calling Rust from Python: A Gentle Introduction to PyO3
by Quazi Nafiul Islam
Rust can interop with C/C++ pretending to be C. So it’s usable by and with Python! PyO3 takes in Rust code and translates it into Python types through the Python’s C-API. Rust uses the ABI, Application Binary Interfaces. Rust mimicks C. Sneaky!
Rust structs and traits are tricky to be exported to Python. But you can keep nice Rust features like safety, …
VSCode suggested extension:
- Rust analyzer
- Rust syntax
- crates
- Even better TOML
- Path Intellisense
Use PyO3 and maturin to develop Python packages with functions written in pure rust.
To add type suggestion for the IDE, use Python’s stub files (see PyO3 docs about .pyi
files)
[KEYNOTE] Scaling Yourself: Make an Impact to Billions
by Daniel Roy Greenfeld - Kraken Tech
The only stupid question is the one you don’t ask.
Follow the 30-min rule: if you can’t figure out something in 30 minutes, ask someone!
Keep in mind when looking for a job to ask: Who does this company help? Who does this company hurt?
You, as programmer, have superpower! You can impact the life of billions people! Continue to code to improve yourself.
ClimateBase is a database of climate-related companies working for tackling the climate change.