<?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: ESROM BERHANE</title>
    <description>The latest articles on DEV Community by ESROM BERHANE (@esrom_berhane_4fa205468a0).</description>
    <link>https://dev.to/esrom_berhane_4fa205468a0</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%2F3623815%2F16a5345e-b0f1-4054-a315-feaaa79cb68c.png</url>
      <title>DEV Community: ESROM BERHANE</title>
      <link>https://dev.to/esrom_berhane_4fa205468a0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/esrom_berhane_4fa205468a0"/>
    <language>en</language>
    <item>
      <title>Unlocking TrendRadar: AI-Powered News Analysis</title>
      <dc:creator>ESROM BERHANE</dc:creator>
      <pubDate>Sat, 22 Nov 2025 04:41:14 +0000</pubDate>
      <link>https://dev.to/esrom_berhane_4fa205468a0/unlocking-trendradar-ai-powered-news-analysis-50fj</link>
      <guid>https://dev.to/esrom_berhane_4fa205468a0/unlocking-trendradar-ai-powered-news-analysis-50fj</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;TrendRadar is an innovative tool designed to simplify news monitoring and analysis. With the ability to track 35 platforms, including Douyin, Zhihu, and Bilibili, it provides a comprehensive overview of current trends and sentiment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem
&lt;/h2&gt;

&lt;p&gt;In today's information age, staying updated with the latest news and trends can be overwhelming. Manual tracking and analysis of news from multiple sources is time-consuming and prone to errors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solution
&lt;/h2&gt;

&lt;p&gt;TrendRadar offers a solution to this problem by leveraging AI to analyze news and provide insights. Its key features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-platform tracking: Monitor news from 35 platforms in real-time&lt;/li&gt;
&lt;li&gt;AI-powered analysis: Utilize natural language processing to extract insights and trends&lt;/li&gt;
&lt;li&gt;Customizable notifications: Receive updates via enterprise WeChat, personal WeChat, Feishu, DingTalk, Telegram, email, or ntfy&lt;/li&gt;
&lt;li&gt;Easy deployment: Deploy TrendRadar in 30 seconds via web or 1 minute via mobile, no coding required
## Code Snippet
To get started with TrendRadar, users can deploy it using Docker. Here's an example of how to run TrendRadar using Docker:
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;docker run -d --name trendradar -p 8080:8080 sansan0/trendradar&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Verdict
&lt;/h2&gt;

&lt;p&gt;TrendRadar is a powerful tool for news monitoring and analysis. Its ability to track multiple platforms and provide AI-powered insights makes it an invaluable resource for individuals and organizations looking to stay informed about the latest trends and sentiment.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Analysis by AEGIS Protocol&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>analysis</category>
      <category>news</category>
    </item>
    <item>
      <title>Why google/adk-go Is a Game Changer for Go Devs — And Why You Can’t Ignore It</title>
      <dc:creator>ESROM BERHANE</dc:creator>
      <pubDate>Sat, 22 Nov 2025 04:14:22 +0000</pubDate>
      <link>https://dev.to/esrom_berhane_4fa205468a0/why-googleadk-go-is-a-game-changer-for-go-devs-and-why-you-cant-ignore-it-5h9g</link>
      <guid>https://dev.to/esrom_berhane_4fa205468a0/why-googleadk-go-is-a-game-changer-for-go-devs-and-why-you-cant-ignore-it-5h9g</guid>
      <description>&lt;p&gt;Why google/adk-go Is a Game Changer for Go Devs — And Why You Can’t Ignore It&lt;br&gt;
🔥 The Hook&lt;/p&gt;

&lt;p&gt;Forget cobbling together LLM calls in Python or shell scripts — google/adk-go brings first-class, production-grade AI agents right into your Go stack. If you're still managing orchestration manually, you’re doing it wrong — this toolkit flips the game.&lt;/p&gt;

&lt;p&gt;What Exactly Is google/adk-go? — A Technical Deep Dive&lt;/p&gt;

&lt;p&gt;At its core, google/adk-go is the Go implementation of Google’s Agent Development Kit (ADK) — a code-first, modular framework for building, evaluating, and deploying AI agents.&lt;/p&gt;

&lt;p&gt;Here's what makes it tick:&lt;/p&gt;

&lt;p&gt;Idiomatic Go design: It uses Go’s concurrency model, context propagation, and type safety to deliver a natural experience for Go developers.&lt;/p&gt;

&lt;p&gt;Model-agnostic, but optimized for Gemini: While tuned for Google Gemini, it supports other LLMs through well-defined abstractions.&lt;/p&gt;

&lt;p&gt;Rich tool ecosystem: You get built-in tools like Google Search, code execution, or you can write your own function tools.&lt;/p&gt;

&lt;p&gt;Multi-agent orchestration: Build hierarchical systems (sequential, parallel, or loop agents) for complex workflows.&lt;/p&gt;

&lt;p&gt;Session &amp;amp; memory management: It supports rich conversation sessions, stateful dialogs, and long-term memory via vector stores or other backends.&lt;/p&gt;

&lt;p&gt;Streaming event model: Agents emit events (e.g., messages, tool calls, state deltas) using Go iterators, enabling real-time processing.&lt;/p&gt;

&lt;p&gt;Deployment flexibility: Containerize your agents, deploy to Cloud Run, or integrate with Vertex AI Agent Engine.&lt;/p&gt;

&lt;p&gt;A2A Protocol support: Agents can communicate with each other using the Agent-to-Agent protocol, so you can delegate tasks across agents securely and modularly.&lt;/p&gt;

&lt;p&gt;Example Snippets&lt;/p&gt;

&lt;p&gt;Here’s a hypothetical but realistic snippet to illustrate how you might build a simple LLM-based agent in Go using adk-go:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="s"&gt;"context"&lt;/span&gt;
  &lt;span class="s"&gt;"fmt"&lt;/span&gt;
  &lt;span class="s"&gt;"log"&lt;/span&gt;

  &lt;span class="s"&gt;"google.golang.org/adk/agent"&lt;/span&gt;
  &lt;span class="s"&gt;"google.golang.org/adk/model"&lt;/span&gt;
  &lt;span class="s"&gt;"google.golang.org/adk/session"&lt;/span&gt;
  &lt;span class="s"&gt;"google.golang.org/adk/types"&lt;/span&gt;
  &lt;span class="s"&gt;"google.golang.org/adk/tool/geminitool"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;ctx&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Background&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

  &lt;span class="c"&gt;// Create a LLM model (e.g. Gemini)&lt;/span&gt;
  &lt;span class="n"&gt;gemini&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NewGoogleModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"gemini-2.0-flash"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Fatalf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"model creation error: %v"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;defer&lt;/span&gt; &lt;span class="n"&gt;gemini&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

  &lt;span class="c"&gt;// Prepare built-in search tool&lt;/span&gt;
  &lt;span class="n"&gt;searchTool&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;geminitool&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NewGoogleSearchTool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="c"&gt;/* config if needed */&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="c"&gt;// Build an agent&lt;/span&gt;
  &lt;span class="n"&gt;myAgent&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NewLLMAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"assistant"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gemini&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithInstruction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"You are a helpful AI assistant."&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithTools&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;searchTool&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="c"&gt;// Session management&lt;/span&gt;
  &lt;span class="n"&gt;sessSvc&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NewInMemoryService&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="n"&gt;sess&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;sessSvc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateSession&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"myApp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"user1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"sess1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;ictx&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NewInvocationContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sess&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sessSvc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="c"&gt;// Run the agent&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="k"&gt;range&lt;/span&gt; &lt;span class="n"&gt;myAgent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ictx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Error: %s"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="k"&gt;continue&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Agent:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s just scratching the surface. Using agents + tools + session + model, you can build workflows just like you’d structure any Go microservice—only now it’s agentic logic.&lt;/p&gt;

&lt;p&gt;Real-World Use Cases&lt;/p&gt;

&lt;p&gt;Here are three powerful, real-world applications where google/adk-go can shine:&lt;/p&gt;

&lt;p&gt;Enterprise Support Agent&lt;br&gt;
Build a multi-agent customer support system. One agent handles user query → intent detection → tool invocation (e.g. search, APIs), another maintains session memory to track user history, and a third verifies compliance or escalates to human support. Because it's all in Go, you can integrate directly into your backend without polyglot mess.&lt;/p&gt;

&lt;p&gt;Automated DevOps Assistant / On-call Bot&lt;br&gt;
Use an agent to monitor your infrastructure, respond to alerts, or run diagnostic commands. Create function tools for interacting with your monitoring system, provisioning APIs, or Kubernetes — all orchestrated in Go. Agents coordinate via A2A: one listens to logs, another runs diagnostics, and a third notifies and summarizes.&lt;/p&gt;

&lt;p&gt;Knowledge Workflow &amp;amp; Research Pipeline&lt;br&gt;
Build a research-assistant system where one agent fetches and summarizes information (via built-in tools), another organizes findings into structured memory (vector store), and a third drafts reports. Use Go’s concurrency to run research and summarization in parallel, then consolidate with a parent agent.&lt;/p&gt;

&lt;p&gt;The Verdict: Is google/adk-go a Buy, Hype, or Risk?&lt;/p&gt;

&lt;p&gt;Buy, with full conviction.&lt;br&gt;
This is not hype — Google has committed, and ADK Go is production-grade. It gives Go developers access to the full spectrum of agent-based architectures without having to drop into Python or Java. For teams already using Go for backend services, it's a no-brainer: unify your tech stack, add intelligent behaviors, and deploy to cloud-native infra with minimal friction.&lt;/p&gt;

&lt;p&gt;ADK Go delivers real flexibility + deep control, and it's backed by the same framework that Google uses for its own agent builder tooling. If you're building anything non-trivial with generative AI — task automation, support workflows, multi-agent orchestration — this should be part of your toolkit from day one.&lt;/p&gt;

</description>
      <category>go</category>
      <category>ai</category>
      <category>google</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
