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

duchess at scala.io #151

Merged
merged 3 commits into from
Apr 25, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
110 changes: 110 additions & 0 deletions docs/_posts/2024/2024-03-31-scala-io-nantes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
---
layout: "post"
author:
- "pauline"
title: "Duchess at Scala.io"
date: "2024-04-02"
categories:
- "code"
- "event"
---

| ![Duchess in Scala.io](/assets/sponsors/scalaio.webp){: width="300"} | Duchess was at Scala.io for the 2024 edition in Nantes |


A couple of weeks ago was the scala conference in Nantes. This article focus of the scala women speakers present at the event.
Copy link

@sludovicdelys sludovicdelys Apr 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Proposition de formulation : "A couple of weeks ago, a significant number of female speakers participated at the Scala.IO conference held in the city of Nantes."

Also Scala.io organizers offered 3 tickets to the Duchess France community.
Copy link

@sludovicdelys sludovicdelys Apr 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Proposition de formulation : "Thankfully, three event tickets were gifted to the Duchess France community, and we took advantage of this opportunity to write and share what we've learned from these speakers."


# Focus on Monica's talk

Great feedback from Monica. She shared with us about her first year of java and gave very good hints.
Copy link

@sludovicdelys sludovicdelys Apr 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Proposition de formulation : "Monica shared with us valuable knowledge that she acquired while learning Scala for the first time".

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is on Scala, not Java!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops, fixed


**Help others to help you**<br/>
Junior people should focus on providing context, goal, and more generally be great communicators.

**Let us fail**<br/>
Let junior developers making and owning mistakes.
Senior people should let junior people (or new comers in the teams) fail so they can take ownership of their mistakes and learn from them. If you're a senior developer don't solve the problem for you're team mates but rather teach the steps to go through to tackle the problem. Enable the team to solve problems, even it takes a little long to solve these problems.
Copy link

@sludovicdelys sludovicdelys Apr 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correction : Senior people should let junior people (or newcomers in the teams) fail so they can take ownership of their mistakes and learn from them. If you're a senior developer don't solve the problem for your teammates but rather teach them the steps to tackle the problem. Enable the team to solve their own problems, even if it takes a little longer.


**Find a community**<br/>
Going in conferences, meetups.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Going to conferences and meetups

Pair programming, mob programming sessions with your team.

🇬🇧 ***My first year in Scala*** <br/>
[![My first year in Scala](https://img.youtube.com/vi/Jyn2l1nhwZE/0.jpg){: width="600"}](https://www.youtube.com/watch?v=Jyn2l1nhwZE)

# Focus on Johanna's and Mehdi's talk

Starting with a few dance steps, Johanna and Mehdi presented [Kapoeira](https://github.com/lectra-tech/kapoeira/).
Based on cucmber-scala, Kapoeira is an open source library which implements acceptance tests on kafka streams.
P4uline marked this conversation as resolved.
Show resolved Hide resolved
It provides a simple language based on Gherkin standards (Given - When - Then) so an automated test can be written by a QA, a PO, or a developer.
If you're looking for high level automated test on kafka stream, you should definitely watch this video.
Plus you will love many references about La Cité de la Peur, a classic french comedy.

🇬🇧🌴 ***Youpi dansons la Kapoeira en testant nos Kafka streams*** 🕺 💃<br/>
[![🌴 Youpi dansons la Kapoeira en testant nos Kafka streams 🕺 💃](https://img.youtube.com/vi/BUQFj2jrGj8/0.jpg){: width="600"}](https://www.youtube.com/watch?v=BUQFj2jrGj8&list=PLjkHSzY9VuL8we5GaQgqWrZSwiKtLM7Cb&index=5)

# Focus on Sophie's talk

If you're not completely comfortable at explaining the concept of contravariance, you should checkout Sophie's talk. She explains this concepts in a very clear way with simple examples.
She gives practical use cases, using an `Animal` type with concrete sub-types.
As a prerequiste you should be comfortable with **substitution**, when you have an `Animal` you can pass an instance of `Dog`,
and with **type classes**, a trait that takes one or more parameters.

#### Invariance

```
trait Rescue[A]:
def adopt(name: String): A
```
There is no +, `Rescue` is invariant in `A`, even though `Dog` is a subtype of `Animal` there is no relation between `Rescue[Dog]` and `Rescue[Animal]`

#### Covariance

```
trait Rescue[+A]:
def adopt(name: String): A
```
With that little + `Rescue` is **covariant** in `A` so if `Dog` is subtype of `Animal`, then `Rescue[Dog]` is a subtype of `Rescue[Animal]`

Then you can write
```
def adopt(name:String)(using rescue: Rescue[Animal]): Animal = rescue.adpot(name)

var poppy = adopt(name = "Poppy")
```
#### Contravariance
```
trait Clinic[-A]:
def examine(partient: A): String
```
With that little - `Clinic` is **contravariant** in `A` so if `Dog` is a subtype of `Animal` then `Clinic[Animal]` is subtype of `Clinic[Dog]`, here the relationship is inverted
Then you can write
```
def examine(dog:Dog)(using clinic:Clinic[Dog]): String = clinic.eximaine(dog)

val medor = Dog("Médor", bred = DogBred.Labrador)

val examintionReport = examine(medor)(using sumon[Clinic[Animal]])
```

🇬🇧 ***Contravariance: intuition building from first principles*** <br/>
[![Contravariance: intuition building from first principles](https://img.youtube.com/vi/A7t3b0kymFM/0.jpg){: width="600"}](https://www.youtube.com/watch?v=A7t3b0kymFM)

# Focus on Olya's talk

Olya shared her experience on Ukraine's Scala community building and about the book club organized on the basis of Intelias, where I currently work.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai essayé de trouver ce qu'étais "Intelias" sans succès. J'ai l'impression que soit il y a un soucis de contexte soit c'est l'orthographe 😄

Copy link

@sludovicdelys sludovicdelys Apr 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Proposition de formulation : Olya shares her exploration of the Ukrainian Scala community and reflects on the lessons learned in the process of community building while setting up a book club within her company Intellias.

Given the war with Russia, it is now physically unsafe for people to gather, so they have created an online community and meet each week to discuss one chapter of the book.
This format allows people who were forced to leave the country, as well as invited guests, to join. In addition, they experimented with different formats and added "Scala Breaks" - small reports with examples of interesting problems or simply a scala of related topics.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Proposition de formulation : This format allows people who were forced to leave the country, as well as guests to join the meetings.

Thus, they have already read 5 books and more than 45 meetings.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thus, they have already read 5 books and held more than 45 meetings.


🇬🇧 ***Ukraine's Scala community building lessons*** <br/>
[![Ukraine's Scala community building lessons](https://img.youtube.com/vi/6skPn0evEE8/0.jpg){: width="600"}](https://www.youtube.com/watch?v=6skPn0evEE8)


It was nice to meet scala ladies, and there is now a new channel #functional_programming in our slack!

Let's finish with the traditional Duchess picture.

![The traditional Duchess picture!](/assets/2024/03/2024-03-30-scala-io/traditional-duchess-picture.jpg){: width="300"}

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading