<?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: Solo Thought</title>
    <description>The latest articles on DEV Community by Solo Thought (@solothought).</description>
    <link>https://dev.to/solothought</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%2F1218996%2F263a7b7b-a4e5-47bc-8e1b-c3a5e40d759c.png</url>
      <title>DEV Community: Solo Thought</title>
      <link>https://dev.to/solothought</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/solothought"/>
    <language>en</language>
    <item>
      <title>Unlocking the Secret to 90% Smaller Logs: How Flowgger Transforms Your Logging Strategy</title>
      <dc:creator>Solo Thought</dc:creator>
      <pubDate>Sat, 08 Mar 2025 07:47:49 +0000</pubDate>
      <link>https://dev.to/solothought/unlocking-the-secret-to-90-smaller-logs-how-flowgger-transforms-your-logging-strategy-3kfi</link>
      <guid>https://dev.to/solothought/unlocking-the-secret-to-90-smaller-logs-how-flowgger-transforms-your-logging-strategy-3kfi</guid>
      <description>&lt;p&gt;Imagine you're on a treasure hunt, and you have a detailed map showing every tree, rock, and turn. While this map is thorough, it becomes cumbersome to carry and consult frequently. Now, what if you had a simplified version that highlighted only the critical checkpoints? This streamlined map would make your journey faster and more efficient.&lt;/p&gt;

&lt;p&gt;In the world of software development, traditional logging systems are like that detailed map—they record every minute detail of an application's execution. While comprehensive, these logs can become overwhelmingly large, consuming significant storage and making the debugging process akin to finding a needle in a haystack.&lt;/p&gt;

&lt;p&gt;Enter Flowgger, a logging framework that offers a fresh perspective on logging by emphasizing predefined flows. Instead of logging every single action, Flowgger allows developers to define the essential steps of their application's processes in &lt;code&gt;.stflow&lt;/code&gt; files.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FLOW: Binary Search
LOOP searching for target in array
  read low (initial index of array)
  read high (last index of array)
  IF low &amp;lt;= high
    THEN calculate mid ((low + high) / 2)
    IF array[mid] = target
      found target at mid
      END
    ELSE
      FOLLOW update boundaries
  ELSE
    ERR Target not found
    END

FLOW: update boundaries
IF array[mid] &amp;lt; target
  update low to mid + 1
ELSE
  update high to mid - 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;During execution, Flowgger matches log statements against this predefined flow and logs only the step identifiers. This approach drastically reduces log size, akin to our simplified treasure map, focusing only on the critical checkpoints.&lt;/p&gt;

&lt;p&gt;Advantages of Reduced Log Space with Flowgger:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced Performance&lt;/strong&gt;: Smaller logs mean faster write operations, leading to improved application performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Efficient Storage Utilization&lt;/strong&gt;: With reduced log sizes, storage requirements decrease, resulting in cost savings and more efficient resource management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamlined Debugging&lt;/strong&gt;: By focusing on predefined critical steps, developers can quickly pinpoint issues without sifting through excessive log data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How Flowgger Achieves This:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Predefined Flows&lt;/strong&gt;: Developers outline the application's essential processes in &lt;code&gt;.stflow&lt;/code&gt; files. Flowgger uses these definitions to determine which steps to log, ensuring only pertinent information is recorded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step Identification&lt;/strong&gt;: Instead of verbose log messages, Flowgger logs concise step identifiers, capturing the sequence and status of each step in single log message.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more information and to get started with Flowgger, visit the official &lt;a href="https://github.com/solothought/flowgger" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;. Watch and start it on Github so I am aware if this library is really helpful for you.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>devops</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Java OOPs concept through storyteling</title>
      <dc:creator>Solo Thought</dc:creator>
      <pubDate>Sun, 26 Nov 2023 05:51:18 +0000</pubDate>
      <link>https://dev.to/solothought/java-oops-concept-through-storyteling-3lp8</link>
      <guid>https://dev.to/solothought/java-oops-concept-through-storyteling-3lp8</guid>
      <description>&lt;p&gt;Have a look on the &lt;a href="https://solothought.com/tutorial/kungfu-java-concepts/"&gt;Kunfy Java story&lt;/a&gt; where I tried to explain th concepts of Java programming language through real life examples and the the story of Kungufu Panda.&lt;/p&gt;

&lt;p&gt;I've written total 3 stories in this series. I covered OOPs concept till Java 17. If you feel this story clear the complex concepts in easy terms, I can plan to cover the concepts of web services, and integration of other popuar concepts like kafka, nginx etc.&lt;/p&gt;

&lt;p&gt;In this tutorial, I've tried to cover inheritance, type of classes, abstraction, difference between a class and an object, method overriding, static, scope, final, and many more concepts. I tried o explain not only how they're used but their need too.&lt;/p&gt;

&lt;p&gt;Here is the sample code from one of the example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;abstract class Oogway {
    private String Calmness; //skill
    private String SoloThought; //skill
    protected String PhoenixBlade;

    abstract public void fight();
}

class Shifu extends Oogway {
    private List&amp;lt;String&amp;gt; pressurePoints;

    public void fight(){
        System.out.println("Defeat with: " + pressurePoints);
    }
    public void fight(String level){
        if(level.equals("final")) System.out.println("Using protected weapon: " + PhoenixBlade);
    }
}

public class Main {
    public static void main(String[] args) {
        Shifu shifu = new Shifu();
        shifu.fight();
        shifu.fight("final");
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>java</category>
      <category>story</category>
      <category>tutorial</category>
      <category>oop</category>
    </item>
  </channel>
</rss>
