Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Euopython2024 lightning talk renaming #1

Merged
merged 3 commits into from
Jul 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
11 changes: 11 additions & 0 deletions .presentations/08072024_renaming_on_steroids/basket.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from __future__ import annotations


def view_basket(basket: dict[str, float]) -> None:
if basket:
print("\nCurrent Basket:")
for item, cost in basket.items():
print(f"{item}: ${cost:.2f}")
print(f"Total: ${sum(basket.values()):.2f}")
else:
print("Your basket is empty.")
34 changes: 34 additions & 0 deletions .presentations/08072024_renaming_on_steroids/dish.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
class Knedlik:
def __init__(self, name: str):
self.name = name
self.is_delicious = True
self.is_healthy = False

def __repr__(self):
is_delicious_str = "😋 delicious" if self.is_delicious else "😞 not delicious"
is_healthy_str = "🥗 healthy" if self.is_healthy else "🍄 not healthy"
return f"<🥟 {self.name} 🥟, is {is_delicious_str} and {is_healthy_str}>"

def get_super_funny_name():
return "Knedleak"

def main():
answer = input(f"Do you want a 🥟 {get_super_funny_name().lower()} 🥟? [yes/of_course] > ")
print()

if answer.strip().lower() in ("yes", "of_course"):
czech_dumpling = Knedlik(name=get_super_funny_name())
print(f"🥟 {Knedlik.__name__} 🥟 is ready for you!")
print(czech_dumpling)
else:
knedlist = [
Knedlik(name="Houskový knedlík"),
Knedlik(name="Bramborový knedlík"),
Knedlik(name="Karlovarský knedlík"),
Knedlik(name="Ovocný knedlík"),
]
knedlist_str = ",\n".join(f"🥟 {knedlik.name}" for knedlik in knedlist)
print(f"If you change your mind, we have these knedlíky for you:\n{knedlist_str}.")

if __name__ == "__main__":
main()
214 changes: 214 additions & 0 deletions .presentations/08072024_renaming_on_steroids/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,214 @@
<!doctype html>
<html lang="en">

<head>
<meta charset="utf-8">
<title>Renaming on steroids with AI code assistants</title>
<link rel="icon" type="image/x-icon"
href="https://orstedcdn.azureedge.net/-/media/www/images/corp/graphics/icons/favicon.ico">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/5.1.0/reveal.min.css">

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/5.1.0/theme/simple.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/default.min.css">
<!-- <link rel="preload" href="https://orstedcdn.azureedge.net/Assets_/dist/fonts/OrstedSans-Regular.woff2" as="font"
type="font/woff2"> -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/default.min.css">
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-light.min.css" />
<style>
:root {
--main-bg-color: white;
--main-text-color: black;
--heading-color: #4099da;
--link-color: #4099da;
}

.reveal {
background-color: var(--main-bg-color);
color: var(--main-text-color);
font-family: "Orsted Sans", "Helvetica Neue", Arial, sans-serif !important;
}

.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
color: var(--heading-color);
font-family: "Orsted Sans", "Helvetica Neue", Arial, sans-serif !important;
}

.reveal a {
color: var(--link-color);
}

.reveal .slide-background {
padding-bottom: 50px;
}

.reveal footer.footer {
position: absolute;
bottom: var(--r-block-margin);
left: var(--r-block-margin);
right: calc(var(--r-block-margin) + 2 * 3.6em);
height: var(--r-main-font-size);
z-index: 1000;
display: flex;
align-items: center;
justify-content: space-between;

font-size: calc(var(--r-main-font-size) * 0.4);
}

.reveal footer.footer img {
height: var(--r-main-font-size);
width: auto;
object-fit: contain;
}

@media print {
.reveal .footer {
position: fixed;
}
}

.reveal pre.small-code {
font-size: 0.4em;
}
</style>
</head>

<body>
<div class="reveal">
<footer class="footer">
<a href="https://orsted.com">
<img src="https://orstedcdn.azureedge.net/-/media/www/images/corp/graphics/icons/favicon.ico" alt="Orsted logo">
</a>

<span>Piotr Grędowski, Renaming on steroids with AI code assistants, 11.07.2024</span>
</footer>
<div class="slides">
<section>
<h1>Renaming on steroids</h1>
<p>with AI code assistants</p>
</section>
<section>
<h3>About me:</h3>
<div style="column-count: 1;">
<div style="text-align: left">
<p>👨‍💻 Piotr Grędowski</p>
<p>🐍 Full Stack Developer at <a href="https://orsted.com">
<img height="40" style="margin: 0"
src="https://orstedcdn.azureedge.net/-/media/www/images/corp/graphics/logos/orsted-logo/orstedlogo_svg.svg" />
<!-- <img height="150" style="margin: 0"
src="https://media.licdn.com/dms/image/D4E12AQE7PyImc-uXxQ/article-cover_image-shrink_720_1280/0/1707388600031?e=1726099200&v=beta&t=Mwe_WVt1bpK1XH9sUH37oVcDNuJzs2Ovuu5VGGDXVw8" /> -->
</a>
<p>🌍 Warsaw, Poland</p>
<p style="font-size: 1em;">⛵, 🚴, 3D 🖨️</p>
</div>
</div>
</section>

<section>
<h3>Simple renaming, just variable</h3>
<!-- div two columns -->
<div>
<pre class="small-code"><code data-trim data-noescape class="language-python">
vol, height, width = 200, 10, 20
Number = int | float

def calculate_depth(vol: Number, height: Number, width: Number) -> Number:
return vol / (height * width)

print(
f"Having volume {vol} and height {height} and width {width} "
f"we get depth {calculate_depth(vol, height, width)}",
)

</code></pre>
<p style="font-size: 0.5em" class="fragment">Two renames later</p>
<pre class="fragment small-code"><code data-trim data-noescape class="language-python">
volume, height, width = 200, 10, 20
Number = int | float

def calculate_depth(volume: Number, height: Number, width: Number) -> Number:
return volume / (height * width)

print(
f"Having volume {volume} and height {height} and width {width} "
f"we get depth {calculate_depth(volume, height, width)}",
)
</code></pre>
</div>
<aside class="notes">
</aside>
</section>
<section>
<h3>Renaming more complicated, not only variable</h3>
<div>
<pre><code data-trim data-noescape class="language-python">
def view_basket(basket: dict[str, float]) -> None:
if basket:
print("\nCurrent Basket:")
for item, cost in basket.items():
print(f"{item}: ${cost:.2f}")
print(f"Total: ${sum(basket.values()):.2f}")
else:
print("Your basket is empty.")

</code></pre>
<pre class="fragment"><code data-trim data-noescape class="language-python">
def view_cart(cart: dict[str, float]) -> None:
if cart:
print("\nCurrent Cart:")
for item, cost in cart.items():
print(f"{item}: ${cost:.2f}")
print(f"Total: ${sum(cart.values()):.2f}")
else:
print("Your cart is empty.")

</code></pre>
</div>
<aside class="notes">
</aside>
</section>

<section>
<h3>Renaming on steroids, changing the context</h3>
<video controls>
<source src="./_assets/knedlik_to_pasta.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<aside class="notes">
I don't like knedliky anymore. I am goint to the Italy. Convert this code to be about pasta not knedliky.

🤌
</aside>
</section>
<section>
<h1>Thank you!</h1>
<aside class="notes">
</aside>
</section>

</div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/5.1.0/reveal.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/5.1.0/plugin/highlight/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/5.1.0/plugin/notes/notes.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/5.1.0/plugin/markdown/markdown.min.js"></script>
<script>
Reveal.initialize({
controls: true,
progress: true,
center: true,
hash: true,
plugins: [RevealHighlight, RevealNotes, RevealMarkdown]
});

</script>
</body>

</html>
Empty file.
10 changes: 10 additions & 0 deletions .presentations/08072024_renaming_on_steroids/volume.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
vol, height, width = 200, 10, 20
Number = int | float

def calculate_depth(vol: Number, height: Number, width: Number) -> Number:
return vol / (height * width)

print(
f"Having volume {vol} and height {height} and width {width} "
f"we get depth {calculate_depth(vol, height, width)}",
)
5 changes: 4 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,15 @@ dev-dependencies = [
"mypy>=1.4.1",
"httpx>=0.24.1",
"ipython>=8.12.2",
"pytest-xdist>=3.5.0",
]
excluded-dependencies = ["uvloop"]

[tool.hatch.metadata]
allow-direct-references = true

[tool.hatch.build.targets.wheel]
packages = ["src/python_samples"]
# Formatters and linters

[tool.black]
Expand Down Expand Up @@ -101,7 +104,7 @@ select = [
"tests/**/*.py" = ["PLR2004"]

[tool.ruff.isort]
known-first-party = ["src"]
known-first-party = ["pytest_samples"]
force-single-line = true

[tool.mypy]
Expand Down
Loading
Loading