<?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: Olive Lawal</title>
    <description>The latest articles on DEV Community by Olive Lawal (@ojcodecanvas).</description>
    <link>https://dev.to/ojcodecanvas</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4025990%2Fa412065e-e9db-421f-b86d-c4d836449cdd.jpg</url>
      <title>DEV Community: Olive Lawal</title>
      <link>https://dev.to/ojcodecanvas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ojcodecanvas"/>
    <language>en</language>
    <item>
      <title>Passion Pulse: A Dockerized Java 21 Microservice Powered by Google Gemini AI</title>
      <dc:creator>Olive Lawal</dc:creator>
      <pubDate>Sun, 12 Jul 2026 22:36:53 +0000</pubDate>
      <link>https://dev.to/ojcodecanvas/passion-pulse-a-dockerized-java-21-microservice-powered-by-google-gemini-ai-2lng</link>
      <guid>https://dev.to/ojcodecanvas/passion-pulse-a-dockerized-java-21-microservice-powered-by-google-gemini-ai-2lng</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-07-09"&gt;Weekend Challenge: Passion Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;Passion Pulse API&lt;/strong&gt;—a lightweight, containerized Java 21 microservice. You send it a piece of text about something you love, and it uses Google's Gemini 3.5 Flash AI to analyze your words, give your passion a score out of 100, and generate a custom "hype comment."&lt;br&gt;
As someone transitioning from IT Ops to DevOps, my true passion right now is infrastructure. So, I didn't build a UI. I built a backend API, wrapped it in a multi-stage Docker container, and made sure the AI API key is securely injected via environment variables. &lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhoaqu9gpq982vvxt48mo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhoaqu9gpq982vvxt48mo.png" alt="Terminal output demonstrating a successful API call. A curl POST request sends a text about coding to the Passion Pulse API, which responds with a JSON object containing a passionScore of 98 and a customized hypeComment from Google Gemini AI" width="489" height="69"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;{{ github &lt;a href="https://github.com/OJCodeCanvas/passion-pulse-api" rel="noopener noreferrer"&gt;https://github.com/OJCodeCanvas/passion-pulse-api&lt;/a&gt; }}&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I wanted to stick to my current learning path, so I built this using Java 21 (specifically using &lt;code&gt;Records&lt;/code&gt;for clean data transfer) and Spring Boot 3.2's new &lt;code&gt;RestClient&lt;/code&gt;.&lt;br&gt;
The Tech Journey:&lt;br&gt;
Integration: I used the &lt;code&gt;gemini-flash-latest&lt;/code&gt;endpoint. Google has been rapidly deprecating their 1.5 and 2.5 models, so using the auto-updating alias ensures the app routes to the newest GA model without breaking!&lt;br&gt;
Parsing: Instead of brittle string manipulation, I used Spring's built-in Jackson &lt;code&gt;ObjectMapper&lt;/code&gt; to safely extract the JSON payload from Google's deeply nested API response.&lt;br&gt;
DevOps Focus: I wrote a multi-stage &lt;code&gt;Dockerfile&lt;/code&gt;(Maven build phase -&amp;gt; JRE Alpine runtime phase) to keep the final image as tiny as possible.&lt;br&gt;
Security: The app requires a Gemini API key, but I configured it to read from &lt;code&gt;${GEMINI_API_KEY}&lt;/code&gt;. You pass the key at runtime via &lt;code&gt;docker run -e ...&lt;/code&gt; so it never touches the source code or Git history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best Use of Google AI&lt;/strong&gt; (I used the Gemini 3.5 Flash model via the native REST API to evaluate the user's text and generate the creative response JSON)&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
    </item>
    <item>
      <title>From Resetting Passwords to Containerizing Java: My Pivot to DevOps</title>
      <dc:creator>Olive Lawal</dc:creator>
      <pubDate>Sun, 12 Jul 2026 12:08:47 +0000</pubDate>
      <link>https://dev.to/ojcodecanvas/from-resetting-passwords-to-containerizing-java-my-pivot-to-devops-1mhg</link>
      <guid>https://dev.to/ojcodecanvas/from-resetting-passwords-to-containerizing-java-my-pivot-to-devops-1mhg</guid>
      <description>&lt;p&gt;For 4 years, I lived in the world of IT Operations.&lt;br&gt;
My days were spent handling incident response, managing data lifecycles, and making sure systems stayed online. I learned how to troubleshoot under pressure, talk to frustrated users, and keep the business running.&lt;br&gt;
But I had a lingering frustration: I was always fixing other people's code. I never got to build it. And more importantly, I was fixing problems manually that I knew could be automated.&lt;br&gt;
So, I decided to make a massive pivot. I went back to university (VILNIUS TECH) and recently started a Java Engineering internship at Coherent Solutions.&lt;br&gt;
My goal isn't just to become a Java developer. My goal is to bridge the gap between Development and Operations-&lt;strong&gt;DevOps&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In my first few weeks at Coherent, we started learning about enterprise architecture. But the moment that truly clicked for me was when I built my first &lt;strong&gt;Docker image&lt;/strong&gt; for our project.&lt;br&gt;
In my past IT life, deploying an app was a nightmare. "It works on my machine!" was a constant joke (and a constant headache for the Ops team). Setting up environments, installing the right Java version, configuring databases—it was manual, error-prone, and boring.&lt;br&gt;
Then I wrote a &lt;code&gt;Dockerfile&lt;/code&gt;.&lt;br&gt;
I packaged our Java application and its dependencies into a single, isolated container. Suddenly, I realized: This is how you solve the &lt;em&gt;"works on my machine"&lt;/em&gt; problem forever.&lt;br&gt;
As someone who used to be the guy manually fixing those environment issues, writing a few lines of code to completely automate that process felt like a superpower.&lt;/p&gt;

&lt;p&gt;I'm starting this blog to document my journey in real-time. I'm currently diving deep into:&lt;br&gt;
🔹 Java 21 (the newest LTS—highly recommend checking out Virtual Threads!)&lt;br&gt;
🔹 Spring Boot &amp;amp; enterprise backend architecture&lt;br&gt;
🔹 Docker &amp;amp; containerization&lt;br&gt;
🔹 Next up: CI/CD pipelines and Infrastructure as Code (Terraform)&lt;br&gt;
If you are currently stuck in IT Support or SysAdmin roles and dreaming of becoming a DevOps or Software Engineer—you aren't alone. Let's learn together.&lt;br&gt;
Question for the veterans: For those who made the jump from IT Ops to DevOps, what was the first automation tool or concept that made you realize you were on the right path? Let me know in the comments&lt;/p&gt;

</description>
      <category>devops</category>
      <category>beginners</category>
      <category>docker</category>
      <category>java</category>
    </item>
  </channel>
</rss>
