<?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: Giovanni Mazzuoccolo</title>
    <description>The latest articles on DEV Community by Giovanni Mazzuoccolo (@giovannimazzuoccolo).</description>
    <link>https://dev.to/giovannimazzuoccolo</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%2F63162%2Fd97843a9-8ec7-4222-87ef-421583dba5f1.jpeg</url>
      <title>DEV Community: Giovanni Mazzuoccolo</title>
      <link>https://dev.to/giovannimazzuoccolo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/giovannimazzuoccolo"/>
    <language>en</language>
    <item>
      <title>I build (not really, Google AI studio did) an app to track babies sleep</title>
      <dc:creator>Giovanni Mazzuoccolo</dc:creator>
      <pubDate>Sun, 21 Sep 2025 16:31:10 +0000</pubDate>
      <link>https://dev.to/giovannimazzuoccolo/i-build-not-really-google-ai-studio-did-an-app-to-track-babies-sleep-56cp</link>
      <guid>https://dev.to/giovannimazzuoccolo/i-build-not-really-google-ai-studio-did-an-app-to-track-babies-sleep-56cp</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is my submission for &lt;a href="https://dev.to/deved/build-apps-with-google-ai-studio"&gt;DEV Education Track: Build Apps with Google AI Studio&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Building A Cute, AI-Powered Baby Sleep App with Google's AI Studio
&lt;/h1&gt;

&lt;p&gt;I created "Nap Catcher," a simple app to track my baby's sleep and get AI-powered predictions for their next nap. The goal was to build a tool that makes life easier for new parents, offering smart predictions for a happier baby and a more rested you. Of course I can't promise that it works, every baby is different, but it was fun to &lt;del&gt;build&lt;/del&gt; prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  What &lt;del&gt;I Built&lt;/del&gt; AI built
&lt;/h2&gt;

&lt;p&gt;I used Google's AI Studio to generate a simple, cute mobile app. My key prompts were to "create a cute and simple app to track a baby's sleep patterns" and "predict their next nap time with a touch of AI magic." I also asked for features like logging sleep times and displaying smart predictions.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;&lt;a href="https://ai.studio/apps/drive/1PDuVAGIPRlMMZmx3mtyiPy-k51ggiTe-" rel="noopener noreferrer"&gt;You can play with the demo here!&lt;/a&gt;&lt;/strong&gt;&lt;/p&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.amazonaws.com%2Fuploads%2Farticles%2F8o1ux8e4chxr52qipz4r.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.amazonaws.com%2Fuploads%2Farticles%2F8o1ux8e4chxr52qipz4r.png" alt="A screenshot from the app" width="800" height="653"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The app features a clean, calming home screen with a large button to start and stop the sleep timer. A sleep log tracks all past naps, and the AI's prediction for the next nap time is displayed prominently. The interface is designed to be intuitive and easy to use, even when you're sleep-deprived.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience
&lt;/h2&gt;

&lt;p&gt;I was surprised that the AI picked React and Tailwind CSS as the libraries and not Angular, especially since AI Studio and Angular are both built by Google. I had explicitly asked the AI to make a "cute" app, because I wanted to avoid the look of a standard dashboard. Fortunately, the result was exactly what I had hoped for: an app with a reassuring and easy-to-use interface that feels perfect for a new parent. This project showed me how powerful and accessible AI development tools have become.&lt;/p&gt;

&lt;p&gt;However, I see AI cheating sometimes 👀&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;useEffect(() =&amp;gt; {
    const fetchPrediction = async () =&amp;gt; {
      setIsLoading(true);
      const message = await getPredictionMessage(predictedNapTime, avgSleepDuration);
      setPredictionMessage(message);
      setIsLoading(false);
    };
    if (avgWakeDuration &amp;gt; 0) {
      fetchPrediction();
    }
  // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [lastWakeUpTime, avgWakeDuration, avgSleepDuration]); // We only want to refetch if the core data changes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I wouldn't disable eslint, but fix the code to have a cleaner and 100% bug free approach.&lt;/p&gt;

&lt;p&gt;But I am very impressed and happy for the result!&lt;/p&gt;

</description>
      <category>deved</category>
      <category>learngoogleaistudio</category>
      <category>ai</category>
      <category>gemini</category>
    </item>
    <item>
      <title>What we can learn from the faulty CrowdStrike update</title>
      <dc:creator>Giovanni Mazzuoccolo</dc:creator>
      <pubDate>Sun, 21 Jul 2024 20:47:38 +0000</pubDate>
      <link>https://dev.to/giovannimazzuoccolo/what-we-can-learn-from-the-faulty-crowdstrike-update-2ie</link>
      <guid>https://dev.to/giovannimazzuoccolo/what-we-can-learn-from-the-faulty-crowdstrike-update-2ie</guid>
      <description>&lt;p&gt;Unless you lived on the Moon, you know what happened on July 19, 2024.&lt;/p&gt;

&lt;p&gt;In a few words, a “&lt;a href="https://techcrunch.com/2024/07/19/faulty-crowdstrike-update-causes-major-global-it-outage-taking-out-banks-airlines-and-businesses-globally/" rel="noopener noreferrer"&gt;defective&lt;/a&gt;” content update for Windows hosts caused the outage of many machines. Blue screens of death were everywhere, affecting airports, hospitals, and more.&lt;/p&gt;

&lt;p&gt;A big mess. &lt;/p&gt;

&lt;p&gt;But as developers, what can we learn from it?&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Be careful about what you give access to.
&lt;/h3&gt;

&lt;p&gt;What I find difficult to understand is how CrowdStrike had such easy access to the core of Windows. It reminds me of &lt;a href="https://xkcd.com/2347/" rel="noopener noreferrer"&gt;this xkdc comic&lt;/a&gt; &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%2Fp77oh37c3ap8cxpg91gx.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%2Fp77oh37c3ap8cxpg91gx.png" alt="Image description" width="385" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I understand the Windows world is huge, and maintaining its security is a challenge, almost to the level of "almost impossible." Windows is also considered insecure due to its past, and crackers want to target as many users as possible, which are on the Windows system.&lt;/p&gt;

&lt;p&gt;So, when we download a third-party library, ask yourself 100 times if you really need it and what is behind it. It's like having a guest at home.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Testing is more important than the code you write.
&lt;/h3&gt;

&lt;p&gt;Was it avoidable? Most probably yes. Overconfidence, strict timelines, and management pressure can lead developers to push untrusted code. And disaster is just around the corner. Finding time for testing is a developer's right, which needs to be explained multiple times to non-tech people.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Communication is important.
&lt;/h3&gt;

&lt;p&gt;I appreciate the honesty of CrowdStrike. They recognised the issue and didn’t blame anyone else but themselves. The fix was late, but they didn’t make excuses for the non-tech people, who immediately believed it was a cracker attack.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Make a postmortem so everyone can learn about it.
&lt;/h3&gt;

&lt;p&gt;Having a postmortem is important. It's a document where you analyze your mistakes and learn from them. It also gives honesty and transparency to the company.&lt;/p&gt;

&lt;p&gt;And you? What are your thought about this? &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>security</category>
      <category>learning</category>
    </item>
    <item>
      <title>What we can learn from programming memes for developers</title>
      <dc:creator>Giovanni Mazzuoccolo</dc:creator>
      <pubDate>Mon, 14 Aug 2023 20:29:25 +0000</pubDate>
      <link>https://dev.to/giovannimazzuoccolo/what-we-can-learn-from-programming-memes-for-developers-3k17</link>
      <guid>https://dev.to/giovannimazzuoccolo/what-we-can-learn-from-programming-memes-for-developers-3k17</guid>
      <description>&lt;p&gt;During a debugging session, code review, or normal coding session a colleague would probably send a programming meme.&lt;br&gt;
Programming memes have emerged as more than just a source of amusement for developers. They show the frustrations, triumphs, and universal experiences of coding in a way that resonates across the digital landscape. But, aside the jokes, can we actually learn something form them? We will delving into the shared realities they depict and the valuable lessons they can teach us about the art of software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  No documentation, yes problems.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---VlmqRYt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sgxcs610bme4smi4kxny.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---VlmqRYt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sgxcs610bme4smi4kxny.png" alt="Meme regarding the importance of writing down api documentation" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Undocumented code, especially APIs, can make the codebase difficult to read, maintain, and prone to varied interpretations. This is particularly true when you aim to extract content without possessing prior knowledge. To illustrate, envision yourself in an unfamiliar foreign city, lacking a map and data on your phone. Extend a courtesy to both your colleagues and your future self: &lt;strong&gt;comment the code&lt;/strong&gt;&lt;/p&gt;



&lt;h2&gt;
  
  
  Review, without losing the view
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KCaf-BIx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f2d4uhcc2m5pot3d4p24.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KCaf-BIx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f2d4uhcc2m5pot3d4p24.png" alt="A meme of code review" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When collaborating within a team, your code is subject to scrutiny by a supervisor. Additionally, even if you're a junior developer, you might find yourself tasked with conducting code reviews. An effective code review goes beyond the surface; while well-written code adhering to conventions is essential, a more risky situation arises when &lt;strong&gt;the code appears flawless but fails to meet the definition of done&lt;/strong&gt;. Such a scenario can be more problematic than code that may not strictly follow conventions but covers all cases, including error handling and less-expected paths. While spotting minor issues is straightforward, evaluating code's maintainability, stability, and scalability is a far harder.&lt;/p&gt;



&lt;h2&gt;
  
  
  Git blame yourself
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--s6W-B42Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iitrega56bfzy4an4ta2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s6W-B42Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iitrega56bfzy4an4ta2.png" alt="A meme about blaming your code" width="564" height="747"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I like to use &lt;a href="https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens"&gt;GitLens&lt;/a&gt; VScode extension because it keeps git blame at the ready, allowing me to easily connect with the developer responsible for a piece of code. It's amusing how often the responsible developer is myself 😅. Dealing with old code can be a dilemma, particularly if it appears unstable or outdated. Yet, we don't always have the luxury of time to refactor it. The key is to ensure we don't forget to bookmark it, go back later and fix it.&lt;/p&gt;

&lt;h2&gt;
  
  
  I don't understand
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vCe7mWiR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ausv9mlqwv958n6wxlsb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vCe7mWiR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ausv9mlqwv958n6wxlsb.png" alt="A meme about understanding code" width="400" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is crucial. Understanding &lt;strong&gt;why code works&lt;/strong&gt; is even more fundamental to comprehending why it doesn't. Being unaware can be incredibly risky. I believe that bridging this gap is one of the most significant steps from a junior to a senior level.&lt;/p&gt;

&lt;h2&gt;
  
  
  Better than caffeine
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0nh0OQhM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jq7uf2kmo5q2qomq5s05.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0nh0OQhM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jq7uf2kmo5q2qomq5s05.png" alt="A meme about coffee and deleting databases in production" width="528" height="648"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is my favorite meme, and it never fails to give a laugh when I share it with my colleagues. There isn't much to say about it, except the simple reminder: avoid doing something foolish, especially in production!&lt;/p&gt;

&lt;p&gt;Most of the memes are taken from &lt;a href="https://www.reddit.com/r/ProgrammerHumor/"&gt;r/ProgrammerHumor&lt;/a&gt; on Reddit.&lt;/p&gt;

&lt;p&gt;Now it is your turn! Share your favourite programming memes and comment on them! &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Code with Sherlock, how the Science of Deduction helps to write better code.</title>
      <dc:creator>Giovanni Mazzuoccolo</dc:creator>
      <pubDate>Sun, 23 Jul 2023 20:00:00 +0000</pubDate>
      <link>https://dev.to/giovannimazzuoccolo/code-with-sherlock-how-the-science-of-deduction-helps-to-write-better-code-1goo</link>
      <guid>https://dev.to/giovannimazzuoccolo/code-with-sherlock-how-the-science-of-deduction-helps-to-write-better-code-1goo</guid>
      <description>&lt;p&gt;I'm currently reading "How to Think Like Sherlock: Improve Your Powers of Observation, Memory, and Deduction" by Daniel Smith. This interesting book explores the way Sherlock Holmes thinks and solves problems, and I've noticed many similarities between his methods and the daily life of a software developer.&lt;/p&gt;

&lt;p&gt;So, let's wear our deerstalker (Sherlock's famous hat), and dive in!&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The crime scene: Analysing Requirements
&lt;/h3&gt;

&lt;p&gt;This is the part when Sherlock is scrutinizing a crime scene, trying to gather as much information as possible. Whenever we start a new task, a new project, or someone assigns an issue to us, the more information we collect, the more refined our work can be. &lt;/p&gt;

&lt;p&gt;What can we learn? &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sometimes, Sherlock asks some basic questions to ensure everyone is on the same page (and, yes, to show off a little, but I am not suggesting you do that :) ). Before starting, any question is welcomed, even the most seemingly simple one. We can always introduce our question with phrases like: "Just for clarification" or "I have a simple question, ..."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anything that is unclear needs to be made clear. If something is unclear, this is the best time to make it super clear! This includes deadlines, intermediate deliveries (milestones), requirements, and even the non-happy path scenarios. Think of it as a poker game with cards on the table."&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;
  
  
  2. Studying the enemy: Observing patterns
&lt;/h3&gt;

&lt;p&gt;As Sherlock would observe and notice subtle details, we can benefit from recognizing patterns in the codebase. By understanding recurring design patterns or identifying common issues in the code, you can improve code quality and maintainability.&lt;/p&gt;

&lt;p&gt;What can we learn?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;By observing patterns, we can better understand our codebase, applying software principles like DRY (Don't Repeat Yourself) to identify pitfalls and potential future problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k8oyXP6L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.imgur.com/bGpSkob.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k8oyXP6L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.imgur.com/bGpSkob.png" alt="A software developer study in scarlet" width="800" height="595"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. "Deduct" the bug to solve it.
&lt;/h3&gt;

&lt;p&gt;When encountering bugs or issues in your code, a deductive mindset can be valuable in the debugging process. Analyze the symptoms, consider potential causes, and systematically narrow down the possibilities until you find the root cause.&lt;/p&gt;

&lt;p&gt;What can we learn?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding the bug before solving it is essential. Using Stack Overflow is helpful, with the caveat of understanding what we are copying and pasting rather than blindly relying on it. Sherlock would never do that.&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;
  
  
  4. Learning and Improving:
&lt;/h3&gt;

&lt;p&gt;Just like Sherlock was a continuous learner, you should always seek to improve your coding skills. Dedicate time to learn new technologies, programming languages, and best practices, and apply them to your projects. &lt;/p&gt;

&lt;p&gt;What can we learn?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Don't be scared of the unknown; big minds work with curiosity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you are spending too much on courses, it's wise to buy a new one only after completing the previous one.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;
  
  
  5. The Dynamic Duo: Collaborating with Other Coders
&lt;/h3&gt;

&lt;p&gt;Holmes and Watson were an unbeatable duo, and so shall you be with us coders! Apply deduction in collaboration, respecting others' perspectives while collectively deducing solutions. The synergy of minds shall birth innovative marvels that transcend the sum of their parts.&lt;/p&gt;

&lt;p&gt;What can we learn?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;"Do not be scared to delegate. This is very difficult for me. I am often worried about relying on others and getting poor results. But coding is a marathon, and helping each other is the best way to reach the common goal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you see that you are going to miss the deadline, telling before is better than informing after you miss it.&lt;br&gt;
Proactive communication is vital in software development because it allows for better planning, resource allocation, and risk management. If you wait until after the deadline has passed to inform others about the delay, it can lead to disruptions, missed opportunities, and a loss of trust from stakeholders. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do you find any other common things about the Science of Deduction and Software development? Let me know in the comments! &lt;/p&gt;

&lt;p&gt;P.S. Check out my side project: &lt;a href="https://www.dutchfordevelopers.com"&gt;Dutch for developers&lt;/a&gt; where you can learn Dutch and land a job in The Netherlands!&lt;/p&gt;

</description>
      <category>guidelines</category>
      <category>softwaredevelopment</category>
      <category>cleancode</category>
    </item>
  </channel>
</rss>
