My presentations, using Reveal.js (mostly in Portuguese).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

470 lines
18 KiB

<html>
<head>
<meta charset="utf-8" />
<title>Desculpe Python, Não Sou Eu, É Você</title>
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link rel="stylesheet" href="reveal.js/css/reveal.css">
<link rel="stylesheet" href="reveal.js/css/theme/night.css" id="theme">
<!-- Code syntax highlighting -->
<link rel="stylesheet" href="reveal.js/lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<!--[if lt IE 9]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
<style type="text/css" media="screen">
.happy {
color: yellow;
}
.reveal section img {
border: none;
}
.reveal ul.empty {
list-style: none inside;
}
.revel ul.empty li {
display: block;
}
.cursor {
background-color: #666;
color: white;
}
img {
max-height: 90%;
}
td.seen {
font-style: italic;
font-weight: bold;
}
.semi-opaque {
background-color: rgba(0, 0, 0, 0.7);
}
</style>
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-background="_images/dear-john.jpg" data-header>
<h2 class="semi-opaque">
Desculpe Python, Não Sou Eu, É Você
</h2>
</section>
<section>
<h2>Quem?</h2>
</section>
<section data-background="_images/avatar-hd.png">
<div class="semi-opaque">
<h3>Júlio Biason</h3>
</div>
<div class="semi-opaque">
<div>
<ul class="empty">
<li>Programador a 30 anos</li>
<li>Praticante de mototerapia</li>
<li>Trekkie</li>
</ul>
</div>
</div>
</section>
<section>
<h3>JulioBiason.me</h3>
<ul>
<li><a href="https://presentations.juliobiason.me/">Presentations</a></li>
<li><a href="https://blog.juliobiason.me/">Blog</a></li>
<li><a href="https://git.juliobiason.me/">Git</a></li>
<li><a href="https://resume.juliobiason.me/">CV/Resumé</a></li>
<li><a href="https://books.juliobiason.me/">Books</a></li>
</ul>
<p class="fragment">+ <a href="https://functional.cafe/@juliobiason">https://functional.cafe/@juliobiason</a></p>
<p class="fragment">+ julio.biason@pm.me</p>
</section>
<section>
<h3>O Flerte</h3>
</section>
<section>
<!-- C para bolsa, ainda não num relacionamento abusivo -->
<img src="_images/tng-selar.webp" class="stretch">
<aside class="notes">
Então, tava eu lá na univerdade, fazendo minhas
coisinha na bolsa de inicialização científica, vivendo
com C, que apesar de não dar muito certo, e ter seus
momentos meio abusivos, eu respeito pacas até hoje...
</aside>
</section>
<section>
<img src ="_images/tng-duras-sisters.gif" class="stretch">
<aside class="notes">
... e teve momentos em que eu precisava de ajudar pra processar os
resultados desses programas em C, e aí o pessoal me falou do AWK...
... mas AWK era esquisitão, até fazia as coisas que eu
precisava, mas não era uma conversa em que os dois
falavam de forma simples e clara...
</aside>
</section>
<section>
<img src="_images/ds9-ishka.gif" class="stretch">
<aside class="notes">
Também me falaram de Perl, mas só pra ver como ele
conversava, já dava pra ver a gente nunca ia se
entender direito.
</aside>
</section>
<section>
<img src="_images/tng-marina.gif" class="stretch">
<aside class="notes">
... até que alguém falou "Fala ali com Python". E,
nossa, a conversa rolou solta.
</aside>
</section>
<section>
<h3>O Início do Relacionamento</h3>
</section>
<section>
<h4>"Vamos fazer um browser em Python!"</h4>
</section>
<!-- tudo agora é script python -->
<section>
<!-- simulador de hardware, pra entregar projeto antes do resto -->
<img src="_images/graph.png" class="stretch">
<aside class="notes">
Teve um projeto de hardware que eu tava trabalhando na
parte de apresentação dos dados, a parte do hardware e
inteface com a mesma não tava pronta, nós fizemos um
"simulador" das respostas da interface e entregamos o
projeto antes do hardware!
</aside>
</section>
<section>
<h3>Relacionamento Sério</h3>
</section>
<section>
<img src="_images/sydney.jpg" class="stretch">
<aside class="notes">
Em 2007, por causa do nosso relacionamento, a gente foi
parar na Austrália, em Sydney.
</aside>
</section>
<section>
<img src="_images/tilefile.jpg" class="stretch">
<aside class="notes">
A empresa era chamada Tilefile, e a gente trava
trabalhando no backend, antes de Django, antes de
Flask, e fazendo coisas malucas, como guardar os dados
como pickle, e depois adicionando uma camada que lia de
um banco de dados e retornava no mesmo formato do
pickle.
</aside>
</section>
<section>
<img src="_images/mitter.png" class="stretch">
<aside class="notes">
... e, depois de um dia juntos no trabalho, eu chegava
em casa e ficava mais tempo com Python, trabalhando num
cliente para o Twitter, antes de ser X, e mais antes
ainda deles fecharem a API.
</aside>
</section>
<section>
<img src="_images/tng-deanna-ricker-bridge.gif" class="stretch">
<aside class="notes">
Assim, a gente tava o tempo todo junto no trabalho...
</aside>
</section>
<section>
<img src="_images/tng-deanna-riker-off-bridge.gif" class="stretch">
<aside class="notes">
... e em casa.
</aside>
</section>
<section>
<h3>Separação Não Prevista</h3>
</section>
<section>
<img src="_images/snw-chapel.webp" class="stretch">
<aside class="notes">
Aí eu tive que voltar pro Brasil, e a gente teve que se
separar.
O que eu consegui foi um trabalho em PHP, mas por baixo
dos panos eu tentei fazer uma integração de uma
biblioteca em C++ em Python, e aprendi da pior forma o
quão horrível a biblioteca ctypes é.
</aside>
</section>
<section>
<h3>A Volta da Paixão</h3>
</section>
<!-- surgiu a chance de trabalhar junto de novo -->
<!-- ... mas virou objective-c -->
<section>
<img src="_images/ent-tpol.webp" class="stretch"/>
<aside class="notes">
Mas o projeto em Python acabou virando 1 ano de
Objective-C.
</aside>
</section>
<!-- framework em cima do flask -->
<!-- consuela -->
<section>
<img src="_images/consuela-lemon-pledge.gif" class="stretch">
<aside class="notes">
Quando eu finalmente consegui voltar a programar com Python,
fizemos um framework em cima do Flask chamado "Consuela", que
eu fiquei sabendo anos depois que a empresa para qual eu fiz
ainda estava usando.
</aside>
</section>
<!-- Django -->
<section>
<h3>Nova Separação</h3>
</section>
<!-- java -->
<!-- rust do lado -->
<section>
<h3>Mais do Mesmo</h3>
</section>
<!-- django, mas nada de impressionante -->
<!-- rust do lado, de novo -->
<section>
<h3>O Começo das Brigas</h3>
</section>
<!-- Diana Troi e Luxwana Troi -->
<!-- Diana Troi quando perdeu a capacidade de sentir emoções -->
<!-- Múltiplas versões, incluindo não-mantidas -->
<section>
<aside class="notes">
A máquina de testes usa Python 3.6.
Usuários instalam as versões mais novas.
Tem que funcionar em todas.
("Vou usar o Walrus operator! Olha que lindo!" "Não tem Walrus no 3.6")
</aside>
</section>
<!-- distribuição de coisas -->
<!-- packaging? what? exe quebra tudo -->
<section>
<img src="_images/broken-gif-Andy-Samberg.gif" class="stretch">
<aside class="notes">
Install no WSL quebrava pacotes por culpa da versão do Python no sistema.
Gerado EXE (com Nuitka) começou a explodir o Git.
</aside>
</section>
<section>
<p><code>
pip install --break-system-packages
</code></p>
</section>
<section>
<img src="_images/tos-kirk-what.gif" class="stretch">
</section>
<section>
<img src="_images/tng-picard-slow-facepalm.gif" class="stretch">
</section>
<section>
<img src="_images/tos-kirk-slap.gif" class="stretch">
</section>
<section>
<h3>Despedida</h3>
</section>
<!-- rust tá resolvendo tudo de forma melhor, mesmo que mais trabalhoso -->
<section>
<img src="_images/friendship-py-ended.jpg" class="stretch"/>
<aside class="notes">
Mesmo com o trabalho que é fazer, Rust tem resolvido as
coisas de forma muito melhor.
Perdi na sintaxe, ganhei em todos os demais aspectos:
Eu consigo facilmente compilar para qualquer Linux (e
até pra Windows a partir do Linux), eu posso atualizar
a linguagem sem problemas.
</aside>
</section>
<section>
<img src="_images/tng-data-goodbye.gif" class="stretch">
</section>
<section>
<img src="_images/tng-picard-sigh.gif" class="stretch">
</section>
<section>
<h2>Falando sério...</h2>
</section>
<section>
<aside class="notes">
Por sorte eu sei como URLs funcionam, e sei como fazer
uma requisição HTTP autenticada que funciona em
qualquer lugar.
</aside>
</section>
<section>
<!-- ferramentas pra python não estão mais sendo escritas em Python (ruff, uv, Pyright) -->
<ul>
<li><code>ruff</code>: Rust</li>
<li><code>uv</code>: Rust</li>
<li><code>Pyright</code>: JavaScript</li>
</ul>
</section>
<!-- parece estar indo pro lado certo, mas extremamente lento (falta de interesse?) -->
<section>
<ul>
<li>GIL-less Python</li>
<li>JIT hook</li>
</ul>
</section>
<section>
<p>Rust:</p>
<ul>
<li class="fragment">... não me deixa cruzar a rua sem olhar pros dois lados</li>
<li class="fragment">... não me deixa sair de moto sem usar capacete</li>
<li class="fragment">... não me deixa tomar banho se não tiver o tapetinho pra não escorregar no chuveiro</li>
</ul>
</section>
<section>
<strong>... mas é bom ver alguém que tá se preocupando comigo e não que
me deixe ser "porra louca" e me deixe na mão na hora de lidar com
os outros.
</strong>
</section>
<!-- o que acontece quando C++/Java tiver uma interface bacana pra AI/ML/Data Science? -->
<!--
<section>
<p>Ferramentas de ML/AI são em C++.</p>
<p class="fragment">C++ é complicado de programar.</p>
<p class="fragment">Mas como Python é só uma cola...</p>
<p class="fragment"><strong>o que vai acontecer quando
alguém insano o suficiente escrever um Jupyter em C++?
</strong></p>
</section>
-->
<section>
<img src="_images/py-so-2024.png" class="stretch">
</section>
<section>
<img src="_images/so-salary-2024.png" class="stretch">
</section>
<section data-background='_images/thats-all-folks.jpg'>
</section>
</div>
</div>
<script src="reveal.js/lib/js/head.min.js"></script>
<script src="reveal.js/js/reveal.js"></script>
<script>
// Full list of configuration options available at:
// https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: true,
// showNotes: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
// Optional reveal.js plugins
dependencies: [
{ src: 'reveal.js/lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'reveal.js/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'reveal.js/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: 'reveal.js/plugin/zoom-js/zoom.js', async: true },
{ src: 'reveal.js/plugin/notes/notes.js', async: true }
]
});
</script>
</body>
</html>