<?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: Akshay Galande</title>
    <description>The latest articles on DEV Community by Akshay Galande (@mybytecode).</description>
    <link>https://dev.to/mybytecode</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%2F845849%2F84ad2ae2-5a5d-4fa5-a35c-07eb29a3710c.jpg</url>
      <title>DEV Community: Akshay Galande</title>
      <link>https://dev.to/mybytecode</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mybytecode"/>
    <language>en</language>
    <item>
      <title>MCP logging and tracing using mcp-trace | ContexaAI</title>
      <dc:creator>Akshay Galande</dc:creator>
      <pubDate>Sat, 12 Jul 2025 19:08:00 +0000</pubDate>
      <link>https://dev.to/mybytecode/mcp-logging-and-tracing-using-mcp-trace-contexaai-4ccm</link>
      <guid>https://dev.to/mybytecode/mcp-logging-and-tracing-using-mcp-trace-contexaai-4ccm</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: Add tracing to your MCP server in literally 3 lines of code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;TraceMiddleware&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;FileAdapter&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mcp-trace-js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;traceAdapter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FileAdapter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;trace.log&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;traceMiddleware&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TraceMiddleware&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;adapter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;traceAdapter&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="c1"&gt;// Use in your MCP server - boom, full visibility&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;mcp-trace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let me tell you why this matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;Look, I've been there. You're building an MCP server, everything seems fine in development, then you deploy it and suddenly you have no idea what's happening. Users are complaining about slow responses, tools are failing mysteriously, and you're stuck playing detective with zero visibility into what's actually going on.&lt;/p&gt;

&lt;p&gt;When you're building with the Model Context Protocol, you're essentially creating a black box. Sure, your server handles requests and returns responses, but what happens in between? Which tools are being called? How long are they taking? What arguments are being passed? Are there patterns in the failures?&lt;/p&gt;

&lt;p&gt;Without proper observability, you're flying blind. And trust me, that's not a fun place to be when things go wrong at 2 AM.&lt;/p&gt;

&lt;p&gt;That's exactly why I created &lt;strong&gt;mcp-trace-js&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Adapters That Actually Matter
&lt;/h2&gt;

&lt;p&gt;Here's where it gets interesting. I didn't just build one way to store traces - I built adapters for the places you're actually storing data:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File Adapter&lt;/strong&gt; - Sometimes you just want logs in a file. Perfect for development or simple deployments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PostgreSQL Adapter&lt;/strong&gt; - Because your data is probably already in Postgres, and querying traces with SQL is powerful as hell.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Supabase Adapter&lt;/strong&gt; - Same as Postgres but with all the Supabase goodness if that's your thing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contexa Adapter&lt;/strong&gt; - For when you want cloud-based trace analytics without the setup headache.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Console Adapter&lt;/strong&gt; - Pretty-printed logs right in your terminal. Great for debugging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multi Adapter&lt;/strong&gt; - Use multiple adapters at once. Log to file AND database. Because why not?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Privacy Thing
&lt;/h2&gt;

&lt;p&gt;Here's something most tracing tools get wrong - they log everything by default and make it hard to exclude sensitive data. I built mcp-trace-js the other way around.&lt;/p&gt;

&lt;p&gt;Want to log tool names but not arguments? Easy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;traceMiddleware&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TraceMiddleware&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;adapter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;traceAdapter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;logFields&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;tool_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;tool_response&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;tool_arguments&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;// Nope, keep this private&lt;/span&gt;
    &lt;span class="na"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;       &lt;span class="c1"&gt;// This too&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;You control exactly what gets logged. No surprises, no accidentally logging user data you shouldn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real Talk: Why This Matters
&lt;/h2&gt;

&lt;p&gt;I've seen too many projects fail because the developers lost control of their systems. You build something, it works, then it scales and suddenly you don't understand your own creation anymore.&lt;/p&gt;

&lt;p&gt;Observability isn't just about fixing bugs - it's about understanding patterns, optimizing performance, and staying in control as your system grows.&lt;/p&gt;

&lt;p&gt;With mcp-trace-js, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Debug faster&lt;/strong&gt; - See exactly what tool calls are failing and why&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimize performance&lt;/strong&gt; - Identify slow operations and bottlenecks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Understand usage patterns&lt;/strong&gt; - Know which tools are popular and which aren't&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor in production&lt;/strong&gt; - Get alerts when things go wrong, not when users complain&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Technical Details (If You Care)
&lt;/h2&gt;

&lt;p&gt;It's built with TypeScript, so you get full type safety and IntelliSense. The trace format is JSON, so you can query it however you want. It's composable, so you can use multiple adapters. It's configurable, so you can log exactly what you need.&lt;/p&gt;

&lt;p&gt;But honestly? The technical details don't matter if it doesn't solve your problem. And the problem it solves is simple: &lt;strong&gt;visibility into your MCP servers&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;mcp-trace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check out the examples in the repo. There's a basic usage example, an MCP server integration, and even a complete HTTP server setup. Pick what fits your use case and go.&lt;/p&gt;

&lt;p&gt;The documentation is straightforward, the API is clean, and it just works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I'm Sharing This
&lt;/h2&gt;

&lt;p&gt;I built mcp-trace-js because I needed it. I was tired of debugging MCP servers without proper visibility. I was tired of guessing what was going wrong.&lt;/p&gt;

&lt;p&gt;If you're building with MCP, you probably need this too. Don't wait until you're debugging a production issue at 2 AM to realize you need proper tracing.&lt;/p&gt;

&lt;p&gt;The repo is at &lt;a href="https://github.com/ContexaAI/mcp-trace-js" rel="noopener noreferrer"&gt;https://github.com/ContexaAI/mcp-trace-js&lt;/a&gt;. MIT licensed, contributions welcome, issues and PRs encouraged.&lt;/p&gt;

&lt;p&gt;Stop flying blind. Start tracing your MCP servers properly.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Found this useful? Give the repo a star and let me know what you think. And if you build something cool with mcp-trace-js, I'd love to hear about it.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>modelcontextprotocol</category>
      <category>contexaai</category>
      <category>ai</category>
    </item>
    <item>
      <title>Creating Interactive Country Maps with Flutter and google_maps_flutter</title>
      <dc:creator>Akshay Galande</dc:creator>
      <pubDate>Sat, 26 Aug 2023 21:04:59 +0000</pubDate>
      <link>https://dev.to/mybytecode/creating-interactive-country-maps-with-flutter-and-googlemapsflutter-4pn7</link>
      <guid>https://dev.to/mybytecode/creating-interactive-country-maps-with-flutter-and-googlemapsflutter-4pn7</guid>
      <description>&lt;p&gt;If you're developing a Flutter application that requires displaying interactive maps with highlighted countries, you might be wondering how to achieve this using the google_maps_flutter package. While the package itself doesn't offer direct country coloring functionality, you can still accomplish this by overlaying polygons on the map. In this tutorial, we'll walk you through the process step by step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Setting Up the Project&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before we begin, make sure you have a Flutter project set up. If you haven't already, install the google_maps_flutter package by adding it to your pubspec.yaml file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  flutter:
    sdk: flutter
  google_maps_flutter: ^2.0.10 # Check for the latest version\
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Don't forget to run flutter pub get after adding the dependency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Creating the Map&lt;/strong&gt;&lt;br&gt;
Open your main Dart file and set up the basic structure for your Flutter app. We'll create a simple MapScreen widget that displays the Google Map.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
void main() {
  runApp(MyApp());
}
class MyApp extends StatelessWidget {
da  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MapScreen(),
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3: Overlaying Polygons&lt;/strong&gt;&lt;br&gt;
In the MapScreen widget, set up the Google Map and overlay polygons to represent countries. In this example, we'll create a single polygon to represent a country.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class MapScreen extends StatefulWidget {
  @override
  _MapScreenState createState() =&amp;gt; _MapScreenState();
}
class _MapScreenState extends State&amp;lt;MapScreen&amp;gt; {
  GoogleMapController? mapController;
  final Set&amp;lt;Polygon&amp;gt; _polygons = {
    Polygon(
      polygonId: PolygonId('country_polygon'),
      points: [
        LatLng(51.5074, -0.1278), // Example coordinates for a country
        LatLng(48.8566, 2.3522),  // Example coordinates for a country
        LatLng(52.5200, 13.4050), // Example coordinates for a country
      ],
      fillColor: Colors.blue.withOpacity(0.3), // Set the fill color
      strokeColor: Colors.blue, // Set the border color
      strokeWidth: 2, // Set the border width
    ),
  };
  void addPoints()
   {
     for( var i=0 ; i &amp;lt; GeoJson.IN.length ; i++ )
     {
       var ltlng= LatLng( GeoJson.IN[ i ][ 1 ], GeoJson.IN[ i ][ 0 ] );
       point.add( ltlng );
     }
   }

  void _onMapCreated(GoogleMapController controller) {
    mapController = controller;
  }
 @override
  void initState() {
    addPoints();
    List&amp;lt; Polygon &amp;gt; addPolygon = [
      Polygon(
        polygonId: PolygonId( 'India' ),
        points: point,
        consumeTapEvents: true,
        strokeColor: Colors.grey,
        strokeWidth: 1,
        fillColor: Colors.redAccent,
      ),
    ];
    polygon.addAll( addPolygon );
    super.initState();
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Country Coloring'),
      ),
      body: GoogleMap(
        onMapCreated: _onMapCreated,
        initialCameraPosition: CameraPosition(
          target: LatLng(51.5074, -0.1278), // Initial map coordinates
          zoom: 4.0, // Initial zoom level
        ),
        polygons: _polygons,
      ),
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;LatLng Points for India&lt;/strong&gt;&lt;br&gt;
GeoJson.dart&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class GeoJson
{
 static const List IN = [
   [77.83745079947457,35.494009507787766],[78.91226891471322,34.32193634697579],
   [78.81108646028574,33.50619802503242],[79.20889163606857,32.994394639613716],
   [79.17612877799553,32.48377981213771],[78.45844648632601,32.61816437431273],
   [78.73889448437401,31.515906073527063],[79.7213668151071,30.882714748654728],
   [81.11125613802932,30.183480943313402],[80.4767212259174,29.72986522065534],
   [80.08842451367627,28.79447011974014],[81.05720258985203,28.416095282499043],
   [81.99998742058497,27.925479234319994],[83.30424889519955,27.36450572357556],
   [84.6750179381738,27.234901231387536],[85.25177859898338,26.72619843190634],
   [86.02439293817918,26.63098460540857],[87.22747195836628,26.397898057556077],
   [88.06023766474982,26.41461538340249],[88.17480431514092,26.81040517832595],
   [88.04313276566123,27.445818589786825],[88.12044070836987,27.876541652939594],
   [88.73032596227856,28.086864732367516],[88.81424848832054,27.29931590423936],
   [88.83564253128938,27.098966376243762],[89.74452762243884,26.719402981059957],
   [90.37327477413407,26.87572418874288],[91.21751264848643,26.808648179628022],
   [92.03348351437509,26.83831045176356],[92.10371178585973,27.452614040633208],
   [91.69665652869668,27.77174184825166],[92.50311893104364,27.89687632904645],
   [93.41334760943268,28.640629380807226],[94.56599043170294,29.277438055939985],
   [95.40480228066464,29.03171662039213],[96.11767866413103,29.452802028922466],
   [96.58659061074749,28.830979519154344],[96.24883344928779,28.41103099213444],
   [97.32711388549004,28.26158274994634],[97.40256147663612,27.88253611908544],
   [97.0519885599681,27.69905894623315],[97.1339990580153,27.083773505149964],
   [96.41936567585097,27.264589341739224],[95.12476769407496,26.5735720891323],
   [95.1551534362626,26.001307277932085],[94.60324913938538,25.162495428970402],
   [94.55265791217164,24.675238348890332],[94.10674197792505,23.85074087167348],
   [93.3251876159428,24.078556423432204],[93.28632693885928,23.043658352139005],
   [93.06029422401463,22.70311066333557],[93.16612755734836,22.278459580977103],
   [92.67272098182556,22.041238918541254],[92.14603478390681,23.627498684172593],
   [91.86992760617132,23.624346421802784],[91.70647505083211,22.985263983649183],
   [91.15896325069971,23.50352692310439],[91.46772993364367,24.072639471934792],
   [91.91509280799443,24.13041372323711],[92.37620161333481,24.976692816664965],
   [91.79959598182207,25.147431748957317],[90.8722107279121,25.132600612889547],
   [89.92069258012185,25.26974986419218],[89.83248091019962,25.96508209889548],
   [89.35509402868729,26.014407253518073],[88.56304935094977,26.44652558034272],
   [88.2097892598025,25.76806570078271],[88.93155398962308,25.238692328384776],
   [88.30637251175602,24.866079413344206],[88.08442223506242,24.501657212821925],
   [88.69994022009092,24.23371491138856],[88.52976972855377,23.631141872649163],
   [88.87631188350309,22.879146429937826],[89.03196129756623,22.055708319582976],
   [88.88876590368542,21.690588487224748],[88.20849734899521,21.703171698487807],
   [86.97570438024027,21.49556163175521],[87.03316857294887,20.743307806882413],
   [86.49935102737378,20.151638495356607],[85.0602657409097,19.4785788029711],
   [83.94100589390001,18.302009792549725],[83.18921715691785,17.67122142177898],
   [82.19279218946592,17.016636053937813],[82.19124189649719,16.556664130107848],
   [81.69271935417748,16.310219224507904],[80.79199913933014,15.951972357644491],
   [80.32489586784388,15.899184882058348],[80.02506920768644,15.136414903214147],
   [80.2332735533904,13.835770778859981],[80.28629357292186,13.006260687710833],
   [79.8625468281285,12.056215318240888],[79.85799930208682,10.35727509199711],
   [79.340511509116,10.30885427493962],[78.88534549348918,9.546135972527722],
   [79.18971967968828,9.216543687370148],[78.2779407083305,8.933046779816934],
   [77.94116539908435,8.252959092639742],[77.53989790233794,7.965534776232333],
   [76.59297895702167,8.89927623131419],[76.13006147655108,10.299630031775521],
   [75.74646731964849,11.308250637248307],[75.39610110870957,11.781245022015824],
   [74.86481570831681,12.741935736537897],[74.61671715688354,13.99258291264968],
   [74.44385949086723,14.617221787977696],[73.5341992532334,15.99065216721496],
   [73.11990929554943,17.928570054592498],[72.82090945830865,19.208233547436166],
   [72.8244751321368,20.419503282141534],[72.6305334817454,21.356009426351008],
   [71.17527347197395,20.757441311114235],[70.4704586119451,20.877330634031384],
   [69.16413008003883,22.0892980005727],[69.64492760608239,22.450774644454338],
   [69.34959679553435,22.84317963306269],[68.1766451353734,23.69196503345671],
   [68.84259931831878,24.35913361256094],[71.04324018746823,24.3565239527302],
   [70.84469933460284,25.21510203704352],[70.28287316272558,25.72222870533983],
   [70.16892662952202,26.491871649678842],[69.51439293811312,26.940965684511372],
   [70.61649620960193,27.989196275335868],[71.77766564320032,27.913180243434525],
   [72.8237516620847,28.961591701772054],[73.45063846221743,29.97641347911987],
   [74.42138024282026,30.979814764931177],[74.40592898956501,31.69263947196528],
   [75.25864179881322,32.2711054550405],[74.45155927927871,32.7648996038055],
   [74.10429365427734,33.44147329358685],[73.74994835805195,34.31769887952785],
   [74.24020267120497,34.74888703057125],[75.75706098826834,34.50492259372132],
   [76.87172163280403,34.65354401299274],[77.83745079947457,35.494009507787766]];
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4: Customization&lt;/strong&gt;&lt;br&gt;
You can add more polygons to represent different countries by creating additional Polygon objects within the _polygons set. Customize the coordinates, fill colors, and stroke colors for each polygon as needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
While the google_maps_flutter package doesn't directly provide country coloring functionality, you can still create interactive country maps by overlaying polygons and customizing their appearance. This approach allows you to highlight countries with distinct fill colors on a Google Map within your Flutter application. With the flexibility of Flutter's UI capabilities, you can create engaging and informative maps tailored to your project's requirements.&lt;br&gt;
We hope this tutorial helps you achieve your goal of displaying colored countries on a Google Map in your Flutter app. Happy coding!&lt;/p&gt;

</description>
      <category>googlemap</category>
      <category>googlemapflutter</category>
      <category>flutter</category>
    </item>
    <item>
      <title>How to set cookie using ExpressJS response.</title>
      <dc:creator>Akshay Galande</dc:creator>
      <pubDate>Mon, 18 Apr 2022 20:03:38 +0000</pubDate>
      <link>https://dev.to/mybytecode/how-to-set-cookie-using-expressjs-response-55k1</link>
      <guid>https://dev.to/mybytecode/how-to-set-cookie-using-expressjs-response-55k1</guid>
      <description>&lt;h2&gt;
  
  
  What is cookie?
&lt;/h2&gt;

&lt;p&gt;Cookies is simple key value pair stored by web server on clients browser to store/maintain user’s state.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it is different from Localstorage?
&lt;/h2&gt;

&lt;p&gt;Locastorage can also be used to store user’s state, but cookies has more advanced configurations like — expiration time, same site, secure flag, Httponly, etc. By using these advanced configurations we can programatically manage user’s state. It is considered that cookies are more secure than Localstorage in terms of handling user session or secret values like authentication tokens.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Httponly cookie?
&lt;/h2&gt;

&lt;p&gt;A Httponly cookie is a simple cookie which is set by server with httponly flag as true which cannot be accessed by client side javascript.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;If you want to learn more, reach out to me at — &lt;a href="https://twitter.com/akshay_nocode" rel="noopener noreferrer"&gt;https://twitter.com/akshay_nocode&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cookie</category>
      <category>express</category>
      <category>node</category>
      <category>httplonly</category>
    </item>
  </channel>
</rss>
