<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sebastien Blanc</title>
    <description>The latest articles on DEV Community by Sebastien Blanc (@sebastienblanc).</description>
    <link>https://dev.to/sebastienblanc</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F988344%2Fa7e7cd2a-40b0-42ea-ad7c-610be3cc17fe.jpeg</url>
      <title>DEV Community: Sebastien Blanc</title>
      <link>https://dev.to/sebastienblanc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sebastienblanc"/>
    <language>en</language>
    <item>
      <title>Java &amp; GenAI : The Ultimate Developer's joy with Quarkus, Langchain4j and Ollama</title>
      <dc:creator>Sebastien Blanc</dc:creator>
      <pubDate>Tue, 05 Mar 2024 19:05:21 +0000</pubDate>
      <link>https://dev.to/sebastienblanc/java-genai-the-ultimate-developers-joy-with-quarkus-langchain4j-and-ollama-179e</link>
      <guid>https://dev.to/sebastienblanc/java-genai-the-ultimate-developers-joy-with-quarkus-langchain4j-and-ollama-179e</guid>
      <description>&lt;p&gt;This is the companion blog for this video &lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/TYH95_Vzvzw"&gt;
&lt;/iframe&gt;
.&lt;/p&gt;

&lt;p&gt;In this short post I will show you how to get started with Quarkus, Langchain4j and Ollama to set up your local dev environment to developer GenAI applications. Ready ? Let's go ! &lt;/p&gt;
&lt;h2&gt;
  
  
  Installing Ollama
&lt;/h2&gt;

&lt;p&gt;Ollama is one of those magic those that makes developers happy, basically you install it and then you can run LLMs locally, it has also a embedded web server so that you make requests to it, just like you would do with OpenAI. &lt;/p&gt;

&lt;p&gt;Head over to &lt;a href="https://ollama.com/"&gt;Ollama&lt;/a&gt;and follow the installation instructions. &lt;/p&gt;

&lt;p&gt;Open a terminal and type : &lt;/p&gt;

&lt;p&gt;&lt;code&gt;ollama list&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It will list you the LLMs that are installed locally on your computer. You can easily add a new LLM by doing for instance :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ollama pull mistral:latest&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Check &lt;a href="https://ollama.com/library"&gt;the model page&lt;/a&gt; to see what is available, it's that easy ! &lt;/p&gt;
&lt;h2&gt;
  
  
  Creating the Quarkus project
&lt;/h2&gt;

&lt;p&gt;Your Quarkus app will need for now only 2 extensions : &lt;code&gt;quarkus-resteasy-reactive&lt;/code&gt; and &lt;code&gt;quarkus-langchain4j-ollama&lt;/code&gt; , you can also use this &lt;a href="https://code.quarkus.io/?g=org.sebi&amp;amp;a=fun-with-ai&amp;amp;e=resteasy-reactive&amp;amp;e=io.quarkiverse.langchain4j%3Aquarkus-langchain4j-ollama&amp;amp;extension-search=origin:platform%20langchain"&gt;link&lt;/a&gt; and click on the big blue button "Generate your application" &lt;/p&gt;

&lt;p&gt;Once unzipped, open your project in your favorite IDE. &lt;/p&gt;
&lt;h3&gt;
  
  
  First steps with Langchain4j and Quarkus
&lt;/h3&gt;

&lt;p&gt;We need to define in the properties which LLM we will be using, open your &lt;code&gt;application.properties&lt;/code&gt; and add this line :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;quarkus.langchain4j.ollama.chat-model.model-id&lt;span class="o"&gt;=&lt;/span&gt;llama2:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let's create our first AI Service, create a new interface called &lt;code&gt;MyAIService.java&lt;/code&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;
&lt;span class="kn"&gt;package&lt;/span&gt; &lt;span class="nn"&gt;org.sebi&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;dev.langchain4j.service.UserMessage&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;io.quarki&lt;/span&gt;
&lt;span class="n"&gt;verse&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;langchain4j&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;RegisterAiService&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="nd"&gt;@RegisterAiService&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;MyAIService&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
     &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;chat&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;@UserMessage&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important thing to notice here is the &lt;code&gt;@RegisterAiService&lt;/code&gt; annotation, this indicates to Quarkus that when calling the method &lt;code&gt;chat&lt;/code&gt; it will be using the LLM that we defined in the properties. &lt;/p&gt;

&lt;p&gt;Run your app : &lt;code&gt;mvn quarkus:dev&lt;/code&gt; , this will start your application in dev mode. &lt;/p&gt;

&lt;p&gt;Once it's running, press &lt;code&gt;d&lt;/code&gt; in the terminal to open the devUI : &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgvfgszg93kr9fcxnjsln.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgvfgszg93kr9fcxnjsln.png" alt="Image description" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You should see the langchain4j widget containing a link called &lt;code&gt;chat&lt;/code&gt;, you can click on it and it will bring you to an interface where can prompt your LLM ! &lt;/p&gt;

&lt;p&gt;At any point, you can change the model in the properties, you can also enable logging for the outgoing requests to see what is exactly sent to the LLM :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;quarkus.langchain4j.ollama.chat-model.model-id&lt;span class="o"&gt;=&lt;/span&gt;llama2:latest
quarkus.langchain4j.ollama.log-requests&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's pretty cool, isn't it ? &lt;/p&gt;

&lt;h3&gt;
  
  
  Exposing our AI Service as a rest endpoint
&lt;/h3&gt;

&lt;p&gt;The DevUI is useful but now we want to make it possible to access our LLM from a rest endpoint, we already have the &lt;code&gt;resteasy-reactive&lt;/code&gt; extension and you should also have already a resource class called &lt;code&gt;GreetingResource&lt;/code&gt; , change the content with :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;package&lt;/span&gt; &lt;span class="nn"&gt;org.sebi&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;jakarta.inject.Inject&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;jakarta.ws.rs.Consumes&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;jakarta.ws.rs.POST&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;jakarta.ws.rs.Path&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;jakarta.ws.rs.Produces&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;jakarta.ws.rs.core.MediaType&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="nd"&gt;@Path&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/chat"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;GreetingResource&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nd"&gt;@Inject&lt;/span&gt;
    &lt;span class="nc"&gt;MyAIService&lt;/span&gt; &lt;span class="n"&gt;myAIService&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nd"&gt;@POST&lt;/span&gt;
    &lt;span class="nd"&gt;@Produces&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;MediaType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;TEXT_PLAIN&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nd"&gt;@Consumes&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;MediaType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;TEXT_PLAIN&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;hello&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;myAIService&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;chat&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we simply inject our AI Service and call it in our POST method. &lt;/p&gt;

&lt;p&gt;Try it out with this curl command :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: text/plain'&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'Tell me a joke'&lt;/span&gt; http://localhost:8080/chat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I got this one :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sure, here's one:

Why don't scientists trust atoms?
Because they make up everything!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Adding a system prompt
&lt;/h3&gt;

&lt;p&gt;Let's fine tune our prompt by providing a system message. Usually you can use this to define how the chat bot must behave. Go to your AI Service and add this annotation :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;     &lt;span class="nd"&gt;@SystemMessage&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"You are a funny bot and always reply with a poem!"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;   
     &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;chat&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;@UserMessage&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Try your curl command again and it should reply with a joke in the form of a poem ! &lt;/p&gt;

&lt;p&gt;You can change as you want the system prompt to experiment, change the model, all of this without having to stop&amp;amp;start your app because you are running in dev mode ! &lt;/p&gt;

&lt;p&gt;That all for today, next time we will explore how to add memory to our bot ! &lt;/p&gt;

</description>
      <category>genai</category>
      <category>quarkus</category>
      <category>langchain4j</category>
      <category>ollama</category>
    </item>
    <item>
      <title>It's rough out there ...</title>
      <dc:creator>Sebastien Blanc</dc:creator>
      <pubDate>Sun, 11 Dec 2022 19:55:22 +0000</pubDate>
      <link>https://dev.to/sebastienblanc/its-rough-out-there--3gfo</link>
      <guid>https://dev.to/sebastienblanc/its-rough-out-there--3gfo</guid>
      <description>&lt;p&gt;&lt;em&gt;It’s rough out there&lt;/em&gt;, this is how &lt;a href="https://twitter.com/mattstratton" rel="noopener noreferrer"&gt;Matty&lt;/a&gt; started his &lt;a href="https://speaking.mattstratton.com/c7HCQ7" rel="noopener noreferrer"&gt;closing keynote&lt;/a&gt; of DevRelCon 2022 in Prague. This was also &lt;a href="https://twitter.com/RabbiGreenberg" rel="noopener noreferrer"&gt;Ben&lt;/a&gt;’s starting point in his talk &lt;em&gt;&lt;a href="https://t.co/dMNhD81Ox9" rel="noopener noreferrer"&gt;Measuring DevRel during a downtown&lt;/a&gt;&lt;/em&gt;. We all know how hard it is to measure the impact of a DevRel team inside an organisation, and especially in those moments we might be an easy target when it comes to cutting down costs … &lt;/p&gt;

&lt;p&gt;It’s rough out there but after those 2 days of conferences I feel energised, confident and motivated like there is no tomorrow. It was my first time attending a DevRelCon and to be honest I was a bit skeptical before joining, a bunch of DevRel people gathering ? To do what ? Is it worth it ? Shouldn’t we all be there on the front now, doing our job ? But I was wrong, completely wrong and sometimes I love being wrong. During those two days I saw so many inspiring talks, had so many great conversations, made some many new connections that it felt really like one of the best personal investment for me in 2022 and by transitivity a good investment for my company. &lt;/p&gt;

&lt;p&gt;Ben says “&lt;em&gt;The long term viability of a DevRel team is found in its ability to show value across the organization&lt;/em&gt;” but how do you do this in an effective manner ? There are some really pragmatic actionable things that you can easily implement that were presented during those 2 days and I will come back to this later in this post but before let me focus on Ben’s crucial statement “&lt;em&gt;What is your team’s origin story?&lt;/em&gt;”.  Why does your DevRel team exist in your company ? As a team, try to remember this story and while you may have started  a lot of different initiatives since then it’s maybe time to return to the origin path and focus on that because this will have the most impact. That origin story also reminds me a bit of what Simon Sinek explains in his book &lt;em&gt;&lt;a href="https://simonsinek.com/books/start-with-why/" rel="noopener noreferrer"&gt;Start with Why&lt;/a&gt;&lt;/em&gt;. &lt;br&gt;
Choose metrics that are specific, achievable, realistic and the most important part : Tell your organization about your achievements, share it, make it visible, even sometimes brag a bit about when you think it deserves it ! &lt;/p&gt;

&lt;p&gt;So let’s go back to some fundamentals, and we as passionate DevRel people, there is one thing we love to do and which is central in our job : Building demos ! In his talk &lt;em&gt;Beyond the kitchen sink: making the case for small demos&lt;/em&gt;, &lt;a href="https://twitter.com/_phzn" rel="noopener noreferrer"&gt;Kevin&lt;/a&gt; reminds us of all the different types of demos that we can build, going from the kitchen sink demo that shows everything to the really specific use-case focused demo. He also points out all the potential risks that these demos can have, one that particularly resonated to me was the risk of “Use-case Lock-in” where ”&lt;em&gt;Demos intertwined with an overly-specific use case might make it difficult to abstract value for other use cases.&lt;/em&gt;”. &lt;br&gt;
Also how far does your demo need to go ? All that complicated code that you had to add and which is not related to your product/API might be an obstacle, because you need to explain these lines of code while “&lt;em&gt;THE goal is to teach devs how to use your product&lt;/em&gt;”. This is also a challenge we are facing right now in our team. Kevin’s proposition is to take as an example the “Atomic Design” methodology, primarily focused on building interfaces but which can be applied for building demos. He explains it way better than me in his &lt;a href="https://lws.io/timeline/2022/12/atomic-demos/" rel="noopener noreferrer"&gt;blogs post&lt;/a&gt; and I really recommend you to read it.&lt;/p&gt;

&lt;p&gt;“&lt;em&gt;Blog posts and stickers are not enough&lt;/em&gt;” said Don in his really inspiring talk (more on this later) but it’s also true for demos, it’s pretty obvious but we need more than those to make an impact, to create, grow a community … Community is your audience, and why not grow your audience with your non-IT skills ? This is what &lt;a href="https://twitter.com/marcduiker" rel="noopener noreferrer"&gt;Marc&lt;/a&gt; showed us during his talk &lt;em&gt;&lt;a href="https://speakerdeck.com/marcduiker/draw-an-audience-with-your-non-it-skills-to-build-your-personal-brand" rel="noopener noreferrer"&gt;Draw an audience with your non-IT skills to build your personal brand&lt;/a&gt;&lt;/em&gt;, again this really resonated to me since I’m doing that a lot, you might wonder what is my non-IT skill ? Well, it’s doing crazy/funny/absurd short videos where I cover songs replacing the lyrics with IT related stuff, like &lt;em&gt;&lt;a href="https://twitter.com/sebi2706/status/1459204115481911310" rel="noopener noreferrer"&gt;Highway to Helm&lt;/a&gt;&lt;/em&gt; , &lt;em&gt;&lt;a href="https://twitter.com/sebi2706/status/1278346726299049985" rel="noopener noreferrer"&gt;Killing in the namespace&lt;/a&gt;&lt;/em&gt; or &lt;em&gt;&lt;a href="https://twitter.com/sebi2706/status/1361746282390425605" rel="noopener noreferrer"&gt;Come as a jar&lt;/a&gt;&lt;/em&gt; … &lt;/p&gt;

&lt;p&gt;And since we talk about community, there were several talks specific to this topic. It was really interesting to hear Ully or &lt;a href="https://twitter.com/gingy_love" rel="noopener noreferrer"&gt;Alena&lt;/a&gt; speaking about how to build a community champions program, a lot of great tips, like starting small, the importance of the type of swag, the dashboards etc … &lt;br&gt;
If done well, you will turn each of your community members into dev advocates and this is on you can scale your activity, because as we all know, scaling DevrRel is hard. &lt;a href="https://twitter.com/karinwolok" rel="noopener noreferrer"&gt;Karin&lt;/a&gt; had an awesome talk on this where she basically told us that one way of doing this is by asking each community member/user to do a little bit more. She showed us the different types of users that you have, like a lurker or for instance an active contributor, on their level they all contribute in one way or the other, put a “like” on a tweet is already a contribution, if this person can next time comment  on this tweet, well, then you are already scaling …&lt;/p&gt;

&lt;p&gt;Be kind to your community, be respectful, this sounds obvious but actually doing this in the long term will have a concrete effect on human beings : it will release a really powerful neurotransmitter called oxytocin. “&lt;em&gt;Oxytocin is literally Love&lt;/em&gt;”, “&lt;em&gt;Oxytocin is literally Community&lt;/em&gt;”, these were some of the powerful quotes that Don delivered to us during the first closing talk. It was really inspiring and also hard to explain here in a blog post, so I can’t wait to have the replay and share it with you. &lt;/p&gt;

&lt;p&gt;Community is not just the outside world, your company is also a community, and we as DevRel must do exactly the same thing internally than we do it externally. This can take the really concrete form of setting up a dedicated internal advocacy team, as &lt;a href="https://twitter.com/AmyStrings" rel="noopener noreferrer"&gt;Amy&lt;/a&gt; and &lt;a href="https://twitter.com/afzaalvirgoboy" rel="noopener noreferrer"&gt;Afzaal&lt;/a&gt; from Adyen explained to us, offering a first class onboarding experience, moving knowledge silos into open and standardized documentation … &lt;br&gt;
Your internal community is not just the developers : marketing, sales, product … Matty, in his closing keynote, encouraged us to build relationships with those departments as well. It's crucial, and you will learn a lot about your own company while creating new opportunities. For instance, do you have an important message to deliver ? Ask your marketing team for help, they know better than no one how to do this. &lt;/p&gt;

&lt;p&gt;This is it for now, maybe I will do a second post for some of the other talks that I saw but this was what was fresh in my mind and I wanted to write it down as quickly as possible. As I said in the intro, this conference was a blast for me and gave me so much food for thought and as always it was the opportunity to meet so many nice people (and this includes meeting for the first time part of my awesome team at Aiven !).   &lt;/p&gt;

</description>
      <category>gratitude</category>
    </item>
  </channel>
</rss>
