<?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: Shaista Aman Khan</title>
    <description>The latest articles on DEV Community by Shaista Aman Khan (@shaistaaman).</description>
    <link>https://dev.to/shaistaaman</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%2F827800%2Fe526cb78-ff5c-4b80-ad21-4339a57e7655.png</url>
      <title>DEV Community: Shaista Aman Khan</title>
      <link>https://dev.to/shaistaaman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shaistaaman"/>
    <language>en</language>
    <item>
      <title>From COBOL to Cloud: How Kiro's Spec-Driven Development Transformed Legacy Modernization</title>
      <dc:creator>Shaista Aman Khan</dc:creator>
      <pubDate>Mon, 10 Nov 2025 18:32:01 +0000</pubDate>
      <link>https://dev.to/shaistaaman/from-cobol-to-cloud-how-kiros-spec-driven-development-transformed-legacy-modernization-39c5</link>
      <guid>https://dev.to/shaistaaman/from-cobol-to-cloud-how-kiros-spec-driven-development-transformed-legacy-modernization-39c5</guid>
      <description>&lt;p&gt;Building COBRA - a COBOL Banking Resilience Agent that parses legacy code and generates AWS infrastructure, powered by Kiro's systematic approach to AI-assisted development"&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenge: 60 Years of Banking Code
&lt;/h2&gt;

&lt;p&gt;Banks worldwide run on billions of lines of COBOL code written decades ago. Complete rewrites are risky and expensive, yet modernization is essential. I set out to build &lt;strong&gt;COBRA (COBOL Banking Resilience Agent)&lt;/strong&gt;—an AI system that analyzes legacy COBOL and generates modern AWS infrastructure.&lt;/p&gt;

&lt;p&gt;The twist? I built it entirely with &lt;strong&gt;Kiro&lt;/strong&gt;, and the experience completely changed how I approach complex software development.&lt;/p&gt;

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

&lt;p&gt;COBRA is an agentic AI orchestration system that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parses COBOL-85/2002 source code and generates Abstract Syntax Trees&lt;/li&gt;
&lt;li&gt;Recognizes banking patterns (interest calculations, transaction posting, batch processing)&lt;/li&gt;
&lt;li&gt;Generates production-ready AWS Lambda functions, API Gateway configs, and CDK infrastructure&lt;/li&gt;
&lt;li&gt;Provides a React web interface for instant analysis&lt;/li&gt;
&lt;li&gt;Integrates with Kiro via Model Context Protocol (MCP)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The result&lt;/strong&gt;: 142 files, comprehensive documentation, and a zero-cost development architecture—all built systematically through Kiro's spec-driven workflow.&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/oLZHT0UwEf8"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;h2&gt;
  
  
  My Favorite Thing About Kiro: Spec-Driven Development That Actually Works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Before Kiro: The Chaos of "Just Start Coding"
&lt;/h3&gt;

&lt;p&gt;My typical approach was:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Have a vague idea&lt;/li&gt;
&lt;li&gt;Start coding immediately&lt;/li&gt;
&lt;li&gt;Realize requirements are unclear&lt;/li&gt;
&lt;li&gt;Refactor extensively&lt;/li&gt;
&lt;li&gt;Lose track of what's done vs what's needed&lt;/li&gt;
&lt;li&gt;Ship something that &lt;em&gt;mostly&lt;/em&gt; works&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For a complex project like COBRA (COBOL parser + logic analyzer + LLM integration + AWS generators + web interface), this approach would have been a disaster.&lt;/p&gt;

&lt;h3&gt;
  
  
  With Kiro: Systematic, Iterative, Traceable
&lt;/h3&gt;

&lt;p&gt;Kiro introduced me to &lt;strong&gt;spec-driven development&lt;/strong&gt; with three documents:&lt;/p&gt;

&lt;h4&gt;
  
  
  1. requirements.md - EARS-Compliant Requirements
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Requirement 1: COBOL Parsing&lt;/span&gt;

&lt;span class="gs"&gt;**User Story:**&lt;/span&gt; As a modernization engineer, I want to parse COBOL source files, 
so that I can analyze legacy banking systems.

&lt;span class="gu"&gt;#### Acceptance Criteria&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; WHEN a COBOL-85 source file is provided, THE System SHALL generate an AST 
   within 30 seconds for files up to 10,000 lines
&lt;span class="p"&gt;2.&lt;/span&gt; WHILE parsing, THE System SHALL identify all data structures, procedures, 
   and file operations
&lt;span class="p"&gt;3.&lt;/span&gt; IF parsing errors occur, THEN THE System SHALL provide line numbers and 
   actionable error messages
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every requirement was measurable, testable, and traceable.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;design.md - Architecture Decisions
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Component: COBOL Parser&lt;/span&gt;

&lt;span class="gu"&gt;### Technology Choice: Custom TypeScript Parser&lt;/span&gt;
&lt;span class="gs"&gt;**Rationale:**&lt;/span&gt; Existing parsers (tree-sitter-cobol) lack banking-specific 
pattern recognition. Custom parser enables:
&lt;span class="p"&gt;-&lt;/span&gt; Recognition of interest calculation patterns
&lt;span class="p"&gt;-&lt;/span&gt; Extraction of transaction validation logic
&lt;span class="p"&gt;-&lt;/span&gt; Support for multiple COBOL dialects

&lt;span class="gu"&gt;### Performance Strategy&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Three-tier caching (AST, Analysis, LLM responses)
&lt;span class="p"&gt;-&lt;/span&gt; Worker thread pool for parallel processing
&lt;span class="p"&gt;-&lt;/span&gt; Streaming parser for files &amp;gt;5000 lines
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The design document became my contract—every implementation decision was documented and justified.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;tasks.md - Actionable Implementation Plan
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; [ ] 1. Build COBOL parser with AST generation
&lt;span class="p"&gt;  -&lt;/span&gt; [ ] 1.1 Implement lexer for COBOL tokens
&lt;span class="p"&gt;  -&lt;/span&gt; [ ] 1.2 Create parser for IDENTIFICATION, DATA, and PROCEDURE divisions
&lt;span class="p"&gt;  -&lt;/span&gt; [ ] 1.3 Generate AST with source map for error reporting
&lt;span class="p"&gt;  -&lt;/span&gt; _Requirements: 1.1, 1.2, 1.3_
&lt;span class="p"&gt;
-&lt;/span&gt; [ ] 2. Create logic analyzer for banking patterns
&lt;span class="p"&gt;  -&lt;/span&gt; [ ] 2.1 Implement pattern recognizer for interest calculations
&lt;span class="p"&gt;  -&lt;/span&gt; [ ] 2.2 Extract transaction validation rules
&lt;span class="p"&gt;  -&lt;/span&gt; _Requirements: 2.1, 2.2_
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each task referenced specific requirements, making progress trackable and ensuring nothing was missed.&lt;/p&gt;

&lt;p&gt;How This Changed My Development Approach&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Upfront Clarity Eliminated Rework
Old way: Build parser → Realize it doesn't handle CICS transactions → Refactor everything&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Kiro way: Document requirement for CICS support in requirements.md → Design parser architecture to handle it → Implement once correctly&lt;/p&gt;

&lt;p&gt;Impact: Reduced rework by ~70%. Most code worked on first implementation.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Steering Documents Made Kiro a Domain Expert
I created 5 steering documents in .kiro/steering/:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;banking-patterns.md (366 lines):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Interest Accrual Pattern&lt;/span&gt;

&lt;span class="gs"&gt;**COBOL Code:**&lt;/span&gt;
cobol
COMPUTE INTEREST-AMOUNT = PRINCIPAL-BALANCE &lt;span class="err"&gt;*&lt;/span&gt;
    (INTEREST-RATE / 100) &lt;span class="err"&gt;*&lt;/span&gt; (DAYS-ELAPSED / 365).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Business Meaning: Simple interest calculation using actual/365 day-count convention, common in US banking. Division by 100 converts percentage to decimal.&lt;/p&gt;

&lt;p&gt;AWS Translation: Lambda function with business logic, DynamoDB for state, EventBridge for scheduled daily accrual.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;
This transformed Kiro from "generic coding assistant" to "COBOL modernization expert."

&lt;span class="gs"&gt;**Without steering**&lt;/span&gt;: "This code multiplies three numbers"
&lt;span class="gs"&gt;**With steering**&lt;/span&gt;: "This calculates simple interest using actual/365 convention, requires overflow protection for balances &amp;gt;$999,999, and should include audit logging for compliance"

&lt;span class="gu"&gt;### 3. MCP Integration Created Seamless Workflows&lt;/span&gt;

I built COBRA as an MCP server with 5 tools:
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`parseCobol`&lt;/span&gt; - Parse COBOL and generate AST
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`analyzeLogic`&lt;/span&gt; - Extract banking patterns
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`generateSpec`&lt;/span&gt; - Create requirements/design/tasks
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`generateAWSCode`&lt;/span&gt; - Generate Lambda/CDK code
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`suggestModernization`&lt;/span&gt; - Recommend migration strategies

&lt;span class="gs"&gt;**The magic**&lt;/span&gt;: These tools maintain state and cache results.

&lt;span class="gs"&gt;**Example workflow:**&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Me: "Analyze examples/interest-calculation.cbl"&lt;/p&gt;

&lt;p&gt;Kiro: → Calls parseCobol (caches AST) → Calls analyzeLogic (uses cached AST, finds interest pattern) → Calls generateAWSCode (generates Lambda with exact business logic) → Creates files in my workspace → Shows architecture diagram&lt;/p&gt;

&lt;p&gt;Time: &amp;lt;60 seconds Cost: $0.10 (with 80% cache hit rate on subsequent runs)&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Hybrid Approach: Spec-Driven + Vibe Coding
&lt;/h3&gt;

&lt;p&gt;I discovered the best approach combines both:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Spec-driven for architecture&lt;/strong&gt;: Parser, analyzer, generators—these needed precision&lt;br&gt;
&lt;strong&gt;Vibe coding for polish&lt;/strong&gt;: "Make the header match the logo colors"—these needed rapid iteration&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;: Building the web interface&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Spec-driven: Define React components, API endpoints, state management&lt;/li&gt;
&lt;li&gt;Vibe coding: "Use navy/blue theme matching the logo"&lt;/li&gt;
&lt;li&gt;Result: Solid architecture + beautiful UI&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Most Impressive Code Generation
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;orchestrator system with performance optimizations&lt;/strong&gt; blew my mind.&lt;/p&gt;

&lt;p&gt;In one conversation, Kiro generated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complete orchestrator coordinating 5 components&lt;/li&gt;
&lt;li&gt;Three-tier caching system with automatic key generation&lt;/li&gt;
&lt;li&gt;Worker thread pool for parallel processing&lt;/li&gt;
&lt;li&gt;Real-time cost tracking with provider-specific pricing&lt;/li&gt;
&lt;li&gt;Progress tracking with callback system&lt;/li&gt;
&lt;li&gt;Comprehensive error handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What made it impressive&lt;/strong&gt;: Kiro understood complex component interactions, implemented sophisticated caching achieving 80-95% hit rates, and met strict performance targets (10K lines in &amp;lt;30s) on first implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measurable Impact
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Before Kiro&lt;/th&gt;
&lt;th&gt;With Kiro&lt;/th&gt;
&lt;th&gt;Improvement&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Planning Time&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0 hours (just started coding)&lt;/td&gt;
&lt;td&gt;4 hours (requirements + design)&lt;/td&gt;
&lt;td&gt;Better outcomes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Implementation Time&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~40 hours (with extensive rework)&lt;/td&gt;
&lt;td&gt;~20 hours (minimal rework)&lt;/td&gt;
&lt;td&gt;2x faster&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Code Quality&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~60% worked first try&lt;/td&gt;
&lt;td&gt;~90% worked first try&lt;/td&gt;
&lt;td&gt;50% improvement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Written after (if at all)&lt;/td&gt;
&lt;td&gt;Built-in (the spec)&lt;/td&gt;
&lt;td&gt;Always current&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Collaboration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tribal knowledge&lt;/td&gt;
&lt;td&gt;Clear contract (spec docs)&lt;/td&gt;
&lt;td&gt;Team-ready&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Key Lessons Learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. AI Coding Isn't About Speed—It's About Systematic Thinking
&lt;/h3&gt;

&lt;p&gt;Kiro didn't just help me code faster. It helped me &lt;strong&gt;think&lt;/strong&gt; better by forcing me to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clarify requirements before implementation&lt;/li&gt;
&lt;li&gt;Document architectural decisions&lt;/li&gt;
&lt;li&gt;Break complex problems into manageable tasks&lt;/li&gt;
&lt;li&gt;Track progress systematically&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Domain Knowledge Multiplies AI Effectiveness
&lt;/h3&gt;

&lt;p&gt;Generic prompts get generic results. Domain-specific steering documents (banking patterns, modernization strategies) transformed Kiro into a subject matter expert.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Investment&lt;/strong&gt;: 4 hours writing steering docs&lt;br&gt;
&lt;strong&gt;Return&lt;/strong&gt;: Every subsequent conversation was 10x more productive&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Spec-Driven Development Scales
&lt;/h3&gt;

&lt;p&gt;For COBRA's complexity (142 files, 11 major features), spec-driven development was essential. The spec became:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My roadmap (tasks.md)&lt;/li&gt;
&lt;li&gt;My documentation (requirements.md + design.md)&lt;/li&gt;
&lt;li&gt;My quality assurance (acceptance criteria)&lt;/li&gt;
&lt;li&gt;My collaboration tool (clear contract)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. The Best Approach Is Hybrid
&lt;/h3&gt;

&lt;p&gt;Rigid processes kill creativity. Pure chaos creates technical debt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The sweet spot&lt;/strong&gt;: Spec-driven for architecture, vibe coding for polish.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;COBRA is just the beginning. With Kiro's systematic approach, I'm planning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expand COBOL dialect support (Micro Focus, GnuCOBOL)&lt;/li&gt;
&lt;li&gt;Add automated test generation from COBOL test cases&lt;/li&gt;
&lt;li&gt;Build migration progress dashboard with cost tracking&lt;/li&gt;
&lt;li&gt;Create marketplace for sharing modernization patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;p&gt;COBRA is open source: &lt;a href="https://github.com/Shaistaaman/COBRA-COBOL-Banking-Resilience-Agent" rel="noopener noreferrer"&gt;github.com/Shaistaaman/COBRA-COBOL-Banking-Resilience-Agent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The spec-driven approach works for any complex project:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start with requirements.md (what you're building)&lt;/li&gt;
&lt;li&gt;Create design.md (how you'll build it)&lt;/li&gt;
&lt;li&gt;Generate tasks.md (step-by-step implementation)&lt;/li&gt;
&lt;li&gt;Let Kiro execute systematically&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Kiro changed how I approach development by teaching me that &lt;strong&gt;structure amplifies creativity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The spec isn't a constraint—it's a foundation that lets you build confidently, knowing your architecture is sound and your progress is trackable.&lt;/p&gt;

&lt;p&gt;That's my favorite thing about Kiro: it makes complex projects manageable through systematic thinking, domain expertise, and intelligent automation.&lt;/p&gt;

&lt;p&gt;And honestly? It's kind of addictive. #hookedonkiro&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Built with&lt;/strong&gt;: Kiro, TypeScript, React, AWS CDK, Model Context Protocol&lt;br&gt;
&lt;strong&gt;Time&lt;/strong&gt;: 2 weeks from concept to production-ready&lt;br&gt;
&lt;strong&gt;Cost&lt;/strong&gt;: $0 AWS charges during development&lt;br&gt;
&lt;strong&gt;Lines of Code&lt;/strong&gt;: 38,000+ (mostly generated by Kiro)&lt;/p&gt;

&lt;h1&gt;
  
  
  kiro #aws #cobol #modernization #ai #development
&lt;/h1&gt;




&lt;p&gt;&lt;em&gt;Want to see COBRA in action? Check out the &lt;a href="https://github.com/Shaistaaman/COBRA-COBOL-Banking-Resilience-Agent" rel="noopener noreferrer"&gt;live demo&lt;/a&gt; or read the &lt;a href="https://github.com/Shaistaaman/COBRA-COBOL-Banking-Resilience-Agent/tree/main/docs" rel="noopener noreferrer"&gt;comprehensive documentation&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>kiro</category>
      <category>ai</category>
      <category>cobol</category>
      <category>fintech</category>
    </item>
    <item>
      <title>How to Use AWS Bedrock Guardrails to Minimize Input Token Count</title>
      <dc:creator>Shaista Aman Khan</dc:creator>
      <pubDate>Sun, 17 Aug 2025 19:13:51 +0000</pubDate>
      <link>https://dev.to/shaistaaman/how-to-use-aws-bedrock-guardrails-to-minimize-input-token-count-2nhg</link>
      <guid>https://dev.to/shaistaaman/how-to-use-aws-bedrock-guardrails-to-minimize-input-token-count-2nhg</guid>
      <description>&lt;p&gt;When working with large language models (LLMs) on AWS Bedrock, every token matters. The more tokens you use, the higher the cost and the slower the response time. Many developers look for ways to reduce input tokens without losing the quality of responses. One way to achieve this is by using AWS Bedrock Guardrails.&lt;/p&gt;

&lt;p&gt;Guardrails are usually thought of as safety features to filter harmful or unwanted content, but they can also help manage input token usage. Let’s look at how.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Filter Out Irrelevant Inputs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sometimes users enter long and irrelevant text. For example, a support chatbot may receive copy-pasted paragraphs that have little to do with the actual problem. Guardrails can be set up to block or reject inputs that fall outside the allowed topics. This prevents sending unnecessary text to the model and saves tokens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Set Maximum Input Lengths&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Guardrails allow you to set boundaries on the size of inputs. By defining a maximum input length, you make sure the model does not waste resources processing overly long requests. This helps keep responses fast and costs under control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Use Topic Filtering&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If your application is focused on a specific domain, like customer service or healthcare, you can configure Guardrails to only accept relevant inputs. Off-topic requests will be blocked before they reach the model. This reduces the chance of wasting tokens on unrelated content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Combine Guardrails with Pre-Processing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Guardrails work best when combined with a simple pre-processing step. Before sending text to the model:&lt;/p&gt;

&lt;p&gt;Clean up redundant or repeated phrases&lt;/p&gt;

&lt;p&gt;Summarize long passages into shorter versions&lt;/p&gt;

&lt;p&gt;Remove unnecessary details like disclaimers or email signatures&lt;/p&gt;

&lt;p&gt;After this, Guardrails can enforce length limits and topic filters to make sure only useful text is sent to the model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Bedrock Guardrails are more than just safety tools. When used thoughtfully, they can also help reduce token usage by blocking irrelevant, lengthy, or off-topic text. Pairing Guardrails with simple pre-processing steps ensures that your application remains efficient, cost-effective, and focused on what really matters.&lt;/p&gt;

</description>
      <category>bedrock</category>
      <category>aws</category>
      <category>guardrail</category>
      <category>ai</category>
    </item>
    <item>
      <title>CodeFlow: The Debugging Odyssey - Amazon Q and Pygame Adventure</title>
      <dc:creator>Shaista Aman Khan</dc:creator>
      <pubDate>Wed, 28 May 2025 12:21:15 +0000</pubDate>
      <link>https://dev.to/shaistaaman/codeflow-the-debugging-odyssey-a-pygame-adventure-aoa</link>
      <guid>https://dev.to/shaistaaman/codeflow-the-debugging-odyssey-a-pygame-adventure-aoa</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Have you ever wanted to visualize what debugging code feels like? &lt;strong&gt;CodeFlow: The Debugging Odyssey&lt;/strong&gt; transforms the abstract concept of debugging into an engaging 2D game experience. As a "Code Cleaner," you'll navigate through digital landscapes, scan for bugs, and fix them using your debugging powers.&lt;/p&gt;

&lt;p&gt;This blog post will guide you through setting up and playing CodeFlow on your local machine. Whether you're a programming enthusiast, a game developer, or just someone looking for a fun way to understand debugging concepts, this game offers an entertaining experience with educational undertones.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is CodeFlow?
&lt;/h2&gt;

&lt;p&gt;CodeFlow is a 2D game built with Python and Pygame that gamifies the debugging process. The core gameplay revolves around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Moving freely through a digital environment&lt;/li&gt;
&lt;li&gt;Scanning for bugs in your code&lt;/li&gt;
&lt;li&gt;Using your debugging powers (powered by Q-Energy) to fix these bugs&lt;/li&gt;
&lt;li&gt;Collecting Data Bytes to replenish your energy&lt;/li&gt;
&lt;li&gt;Completing levels by fixing all bugs before your health depletes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The game features a cyberpunk-inspired aesthetic with neon colors, particle effects, and a digital atmosphere that makes debugging feel like an adventure rather than a chore.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before you begin, make sure you have the following installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python 3.x&lt;/strong&gt;: The programming language used to build the game&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git&lt;/strong&gt;: For cloning the repository&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 1: Clone the Repository
&lt;/h3&gt;

&lt;p&gt;Open your terminal and run the following command to clone the CodeFlow repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Shaistaaman/CodeFlow/
&lt;span class="nb"&gt;cd &lt;/span&gt;CodeFlow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Set Up the Environment
&lt;/h3&gt;

&lt;p&gt;You have two options for setting up the game environment:&lt;/p&gt;

&lt;h4&gt;
  
  
  Option 1: Using the Installation Script (Recommended)
&lt;/h4&gt;

&lt;p&gt;This is the easiest way to get started, especially if you're new to Python:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Make the installation script executable&lt;/span&gt;
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x install_and_run.sh

&lt;span class="c"&gt;# Run the installation script&lt;/span&gt;
./install_and_run.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This script will:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a virtual environment&lt;/li&gt;
&lt;li&gt;Install Pygame and other dependencies&lt;/li&gt;
&lt;li&gt;Run the game&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Option 2: Manual Setup
&lt;/h4&gt;

&lt;p&gt;If you prefer to set things up manually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create a virtual environment&lt;/span&gt;
python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv

&lt;span class="c"&gt;# Activate the virtual environment&lt;/span&gt;
&lt;span class="c"&gt;# On macOS/Linux:&lt;/span&gt;
&lt;span class="nb"&gt;source &lt;/span&gt;venv/bin/activate
&lt;span class="c"&gt;# On Windows:&lt;/span&gt;
&lt;span class="c"&gt;# venv\Scripts\activate&lt;/span&gt;

&lt;span class="c"&gt;# Install dependencies&lt;/span&gt;
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="c"&gt;# Run the game&lt;/span&gt;
python3 main.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Troubleshooting
&lt;/h3&gt;

&lt;p&gt;If you encounter any issues with the full game, you can try running the simplified version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 simple_game.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fbjgc4ep4y5enj3hjkmgz.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%2Fbjgc4ep4y5enj3hjkmgz.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This version has fewer features but is useful for testing if Pygame is working correctly on your system.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Play
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Controls
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Movement&lt;/strong&gt;: Use arrow keys or WASD to move your character in all directions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Q-Scan&lt;/strong&gt;: Press Q to scan for bugs in your vicinity (highlighted in purple)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Q-Fix&lt;/strong&gt;: Press E to fix highlighted bugs (costs Q-Energy)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collect Data Bytes&lt;/strong&gt;: Move near blue orbs to collect them and replenish your Q-Energy&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Gameplay Tips
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Manage Your Resources&lt;/strong&gt;: Q-Energy is limited, so collect Data Bytes regularly and use your Q-Fix ability strategically.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scan Before Fixing&lt;/strong&gt;: Always use Q-Scan (Q key) before attempting to fix bugs. This highlights them and makes them safe to approach.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Watch Your Health&lt;/strong&gt;: Unhighlighted bugs will damage your health if you touch them. Keep an eye on your health bar in the top-left corner.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use the Scan Range Indicator&lt;/strong&gt;: A faint blue circle shows your scan range. Position yourself to maximize the number of bugs you can scan at once.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Move Strategically&lt;/strong&gt;: You can move in all directions, so use this freedom to navigate efficiently around the level.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Game Screens
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Splash Screen
&lt;/h3&gt;

&lt;p&gt;The game starts with a splash screen showing the title "CodeFlow: The Debugging Odyssey." Press any key to continue.&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%2F7f82p6pwd7zmxdytt6x6.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%2F7f82p6pwd7zmxdytt6x6.png" alt="Image description" width="800" height="469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Main Menu
&lt;/h3&gt;

&lt;p&gt;From here, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start a new debugging session&lt;/li&gt;
&lt;li&gt;Exit the game&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use the up/down arrow keys to navigate and Enter to select.&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%2Fg44s6hu112lkkhgoc4l8.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%2Fg44s6hu112lkkhgoc4l8.png" alt="Image description" width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Loading Screen
&lt;/h3&gt;

&lt;p&gt;A brief loading screen with a progress bar appears before each level.&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%2F0u9x6spfstsy39i3pf7r.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%2F0u9x6spfstsy39i3pf7r.png" alt="Image description" width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Gameplay Screen
&lt;/h3&gt;

&lt;p&gt;This is where the main action happens. You'll see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your character (the Code Cleaner)&lt;/li&gt;
&lt;li&gt;Bugs that need fixing&lt;/li&gt;
&lt;li&gt;Data Bytes to collect&lt;/li&gt;
&lt;li&gt;HUD showing your health, Q-Energy, and remaining bugs&lt;/li&gt;
&lt;/ul&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%2Fq9htw4gspum09904l7k5.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%2Fq9htw4gspum09904l7k5.png" alt="Image description" width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Level Complete Screen
&lt;/h3&gt;

&lt;p&gt;When you fix all bugs, you'll see your stats:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Time taken&lt;/li&gt;
&lt;li&gt;Bugs fixed&lt;/li&gt;
&lt;li&gt;Final score&lt;/li&gt;
&lt;/ul&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%2Fucyevq5kf6ckw32jmm59.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%2Fucyevq5kf6ckw32jmm59.png" alt="Image description" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Game Over Screen
&lt;/h3&gt;

&lt;p&gt;If your health reaches zero, you'll see the "PROGRAM CRASHED!" screen. Press any key to return to the menu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Code Structure
&lt;/h2&gt;

&lt;p&gt;If you're interested in how the game works or want to modify it, here's a brief overview of the code structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;main.py&lt;/code&gt;: The entry point that initializes the game&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;settings.py&lt;/code&gt;: Contains game constants and configuration&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;game_states.py&lt;/code&gt;: Manages different game screens and states&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;game_objects.py&lt;/code&gt;: Defines game objects like Player, Bug, DataByte, and Particle&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;assets/&lt;/code&gt;: Directory for game assets (currently empty, ready for future expansion)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a more detailed look at the architecture, check out the &lt;code&gt;architecture.md&lt;/code&gt; file in the repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Extending the Game
&lt;/h2&gt;

&lt;p&gt;Want to add your own features? Here are some ideas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;New Bug Types&lt;/strong&gt;: Create different kinds of bugs with unique behaviors&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Power-Ups&lt;/strong&gt;: Add special abilities or temporary boosts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple Levels&lt;/strong&gt;: Design different levels with increasing difficulty&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sound Effects&lt;/strong&gt;: Add audio feedback for actions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual Improvements&lt;/strong&gt;: Enhance the graphics with sprites and animations&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Educational Value
&lt;/h2&gt;

&lt;p&gt;Beyond being fun, CodeFlow helps visualize important programming concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Debugging&lt;/strong&gt;: The core gameplay mechanic of finding and fixing bugs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource Management&lt;/strong&gt;: Balancing energy usage with collection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Problem Solving&lt;/strong&gt;: Strategic planning to fix bugs efficiently&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Health&lt;/strong&gt;: The consequences of letting bugs accumulate&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;CodeFlow: The Debugging Odyssey transforms the often frustrating experience of debugging into an engaging game. By visualizing bugs as entities that can be scanned and fixed, it provides a fresh perspective on programming concepts while delivering an entertaining gameplay experience.&lt;/p&gt;

&lt;p&gt;Whether you're using it as a fun break from actual coding or as an educational tool to introduce programming concepts, CodeFlow offers a unique blend of entertainment and learning.&lt;/p&gt;

&lt;p&gt;Clone the repository, set up your environment, and start your debugging adventure today!&lt;/p&gt;

</description>
      <category>generativeai</category>
      <category>amazonqcli</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Architecting for Efficiency: Building Robust DynamoDB Models for Real-World Use Cases</title>
      <dc:creator>Shaista Aman Khan</dc:creator>
      <pubDate>Mon, 29 Jan 2024 16:43:41 +0000</pubDate>
      <link>https://dev.to/shaistaaman/architecting-for-efficiency-building-robust-dynamodb-models-for-real-world-use-cases-1iff</link>
      <guid>https://dev.to/shaistaaman/architecting-for-efficiency-building-robust-dynamodb-models-for-real-world-use-cases-1iff</guid>
      <description>&lt;p&gt;Solutions Architect 🧑‍💻👷 are tech doctor? 🩺 &lt;/p&gt;

&lt;p&gt;I usually listen to tech podcasts and events. I talk to numerous customers and give them the best possible solution which is efficient and within their budget. Just like a doctor listens to your symptoms, takes tests, and diagnoses the illness, a Solutions Architect dives deep into your business needs. I gather requirements, analyze pain points, and understand the goals. &lt;/p&gt;

&lt;p&gt;While working on a project I got the chance to introduce myself to AWS Serverless services mainly Lambda, API Gateway, Step Function, Dynamodb, and more. Cloud's true power lies in customization and to get more value you have to architect for efficiency and cost-effectiveness. &lt;/p&gt;

&lt;p&gt;In this blog, I will be referring to &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=PVUofrFiS_A&amp;amp;ab_channel=AWSEvents"&gt;Ref Video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This video is about advanced data modeling with DynamoDB. The speaker, Alex Debries, is an AWS data hero and an expert in DynamoDB. He has written a book on DynamoDB and has spoken at several conferences about it. At Reinvent 2023, he effectively presented advanced data modeling tips for a real-world use case.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DynamoDB Basics:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Key terms: tables, items, primary keys, and attributes&lt;/li&gt;
&lt;li&gt;Example of an airline application using DynamoDB&lt;/li&gt;
&lt;li&gt;Different types of primary keys: simple and composite
Item collections.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Designing for DynamoDB:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding how DynamoDB stores data under the hood&lt;/li&gt;
&lt;li&gt;Knowing your access patterns: read and write patterns&lt;/li&gt;
&lt;li&gt;Thinking about constraints and data distribution&lt;/li&gt;
&lt;li&gt;Choosing the right item size&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advanced Data Modeling Patterns:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Booking a flight with DynamoDB: right patterns and constraints&lt;/li&gt;
&lt;li&gt;Handling complex filtering with external systems&lt;/li&gt;
&lt;li&gt;Integrating DynamoDB with other tools: Elasticsearch, S3&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's dive into some Dynamodb basics:&lt;/p&gt;

&lt;p&gt;DynamoDB is a NoSQL database offered by Amazon Web Services. A NoSQL database is a database that doesn't have a fixed schema, unlike relational databases. This means that you don't have to specify the data types for each attribute upfront.&lt;/p&gt;

&lt;p&gt;A DynamoDB table is a collection of items. Each item is a collection of attributes. An attribute is a name-value pair. The primary key is a unique identifier for an item.&lt;/p&gt;

&lt;p&gt;There are two types of primary keys: simple and composite.&lt;/p&gt;

&lt;p&gt;A simple &lt;strong&gt;primary key&lt;/strong&gt; has a single element, a partition key. A partition key is used to determine how data is partitioned across DynamoDB's servers.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;composite primary&lt;/strong&gt; key has two elements, a partition key and a sort key. A sort key is used to further partition data within a partition.&lt;/p&gt;

&lt;p&gt;Let's use an example of an airline application. In this example, the partition key would be the &lt;u&gt;customer ID&lt;/u&gt; and the sort key would be the &lt;u&gt;flight ID&lt;/u&gt;.&lt;/p&gt;

&lt;p&gt;Let's see item collections. Item collections are a set of records that have the same partition key in a table with a composite primary key.&lt;/p&gt;

&lt;p&gt;Here are the steps on how to achieve item collections in the AWS console:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a table with a composite primary key. Like Customer_ID as the partition key and Flight_ID as the sort key.&lt;/li&gt;
&lt;li&gt;Use the partition key to query for items. You can run a query in AWS Console to see the results.&lt;/li&gt;
&lt;li&gt;The results will include all items that have the same partition key, regardless of the sort key value.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's deep dive into the details:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Understanding Data Storage Under the Hood:
&lt;/h2&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%2Fkh0wd6q494h2fveser7g.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%2Fkh0wd6q494h2fveser7g.png" alt="Image description" width="800" height="851"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Partitions:&lt;/strong&gt; DynamoDB partitions data based on the partition key (part of the primary key). Items with the same partition key are stored together in a partition.&lt;/p&gt;

&lt;p&gt;**Distribution: **Partitions are distributed across multiple servers for scalability and availability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read/Write Capacity Units (RCUs/WCUs):&lt;/strong&gt; You provision RCUs and WCUs to handle expected read/write traffic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Table: CustomerOrders&lt;/li&gt;
&lt;li&gt;Primary Key: CustomerID (partition key)&lt;/li&gt;
&lt;li&gt;Data Distribution: Orders for each customer are stored together in a partition.&lt;/li&gt;
&lt;li&gt;RCUs/WCUs: Allocate based on expected order volume.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Knowing Your Access Patterns:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Identify common queries and updates:&lt;/strong&gt; This dictates table structure and indexing.&lt;br&gt;
&lt;strong&gt;Consider read/write frequency and volume:&lt;/strong&gt; Allocate RCUs/WCUs accordingly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&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%2Fhdqvuf5pf9w2eb0n8fpu.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%2Fhdqvuf5pf9w2eb0n8fpu.png" alt="Image description" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frequent query: Retrieve all orders for a specific customer.&lt;/li&gt;
&lt;li&gt;Table structure: Ensure CustomerID is the partition key.&lt;/li&gt;
&lt;li&gt;Indexing: Create a Global Secondary Index (GSI) if you need to query by other attributes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Thinking About Constraints:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Item size limit:&lt;/strong&gt; 400 KB per item.&lt;br&gt;
&lt;strong&gt;Attribute size limit:&lt;/strong&gt; 400 KB per attribute.&lt;br&gt;
&lt;strong&gt;10 GB per partition:&lt;/strong&gt; Distribute data evenly to avoid "hot" partitions.&lt;/p&gt;

&lt;p&gt;For more indepth understandin on this, see &lt;a href="https://haithai91.medium.com/dynamodb-core-concept-interview-challenge-c896864799b1"&gt;DynamoDB Core Concept Interview Challenge by Kobe&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Large orders: Store order details in a separate table or S3, referencing them in the main table.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Choosing the Right Item Size:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Balance granularity and performance:&lt;/strong&gt; Smaller items generally mean faster reads/writes.&lt;br&gt;
&lt;strong&gt;Denormalize data if needed:&lt;/strong&gt; Combine related data for frequent access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer information: Store address, contact details, etc., within the customer item for frequent retrieval.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Additional Considerations:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GSIs:&lt;/strong&gt; Create secondary indexes for flexible querying, but be mindful of additional costs and write overhead.&lt;br&gt;
&lt;strong&gt;Data modeling best practices:&lt;/strong&gt;&lt;br&gt;
Use composite primary keys (partition key + sort key) for efficient retrieval and sorting.&lt;br&gt;
Consider single-table design for related data.&lt;br&gt;
Use GSIs judiciously.&lt;br&gt;
&lt;strong&gt;Monitoring and optimization:&lt;/strong&gt; Track performance and adjust as needed.&lt;/p&gt;

&lt;p&gt;Remember:&lt;/p&gt;

&lt;p&gt;DynamoDB is a powerful, scalable NoSQL database, but careful design is crucial for optimal performance and cost-efficiency.&lt;br&gt;
Understanding these key concepts will guide you in creating effective DynamoDB data models.&lt;/p&gt;

&lt;p&gt;Moving on to the next level and applying what has been discussed so far:&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced Data Modeling Patterns in DynamoDB:
&lt;/h2&gt;

&lt;p&gt;Here's a step-by-step breakdown of the data access patterns, using the example of booking a flight:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Booking a Flight with DynamoDB:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;a. Right Patterns and Constraints:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tables:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;u&gt;Flights:&lt;/u&gt; Stores flight details (flight ID, origin, destination, date, etc.).&lt;/li&gt;
&lt;li&gt;
&lt;u&gt;Bookings:&lt;/u&gt; Records passenger bookings with references to flights and users.&lt;/li&gt;
&lt;li&gt;
&lt;u&gt;Users:&lt;/u&gt; Stores user information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Primary Keys:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flights: &lt;u&gt;FlightID&lt;/u&gt; (simple primary key).&lt;/li&gt;
&lt;li&gt;Bookings: &lt;u&gt;BookingID &lt;/u&gt;(simple primary key).&lt;/li&gt;
&lt;li&gt;Users: &lt;u&gt;UserID&lt;/u&gt; (simple primary key).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Secondary Indexes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Global Secondary Index (GSI) on Bookings for FlightID to efficiently query bookings for a specific flight.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Constraints:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limit Flight size to avoid exceeding the item size limit.&lt;/li&gt;
&lt;li&gt;Use timestamps for booking creation and modification for filtering.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;b. Booking Process:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User searches for flights using flight details.&lt;/li&gt;
&lt;li&gt;Query the Flights table by desired criteria.&lt;/li&gt;
&lt;li&gt;User selects a flight and books it.&lt;/li&gt;
&lt;li&gt;Create a new item in Bookings with references to user and flight.&lt;/li&gt;
&lt;li&gt;Update user availability in the Users table.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Handling Complex Filtering with External Systems:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; Users search for flights with complex criteria (price range, multiple connections, etc.).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store basic flight data in DynamoDB for fast querying.&lt;/li&gt;
&lt;li&gt;Offload complex filtering and aggregation to an external system like Elasticsearch.&lt;/li&gt;
&lt;li&gt;Use DynamoDB as the source of truth for booking data.&lt;/li&gt;
&lt;li&gt;Integrate your application with Elasticsearch to retrieve filtered results and book flights in DynamoDB.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Integrating DynamoDB with Other Tools:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;a. Elasticsearch:&lt;/u&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%2Freisw56z2hrhiozctsdl.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%2Freisw56z2hrhiozctsdl.png" alt="Image description" width="281" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use it for complex search and aggregation of flight data with advanced features like faceting and geospatial searches.&lt;/li&gt;
&lt;li&gt;Keep basic flight data in DynamoDB for fast lookups and booking.&lt;/li&gt;
&lt;li&gt;Synchronize data between DynamoDB and Elasticsearch for consistency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;u&gt;b. S3:&lt;/u&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%2Fvfloxqa5rzc6pwcbobgf.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%2Fvfloxqa5rzc6pwcbobgf.png" alt="Image description" width="684" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store large files like images, PDFs, or flight logs related to bookings.&lt;/li&gt;
&lt;li&gt;Use DynamoDB to store references to files in S3.&lt;/li&gt;
&lt;li&gt;Leverage S3's scalability and cost-effective storage for large data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Remember:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose the right patterns based on your data access patterns and complexity.&lt;/li&gt;
&lt;li&gt;Leverage external systems when DynamoDB alone cannot handle specific tasks.&lt;/li&gt;
&lt;li&gt;Maintain data consistency and synchronization between different tools.
These patterns could be refined based on your specific requirements and application needs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is recommended to watch two other DynamoDB talks at Reinvent 2023: DAT329 and DAT330 for in-depth knowledge of the underlying architecture of Dynamodb.&lt;/p&gt;

</description>
      <category>dynamodb</category>
      <category>nosql</category>
      <category>datamodeling</category>
      <category>dataaccesspattern</category>
    </item>
    <item>
      <title>Understanding GitHub Actions</title>
      <dc:creator>Shaista Aman Khan</dc:creator>
      <pubDate>Mon, 27 Nov 2023 11:28:37 +0000</pubDate>
      <link>https://dev.to/shaistaaman/understanding-github-actions-3a0b</link>
      <guid>https://dev.to/shaistaaman/understanding-github-actions-3a0b</guid>
      <description>&lt;p&gt;GitHub Actions is a powerful tool provided by GitHub that allows developers to automate workflows for their repositories. It enables automation of tasks such as testing, building, and deploying applications directly from the GitHub repository. In this comprehensive guide, we will explore the various components of GitHub Action.&lt;br&gt;
Some useful links to study in depth about github actions:&lt;br&gt;
&lt;a href="https://docs.github.com/en/rest/quickstart?apiVersion=2022-11-28"&gt;Github Quick Start&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/marketplace?type=actions"&gt;Github Actions Marketplace&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.github.com/en/actions/guides"&gt;Guides for GitHub Actions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Components of GitHub Actions&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;1. Workflow&lt;/strong&gt;&lt;br&gt;
A workflow in GitHub Actions is a configurable automated process that comprises one or more jobs. It is defined using a YAML file named workflow.yml placed in the .github/workflows directory of your repository. Workflows can be triggered based on events like pushes, pull requests, or schedules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Jobs&lt;/strong&gt;&lt;br&gt;
Jobs are a collection of steps that execute on the same runner. Workflows can contain multiple jobs that run in parallel or sequentially. Each job can define the environment, execution platform, and steps needed to complete the job's tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Steps&lt;/strong&gt;&lt;br&gt;
Steps are individual tasks within a job. They represent the actions performed during the job execution. Each step can be a shell command, an action, or a reference to an external action defined by the community or the repository owner.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Actions&lt;/strong&gt;&lt;br&gt;
Actions are shareable and reusable units of code that can perform specific tasks. They encapsulate individual tasks, making it easier to reuse code across workflows. Actions can be created by the community or by the repository owner and can be used in workflows to perform tasks like building, testing, or deploying applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Runners&lt;/strong&gt;&lt;br&gt;
Runners execute jobs in a GitHub Actions workflow. GitHub provides hosted runners with various operating systems (Linux, macOS, Windows) and environments pre-installed. Alternatively, self-hosted runners can be used to customize the execution environment.&lt;/p&gt;

&lt;p&gt;Here is how a GitHub action .yml file looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: Deploy Reactjs App

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2

      # Add steps to build and deploy the Reactjs application


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that we understand the fundamental components of GitHub Actions, in the next blog let's proceed with a step-by-step tutorial to deploy a Reactjs application in AWS S3 using GitHub Actions.&lt;/p&gt;

</description>
      <category>github</category>
      <category>githubactions</category>
      <category>devops</category>
      <category>git</category>
    </item>
    <item>
      <title>Navigating the Storage Spectrum: Data, Files, Blocks, and Objects</title>
      <dc:creator>Shaista Aman Khan</dc:creator>
      <pubDate>Wed, 08 Nov 2023 11:30:48 +0000</pubDate>
      <link>https://dev.to/shaistaaman/navigating-the-storage-spectrum-data-files-blocks-and-objects-382</link>
      <guid>https://dev.to/shaistaaman/navigating-the-storage-spectrum-data-files-blocks-and-objects-382</guid>
      <description>&lt;p&gt;In our ever-connected, data-driven world, storage lies at the heart of our digital existence. The way we store, manage, and access our data can make a world of difference, both for individuals and organizations. There's no one-size-fits-all solution, as the landscape of storage is as diverse as the data itself. From structured to unstructured, from files and blocks to objects and more, each storage type plays a unique role in the realm of information management. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uMygL9e---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8vngwcwi9pvq8psd75qz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uMygL9e---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8vngwcwi9pvq8psd75qz.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this blog, we will explore the storage universe, its various types, and their vital roles in our data-driven lives. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. File Storage:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; File storage is a traditional method of storing data, where files are organized into directories and folders. It allows multiple users or applications to access and share files simultaneously.&lt;br&gt;
&lt;strong&gt;AWS:&lt;/strong&gt; Amazon Elastic File System (EFS) is an AWS service that provides scalable and fully managed file storage, making it easy to set up and share files across multiple EC2 instances. It's well-suited for use cases like content management systems and shared application data.&lt;br&gt;
&lt;strong&gt;Alibaba Cloud:&lt;/strong&gt; Alibaba Cloud Network Attached Storage (NAS) offers fully managed file storage that can be accessed by multiple ECS instances, providing a shared file system for applications.&lt;br&gt;
&lt;strong&gt;Google Cloud:&lt;/strong&gt; Google Cloud Filestore is a managed file storage service designed for enterprise workloads. It allows you to create NFS file shares that can be mounted by multiple virtual machines.&lt;br&gt;
&lt;strong&gt;Microsoft Azure:&lt;/strong&gt; Microsoft Azure File Storage provides fully managed file shares that can be accessed by multiple virtual machines. It is a scalable and reliable solution for file storage in the cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Block Storage:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Block storage involves dividing data into fixed-sized blocks and is typically used for more structured, low-level data storage. It is suitable for applications requiring high-speed data transfer and low-latency access.&lt;br&gt;
&lt;strong&gt;AWS:&lt;/strong&gt; Amazon Elastic Block Store (EBS) is a block storage service that allows you to attach persistent block storage volumes to EC2 instances. It's commonly used for hosting databases, running applications, and storing critical data that requires high performance and reliability.&lt;br&gt;
&lt;strong&gt;Alibaba Cloud:&lt;/strong&gt; Alibaba Cloud Elastic Block Storage (EBS) offers high-performance block storage that can be attached to Elastic Compute Service (ECS) instances, suitable for applications that require low-latency and high-speed storage.&lt;br&gt;
&lt;strong&gt;Google Cloud:&lt;/strong&gt; Google Cloud Persistent Disks provide block storage for virtual machine instances. They can be used with Compute Engine instances and offer features like snapshots and auto-resizing.&lt;br&gt;
&lt;strong&gt;Microsoft Azure:&lt;/strong&gt; Microsoft Azure Disk Storage provides block storage that can be attached to Azure virtual machines. Azure Managed Disks simplify disk management, offering high availability and scalability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Object Storage:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Object storage is a data storage architecture that manages data as objects, each with its own unique identifier, metadata, and data. It is well-suited for unstructured data and large-scale storage needs.&lt;br&gt;
&lt;strong&gt;AWS:&lt;/strong&gt; Amazon Simple Storage Service (S3) is a prime example of object storage. AWS S3 allows you to store and retrieve data as objects in buckets. It's suitable for various use cases, including data backups, web hosting, multimedia storage, and data archiving.&lt;br&gt;
&lt;strong&gt;Alibaba Cloud:&lt;/strong&gt; Alibaba Cloud Object Storage Service (OSS) is a highly scalable object storage solution designed for the storage and retrieval of unstructured data, such as images, videos, and backups.&lt;br&gt;
&lt;strong&gt;Google Cloud:&lt;/strong&gt; Google Cloud Storage is a versatile object storage service for storing and retrieving objects of any size. It's commonly used for hosting media files, data backups, and serving static website content.&lt;br&gt;
&lt;strong&gt;Microsoft Azure:&lt;/strong&gt; Microsoft Azure Blob Storage is an object storage service that can store and manage unstructured data. It is suitable for a wide range of use cases, including data archiving, content delivery, and IoT data storage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Data Storage:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Data storage refers to the broader category of storing and managing structured or unstructured data. It encompasses various storage types and is essential for data management and analysis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structured Data:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;AWS:&lt;/strong&gt; Amazon Relational Database Service (RDS) is an AWS service that provides managed relational databases, suitable for structured data storage and management.&lt;br&gt;
&lt;strong&gt;Alibaba Cloud:&lt;/strong&gt; ApsaraDB for RDS (Relational Database Service) offers a highly reliable and scalable SQL database service. It's the go-to choice for hosting structured data, such as transaction records, customer information, and financial data, and supports popular relational database engines like MySQL, PostgreSQL, and SQL Server.&lt;br&gt;
&lt;strong&gt;Google Cloud:&lt;/strong&gt; Cloud SQL is a fully managed SQL database service that facilitates the storage and retrieval of structured data. It's suitable for managing structured data like customer records, inventory data, and business applications using popular SQL database engines.&lt;br&gt;
&lt;strong&gt;Microsoft Azure:&lt;/strong&gt; SQL Database is a fully managed SQL database service designed for structured data storage and processing. It provides a robust platform for hosting relational data, making it a great choice for applications that rely on SQL databases for structured data management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unstructured Data:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;AWS:&lt;/strong&gt; Amazon DynamoDB is an AWS service that offers a highly scalable, NoSQL database for unstructured or semi-structured data storage. It is ideal for applications that require flexible and fast storage and retrieval of unstructured data, such as JSON documents and key-value pairs.&lt;br&gt;
&lt;strong&gt;Alibaba Cloud:&lt;/strong&gt; Table Store is a NoSQL database service suitable for managing unstructured or semi-structured data. It's an excellent choice for applications dealing with non-relational data types, such as JSON documents and key-value pairs.&lt;br&gt;
&lt;strong&gt;Google Cloud:&lt;/strong&gt; Firestore is a NoSQL database designed for managing semi-structured and unstructured data. It's well-suited for handling documents, JSON data, and other non-relational data types.&lt;br&gt;
&lt;strong&gt;Azure:&lt;/strong&gt; Cosmos DB is Microsoft's globally distributed, multi-model database service that supports NoSQL data storage. It offers a flexible and scalable solution for managing unstructured and semi-structured data, making it ideal for a wide range of applications.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>alibaba</category>
      <category>googlecloud</category>
      <category>azure</category>
    </item>
    <item>
      <title>Data-Driven Decision Making</title>
      <dc:creator>Shaista Aman Khan</dc:creator>
      <pubDate>Tue, 07 Nov 2023 13:50:00 +0000</pubDate>
      <link>https://dev.to/shaistaaman/data-driven-decision-making-3plj</link>
      <guid>https://dev.to/shaistaaman/data-driven-decision-making-3plj</guid>
      <description>&lt;p&gt;Data-driven decisions are important because they help businesses make informed choices that are based on evidence and analysis. This can lead to better outcomes, such as increased profits, improved customer satisfaction, and reduced risk.&lt;/p&gt;

&lt;p&gt;There are many reasons why data-driven decision-making is good for businesses.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It can help businesses to identify and solve problems. By analyzing data, businesses can identify areas where they are not performing well and take steps to improve.&lt;/li&gt;
&lt;li&gt;It can help businesses to make better decisions about resource allocation. By understanding how their resources are being used, businesses can make more informed decisions about where to allocate them.&lt;/li&gt;
&lt;li&gt;It can help businesses to improve customer satisfaction. By understanding their customers' needs and wants, businesses can provide them with better products and services.&lt;/li&gt;
&lt;li&gt;It can help businesses to reduce risk. By understanding the risks they face, businesses can take steps to mitigate those risks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Data-driven decision-making is a powerful tool that can help businesses of all sizes to achieve their goals. Here are 6 steps of data-driven decision-making:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Ask questions and define the problem:&lt;/strong&gt;&lt;br&gt;
Before you start analysing data, it's important to clearly define the problem you're trying to solve or the question you're trying to answer. This will help you focus your data collection and analysis efforts.&lt;br&gt;
&lt;strong&gt;Example:&lt;/strong&gt; If you're a marketing manager for a clothing company, you might want to know which marketing campaigns are most effective in reaching your target audience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Prepare data by collecting and storing the information:&lt;/strong&gt;&lt;br&gt;
Once you know what you're trying to achieve, you need to collect the relevant data. This data can come from a variety of sources, such as sales records, website analytics, or social media data.&lt;br&gt;
&lt;strong&gt;Example:&lt;/strong&gt; To find out which marketing campaigns are most effective, you might collect data on website traffic, email open rates, and social media engagement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Process data by cleaning and checking the information:&lt;/strong&gt;&lt;br&gt;
Before you can analyse data, you need to make sure it's accurate and complete. This may involve identifying and correcting errors, handling missing values, and transforming data into a format that's suitable for analysis.&lt;br&gt;
&lt;strong&gt;Example:&lt;/strong&gt; You might find that some of your website traffic data is missing or inaccurate. You'll need to clean up this data before you can use it to draw any conclusions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ipm5p_tx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u83gg2xlt6dfqhunpbrt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ipm5p_tx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u83gg2xlt6dfqhunpbrt.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Analyse data to find patterns, relationships, and trends:&lt;/strong&gt;&lt;br&gt;
Once your data is clean and ready to go, you can start to analyse it to find patterns, relationships, and trends. This can be done using a variety of statistical and data mining techniques.&lt;br&gt;
&lt;strong&gt;Example:&lt;/strong&gt; You might use statistical analysis to determine which marketing campaigns have a statistically significant impact on website traffic, email open rates, and social media engagement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Share data with your audience:&lt;/strong&gt;&lt;br&gt;
Once you've analysed your data, you need to communicate your findings to others. This could involve creating reports, presentations, or dashboards.&lt;br&gt;
&lt;strong&gt;Example:&lt;/strong&gt; You might create a report that summarises the results of your analysis and includes charts, graphs, and tables that illustrate your findings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Act on the data and use the analysis results:&lt;/strong&gt;&lt;br&gt;
The final step in the data-driven decision-making process is to act on the data and use the analysis results to make informed decisions. This could involve implementing new marketing campaigns, adjusting your budget, or changing your product strategy.&lt;br&gt;
&lt;strong&gt;Example:&lt;/strong&gt; Based on the results of your analysis, you might decide to allocate more marketing budget to campaigns that have been shown to be effective in reaching your target audience.&lt;/p&gt;

&lt;p&gt;Remember, data-driven decision-making is an iterative process. You may need to go back and forth between steps as you learn more about your data and the problem you're trying to solve.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Battle of the AWS Managed Services: Amplify &lt;-&gt; Application Composer &lt;-&gt; Cloud Formation</title>
      <dc:creator>Shaista Aman Khan</dc:creator>
      <pubDate>Mon, 30 Oct 2023 11:14:07 +0000</pubDate>
      <link>https://dev.to/shaistaaman/the-battle-of-the-aws-managed-services-amplify-application-composer-4ocl</link>
      <guid>https://dev.to/shaistaaman/the-battle-of-the-aws-managed-services-amplify-application-composer-4ocl</guid>
      <description>&lt;p&gt;AWS Amplify, AWS Application Composer, and AWS CloudFormation are three different AWS services that help developers build and manage cloud applications. Each service has its own unique strengths and use cases, so it is important to choose the right one for your specific needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Amplify&lt;/strong&gt; is a full-stack development framework that helps developers build, ship, and host web and mobile applications on AWS. Amplify provides a wide range of features and services, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Backend services:&lt;br&gt;
Amplify provides pre-built backend services, such as authentication, storage, and API management, which can be easily integrated into your application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Frontend libraries: &lt;br&gt;
Amplify provides a library of pre-built frontend components for popular web and mobile frameworks, such as React, Angular, and NativeScript.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deployment and hosting:&lt;br&gt;
Amplify makes it easy to deploy and host your application on AWS, with CI/CD integration and built-in security features.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AWS Application Composer&lt;/strong&gt; is a visual builder for modern applications on AWS. Application Composer makes it easy to design and deploy your application architecture without having to write any code. With Application Composer, you can drag and drop AWS services onto a canvas to create a visual representation of your application. Application Composer will then generate the necessary infrastructure as code (IaC) templates for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS CloudFormation&lt;/strong&gt; is a template-based service for provisioning and managing AWS resources. CloudFormation templates are written in JSON or YAML, and they define the resources that you want to create and how you want them to be configured. CloudFormation can be used to provision any AWS resource, including EC2 instances, S3 buckets, and Lambda functions.&lt;/p&gt;

&lt;p&gt;Here is a table that summarizes the key differences between AWS Amplify, AWS Application Composer, and AWS CloudFormation:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WxUTOJ8r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ofjm4psde7z8w0qh8jks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WxUTOJ8r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ofjm4psde7z8w0qh8jks.png" alt="Image description" width="800" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are a full-stack developer and you want to have more control over your application architecture, then AWS Application Composer is a good option. Application Composer makes it easy to design and deploy your application architecture without having to write any code.&lt;/p&gt;

&lt;p&gt;If you are an experienced developer and you need more flexibility in how you provision and manage your AWS resources, then AWS CloudFormation is a good option. CloudFormation allows you to define your infrastructure as code, which gives you more control over your environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example use cases&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here are some example use cases for each service:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Amplify&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Building a web application using React and hosting it on AWS&lt;/li&gt;
&lt;li&gt;Developing a mobile app using NativeScript and using AWS Amplify for authentication and storage&lt;/li&gt;
&lt;li&gt;Creating a serverless backend for your web or mobile application&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;AWS Application Composer&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Designing and deploying a serverless application architecture using AWS Lambda, Amazon EventBridge, and Amazon S3&lt;/li&gt;
&lt;li&gt;Creating a multi-tier architecture with EC2 instances, RDS databases, and S3 buckets&lt;/li&gt;
&lt;li&gt;Deploying a complex application architecture with multiple microservices and interconnected resources&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;AWS CloudFormation&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Provisioning and managing the infrastructure for a new AWS account&lt;/li&gt;
&lt;li&gt;Creating a template for a development environment that you can deploy to multiple AWS accounts&lt;/li&gt;
&lt;li&gt;Creating a template for a production environment that meets your specific compliance requirements&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Amplify and AWS Application Composer are powerful tools that can help you build and manage cloud applications. The best service for you will depend on your specific needs and requirements. Both of them are evolving services and new features and capabilities are being added all the time. It is important to stay up-to-date on the latest developments so that you can choose the best service for your needs.&lt;/p&gt;

</description>
      <category>amplify</category>
      <category>applicationcomposer</category>
      <category>managedservices</category>
      <category>cloudformation</category>
    </item>
    <item>
      <title>AWS Route 53 Routing Policies &amp; Record Sets: A Comprehensive Guide to Efficient Domain Management</title>
      <dc:creator>Shaista Aman Khan</dc:creator>
      <pubDate>Tue, 17 Oct 2023 04:18:15 +0000</pubDate>
      <link>https://dev.to/shaistaaman/aws-route-53-routing-policies-a-comprehensive-guide-to-efficient-domain-management-43l6</link>
      <guid>https://dev.to/shaistaaman/aws-route-53-routing-policies-a-comprehensive-guide-to-efficient-domain-management-43l6</guid>
      <description>&lt;p&gt;In previous blogs, we bought a domain and created a hosted zone. To add a record set first you need to understand routing policies and types of record sets to efficiently manage your domain. Now, let's explore the various routing policies and record set types offered by Route 53:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mft_TN78--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zb0fe45bv9gkkqdx04w6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mft_TN78--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zb0fe45bv9gkkqdx04w6.png" alt="Image description" width="800" height="710"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Routing Policies:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;1. Simple Routing Policy&lt;/strong&gt;&lt;br&gt;
The Simple Routing Policy allows you to map a single DNS record to multiple IP addresses. When a query is made, Route 53 returns all associated IP addresses in a round-robin fashion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Weighted Routing Polic&lt;/strong&gt;y&lt;br&gt;
The Weighted Routing Policy enables you to split traffic based on different weights assigned to each resource record set. This means you can direct more traffic to certain endpoints and less to others, making it ideal for load balancing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Latency Routing Policy&lt;/strong&gt;&lt;br&gt;
The Latency Routing Policy directs traffic based on the lowest network latency between the user and the endpoint. Users are routed to the server with the least latency, ensuring the best performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Failover Routing Policy&lt;/strong&gt;&lt;br&gt;
The Failover Routing Policy is used for high-availability setups. You can configure a primary resource and a secondary (backup) resource. Route 53 monitors the health of the primary resource and automatically switches to the backup resource if the primary one becomes unavailable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Geolocation Routing Policy&lt;/strong&gt;&lt;br&gt;
The Geolocation Routing Policy allows you to route traffic based on the geographic location of the user. You can define policies that specify which resource to use for users from specific regions or countries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Geoproximity Routing Policy&lt;/strong&gt;&lt;br&gt;
The Geoproximity Routing Policy takes geographical proximity into account. It routes traffic based on the physical location of your resources and the location of your users, enabling you to optimize traffic routing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Multi-Value Routing Policy&lt;/strong&gt;&lt;br&gt;
The Multi-Value Routing Policy is similar to the Simple Routing Policy but allows you to associate multiple values (IP addresses or resources) with a single DNS name. This provides fault tolerance and load balancing.&lt;/p&gt;

&lt;p&gt;AWS Route 53 is a fundamental component of building reliable and scalable web applications. The ability to choose from various routing policies empowers you to fine-tune traffic routing to meet your specific needs. By understanding the definitions and use cases of these routing policies, you can ensure that your applications run smoothly, deliver high performance, and remain highly available. So, whether you're directing traffic for a simple website or a complex application, Route 53's routing policies offer you the flexibility and control you need for efficient domain management. For more details &lt;a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html"&gt;Route 53 Routing ploicies&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let's jump into record set type. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Record Set:&lt;/strong&gt; &lt;br&gt;
A record set is a collection of DNS records that share the same name and type. These records specify how Route 53 responds to DNS queries for a specific domain name.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nX2OLw0f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bvdmkado12to3mn1wc5c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nX2OLw0f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bvdmkado12to3mn1wc5c.png" alt="Image description" width="459" height="706"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;1. A Record Set (IPv4 Address)&lt;/strong&gt;&lt;br&gt;
An "A" record set maps a domain name to one or more IPv4 addresses. It's the most common record set type used for pointing domain names to web servers, email servers, or any service with an IPv4 address.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. AAAA Record Set (IPv6 Address)&lt;/strong&gt;&lt;br&gt;
Similar to the "A" record, the "AAAA" record set maps a domain name to one or more IPv6 addresses. This is crucial for ensuring connectivity over IPv6, as the availability of IPv6 addresses increases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. CNAME Record Set (Canonical Name)&lt;/strong&gt;&lt;br&gt;
A "CNAME" record set is used to create an alias for another domain name. It allows one domain to redirect to another domain's name, making it an essential tool for creating subdomains or managing domain aliases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. MX Record Set (Mail Exchange)&lt;/strong&gt;&lt;br&gt;
The "MX" record set defines the mail servers responsible for receiving email for a specific domain. It's used to route email to the correct mail servers and is crucial for configuring email services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. TXT Record Set (Text)&lt;/strong&gt;&lt;br&gt;
A "TXT" record set is used to store text information, such as SPF (Sender Policy Framework) records for email authentication, or other arbitrary text data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. SRV Record Set (Service Locator)&lt;/strong&gt;&lt;br&gt;
The "SRV" record set is used to specify the location of services for applications, like VoIP and instant messaging. It includes information about the server's hostname and port number.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. NS Record Set (Name Server)&lt;/strong&gt;&lt;br&gt;
The "NS" record set specifies the authoritative name servers for a domain. It's essential for configuring and managing DNS delegation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. PTR Record Set (Pointer)&lt;/strong&gt;&lt;br&gt;
A "PTR" record set is used for reverse DNS lookup, mapping IP addresses to domain names. These are typically managed by the entity responsible for the IP address space.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. SOA Record Set (Start of Authority)&lt;/strong&gt;&lt;br&gt;
The "SOA" record set contains administrative information about the zone. It includes details like the primary name server, the responsible person's email address, and other important zone information.&lt;/p&gt;

&lt;p&gt;Understanding the various Route 53 record set types is crucial for managing DNS configurations effectively. Each record set type serves a unique purpose, allowing you to control how DNS queries are resolved for your domain names. Whether you're setting up a website, configuring email services, or managing complex applications, Route 53 provides the flexibility and tools to ensure seamless traffic routing and domain management. By harnessing the power of these record-set types, you can maintain a reliable and high-performance online presence. For more details &lt;a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html"&gt;Supported DNS Record Types&lt;/a&gt;&lt;/p&gt;

</description>
      <category>route53</category>
      <category>dnsmanagement</category>
      <category>trafficrouting</category>
      <category>recordset</category>
    </item>
    <item>
      <title>Demystifying Hosted Zones: A Step-by-Step Guide to Setting Up Your AWS Route 53 Hosted Zone</title>
      <dc:creator>Shaista Aman Khan</dc:creator>
      <pubDate>Tue, 17 Oct 2023 03:48:30 +0000</pubDate>
      <link>https://dev.to/shaistaaman/demystifying-hosted-zones-a-step-by-step-guide-to-setting-up-your-aws-route-53-hosted-zone-2j22</link>
      <guid>https://dev.to/shaistaaman/demystifying-hosted-zones-a-step-by-step-guide-to-setting-up-your-aws-route-53-hosted-zone-2j22</guid>
      <description>&lt;p&gt;In the previous blog, we talked about domain purchase steps. Now, it's time to configure a hosted zone for your domain. A hosted zone is a container for DNS records, and it plays a critical role in managing how your domain behaves. In this step-by-step guide, we'll walk you through the process of setting up a hosted zone for your purchased domain in AWS Route 53.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Sign in to AWS Console&lt;/strong&gt;&lt;br&gt;
First, sign in to your AWS account if you haven't already. Once you're logged in, navigate to the AWS Management Console.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HfKz64R6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3122dnegtn8ec3k8qekr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HfKz64R6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3122dnegtn8ec3k8qekr.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 2: Access Route 53&lt;/strong&gt;&lt;br&gt;
From the AWS Management Console, locate the "Services" dropdown in the top left corner and click it. Scroll down to the "Networking &amp;amp; Content Delivery" section, then select "Route 53."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--O3UmfPPk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/889npqbsuacukq2exrjm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--O3UmfPPk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/889npqbsuacukq2exrjm.png" alt="Image description" width="800" height="381"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 3: Choose "Hosted Zones"&lt;/strong&gt;&lt;br&gt;
In the Route 53 dashboard, on the left-hand side, you'll find a list of services. Click on "Hosted Zones." This is where you can create and manage hosted zones for your domains.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CkTXHDD4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9t63bztucf2fg61zxryk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CkTXHDD4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9t63bztucf2fg61zxryk.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 4: Create a Hosted Zone&lt;/strong&gt;&lt;br&gt;
Now, let's create a new hosted zone. Click the "Create Hosted Zone" button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9UfzJXFS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dfxtj2z3d5t4gsmdykmr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9UfzJXFS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dfxtj2z3d5t4gsmdykmr.png" alt="Image description" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Configure the Hosted Zone Settings&lt;/strong&gt;&lt;br&gt;
In the "Create Hosted Zone" wizard, you'll be prompted to enter the following information:&lt;/p&gt;

&lt;p&gt;Domain Name: Enter the domain name you've purchased, like "exampletoday.com."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k6ojoe1r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/48m6scmxl65olaig7dqf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k6ojoe1r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/48m6scmxl65olaig7dqf.png" alt="Image description" width="660" height="747"&gt;&lt;/a&gt;&lt;br&gt;
Type: You can choose either "Public Hosted Zone" or "Private Hosted Zone." For most cases, select "Public Hosted Zone" for domains meant to be accessible on the internet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/route53/"&gt;AWS Route 53&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you've filled in these details, click the "Create" button.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Get Name Servers&lt;/strong&gt;&lt;br&gt;
After creating the hosted zone, you'll be directed to the hosted zone details page. Here, you'll find a list of records and the name servers associated with your hosted zone. Make note of these name servers, as you'll need to update your domain's DNS settings to point to them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oqCLhVxi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/om0c84kc59dwndsow7v8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oqCLhVxi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/om0c84kc59dwndsow7v8.png" alt="Image description" width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7: Update DNS at Your Domain Registrar&lt;/strong&gt;&lt;br&gt;
Go to Registered Domains and click exampletoday.com or Log in to your domain registrar's account where you purchased the domain. Look for the option to manage your domain or update DNS settings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CyK9lmoD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nurt8q2903eh74zyfqib.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CyK9lmoD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nurt8q2903eh74zyfqib.png" alt="Image description" width="800" height="279"&gt;&lt;/a&gt;&lt;br&gt;
Change Name Servers: Update the name servers for your domain with the values provided in your AWS Route 53 hosted zone. These changes might take some time to propagate through the internet, so be patient.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4SnCi7Jb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2phmzmofpi3zg0zvqx5l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4SnCi7Jb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2phmzmofpi3zg0zvqx5l.png" alt="Image description" width="800" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8: Add DNS Records&lt;/strong&gt;&lt;br&gt;
If you want to set up specific DNS records for your domain, you can do so in the hosted zone. Common DNS records include A (Address) records for pointing to an IP address, CNAME (Canonical Name) records for aliases, and MX (Mail Exchange) records for email routing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html"&gt;Supported DNS record types&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To add a DNS record:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the hosted zone details, click the "Create Record Set" button.&lt;br&gt;
Choose the type of record you want to add and provide the necessary information.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZRVY_Nwp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9lxjmap8fygxdoywrpbk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZRVY_Nwp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9lxjmap8fygxdoywrpbk.png" alt="Image description" width="800" height="376"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 9: Verify DNS Propagation&lt;/strong&gt;&lt;br&gt;
It may take some time (up to 48 hours) for DNS changes to propagate globally. You can use online tools to check the status of your DNS records and ensure they are correctly configured.&lt;/p&gt;

&lt;p&gt;You've successfully set up a hosted zone for your purchased domain on AWS Route 53. Your domain is now ready to be used, and you have the flexibility to manage its DNS records and settings as needed.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Mastering the Art of Domain Ownership: Step-by-Step Guide to Buying Domains on AWS Route 53</title>
      <dc:creator>Shaista Aman Khan</dc:creator>
      <pubDate>Mon, 16 Oct 2023 11:13:10 +0000</pubDate>
      <link>https://dev.to/shaistaaman/mastering-the-art-of-domain-ownership-step-by-step-guide-to-buying-domains-on-aws-route-53-3plk</link>
      <guid>https://dev.to/shaistaaman/mastering-the-art-of-domain-ownership-step-by-step-guide-to-buying-domains-on-aws-route-53-3plk</guid>
      <description>&lt;p&gt;In today's digital age, owning a domain is the first step towards establishing your online presence. Amazon Web Services (AWS) offers an excellent service called Route 53 for domain registration and management. Whether you're a business owner, a blogger, or an aspiring web developer, Route 53 makes it easy to secure your own domain. In this step-by-step guide, we'll walk you through the process of buying a domain on AWS Route 53.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Sign in to AWS Console&lt;/strong&gt;&lt;br&gt;
The first thing you need to do is sign in to your AWS account. If you don't have an AWS account, you'll need to create one. Once you're logged in, navigate to the AWS Management Console.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7P3SxKfj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/11abfky5lka5fl1l45xh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7P3SxKfj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/11abfky5lka5fl1l45xh.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Access Route 53&lt;/strong&gt;&lt;br&gt;
From the AWS Management Console, locate "Services" in the top left corner and click it. Then, scroll down to the "Networking &amp;amp; Content Delivery" section and select "Route 53."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UjJwvWUH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mbbsxjdpzcvh4qrr13pi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UjJwvWUH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mbbsxjdpzcvh4qrr13pi.png" alt="Image description" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Choose "Registered Domains"&lt;/strong&gt;&lt;br&gt;
In the Route 53 dashboard, you will find a list of services on the left-hand side. Click on "Registered Domains." This is where you can search for and purchase domains.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c8GUcXn1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bpfqc9xd69v7zbl42oy1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c8GUcXn1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bpfqc9xd69v7zbl42oy1.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Search for Your Desired Domain&lt;/strong&gt;&lt;br&gt;
In the "Registered Domains" section, you will find a search bar where you can enter the domain name you want to purchase. Once you've entered the domain name, click the "Check" button to see if it's available. If it's available, you can proceed to add it to your cart.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MIiwN73G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vkwm8hi982y6sbhsy5vz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MIiwN73G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vkwm8hi982y6sbhsy5vz.png" alt="Image description" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Add Domain to Cart&lt;/strong&gt;&lt;br&gt;
If your desired domain is available, click on it to select it, and then click the "Add to Cart" button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Whrgnt_l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dewgq6acoo3uzgfno2pc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Whrgnt_l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dewgq6acoo3uzgfno2pc.png" alt="Image description" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Review Your Selection&lt;/strong&gt;&lt;br&gt;
You will now be directed to your shopping cart, where you can review your domain selection. Confirm that it's the correct domain and check for any additional services you may want to add, such as domain privacy protection.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9e7MGvw4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/52j2onzsxlnaxa99tqnk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9e7MGvw4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/52j2onzsxlnaxa99tqnk.png" alt="Image description" width="800" height="593"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7: Choose the Registration Duration&lt;/strong&gt;&lt;br&gt;
You'll also need to choose the length of time for which you want to register your domain. You can select options like 1 year, 2 years, or more, depending on your preference.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gOPYxM-C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r7yqzzwohwnlcgv9my15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gOPYxM-C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r7yqzzwohwnlcgv9my15.png" alt="Image description" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8: Review and Confirm&lt;/strong&gt;&lt;br&gt;
After configuring your DNS settings and choosing the registration duration, review your order to ensure everything is correct. If you're satisfied, click the "Add to Cart" button to proceed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ywBj9nWZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5kfndwy87lz9bzdtklda.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ywBj9nWZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5kfndwy87lz9bzdtklda.png" alt="Image description" width="800" height="700"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9: Checkout&lt;/strong&gt;&lt;br&gt;
Now, you'll need to complete the checkout process by providing your payment information and billing details. Once you've entered this information, review it carefully and click the "Purchase" button to buy the domain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pJUz5oBY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/112of7iifx2jo1dot97p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pJUz5oBY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/112of7iifx2jo1dot97p.png" alt="Image description" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 10: Domain Ownership Verification&lt;/strong&gt;&lt;br&gt;
After successfully purchasing the domain, Route 53 may require you to verify your ownership of the domain. This usually involves confirming your contact information through an email.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 11: Domain Registration Complete&lt;/strong&gt;&lt;br&gt;
Once the ownership verification is complete, you will officially own the domain. Congratulations! You've successfully purchased a domain on AWS Route 53.&lt;/p&gt;

&lt;p&gt;In conclusion, buying a domain on AWS Route 53 is a straightforward process. With this step-by-step guide, you can secure your own domain quickly and easily. Remember that managing your domain, including configuring DNS records and renewing your registration, is equally important to maintain your online presence.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Intercity Ride-Sharing App - Amplify Hackathon 2023</title>
      <dc:creator>Shaista Aman Khan</dc:creator>
      <pubDate>Tue, 01 Aug 2023 03:37:36 +0000</pubDate>
      <link>https://dev.to/shaistaaman/intercity-ride-sharing-app-amplify-hackathon-2023-fip</link>
      <guid>https://dev.to/shaistaaman/intercity-ride-sharing-app-amplify-hackathon-2023-fip</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.sharewaow.com/"&gt;https://www.sharewaow.com/&lt;/a&gt; - Community Sharing Made Easy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sharewaow is a community ride-sharing app that connects people traveling from one city to another. Riders can share rides with others going to the same destination, either for a fee or for free. Sharewaow is a great platform to save money on transportation, reduce your carbon footprint, and meet new people.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How Sharewaow Works&lt;/strong&gt; To use Sharewaow, simply create an account and enter your travel details. You can then search for rides that are going to your destination. If you find a ride that you're interested in, you can book it and pay the driver directly. You can also offer to share your ride with other people, either for a fee or for free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits of Sharewaow&lt;/strong&gt; There are many benefits to using Sharewaow, including:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Save money on transportation:&lt;/strong&gt; Sharewaow is a great way to save money on transportation. You can split the cost of gas with other riders, or you can even offer to carpool for free.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Reduce your carbon footprint:&lt;/strong&gt; Sharewaow is a great way to reduce your carbon footprint. By sharing rides, you can reduce the number of cars on the road, which will help to lower emissions.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Meet new people:&lt;/strong&gt; Sharewaow is a great way to meet new people. You can meet people who are interested in the same things as you, and you can make new friends along the way.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SDG Goals Addressed&lt;/strong&gt; Sharewaow addresses the following SDG goals:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;SDG 13:&lt;/strong&gt; Climate action: Sharewaow helps to reduce carbon emissions by reducing the number of cars on the road.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;SDG 11:&lt;/strong&gt; Sustainable cities and communities: Sharewaow helps to create more sustainable cities and communities by reducing traffic congestion and pollution.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;SDG 17:&lt;/strong&gt; Partnerships for the goals: Sharewaow is a partnership between individuals and communities to create a more sustainable future.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inspiration&lt;/strong&gt; I use to travel a lot and especially on holidays when everyone is traveling to their hometowns for vacation (celebrations like Eid, Christmas etc). In those days subway transportation and railways are fully packed. One can hardly find a space even on advance payments.&lt;/p&gt;

&lt;p&gt;On the other hand, some people take their vehicles with them. It's beneficial for them to earn extra bucks while traveling to their homes. There are many inspirations for making an intercity ride-sharing app. Here are a few:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The rise of ride-sharing apps&lt;/strong&gt; The success of ride-sharing apps like Uber and Lyft has shown that there is a demand for on-demand transportation. An intercity ride-sharing app could tap into this demand by providing a way for people to share rides between cities.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;The need for more sustainable transportation options&lt;/strong&gt; Intercity travel is a major source of greenhouse gas emissions. An intercity ride-sharing app could help to reduce these emissions by encouraging people to carpool or share rides with other travelers.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;The desire to connect with other people&lt;/strong&gt; Intercity travel can be a lonely experience. An intercity ride-sharing app could help to connect people with other travelers who are interested in the same things.  &lt;/p&gt;

&lt;p&gt;Sharewaow is a great way to save money, reduce your carbon footprint, and meet new people. If you're looking for a more sustainable way to travel, Sharewaow is a great option.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github Link&lt;/strong&gt; &lt;a href="https://github.com/Shaistaaman/sharewaow"&gt;https://github.com/Shaistaaman/sharewaow&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Web App Link&lt;/strong&gt; &lt;a href="https://www.sharewaow.com"&gt;https://www.sharewaow.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt; Fundamental knowledge of React Familiarity with Figma AWS Account and Service Knowledge Passion to develop something!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Model&lt;/strong&gt; Before you jump into the development, draft down all necessary data models and access patterns. It's very important to see all access patterns because when you start working on UI and add or remove some attributes, it messes up with data and its relationships.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;UI Design in Amplify Studio&lt;/b&gt;&lt;br&gt;
Amplify studio facilitates backend devs to easily develop amazing UI with minimal designing knowledge in Figma. One can easily generate React Components with Amplify Studio in few clicks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps to Develop Sharewaow&lt;/strong&gt; Here is the summary of steps on how we developed a web app for intercity ride sharing on AWS Amplify using Amplify Studio:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Designed the app in Figma&lt;/strong&gt; Created app's UI components on Figma by template AWS Amplify UI Kit and then defined the app's data models and interactions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Import the Figma design into Amplify Studio&lt;/strong&gt; Amplify Studio will automatically generate React code for the app's UI components which was then customized as needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configure the app's data models and storage&lt;/strong&gt; Then added Dynamodb tables and Storage from Amplify Studio. Dynamodb Tables are added automatically when we created datamodels. We also configured storage for images.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configure the app's authentication&lt;/strong&gt; Then we added a Cognito user pool from Amplify Studio by adding Auth for the app. You can also configure the app to use other authentication providers, such as Google or Facebook but for simplicity, we used default Auth settings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploy the app to AWS&lt;/strong&gt; We designed UI in Amplify Studio and hosted the frontend by GitHub repo and used Amplify pull/push commands to deploy the backend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Make your own copy of Sharewaow&lt;/strong&gt;&lt;br&gt;
First of all log in to your AWS account and go to AWS Amplify from menu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--q6sH2f7J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2wouk26zk5yyfuqzrnw9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q6sH2f7J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2wouk26zk5yyfuqzrnw9.png" alt="Image description" width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Continue to Start in Amplify Studio.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x41oJmda--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l37r6cu778fuqzgs7z0j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x41oJmda--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l37r6cu778fuqzgs7z0j.png" alt="Image description" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Give it a name "Sharewaow" and "Confirm Deployment". It will take sometime to setup studio.&lt;/p&gt;

&lt;p&gt;Launch Studio.&lt;/p&gt;

&lt;p&gt;Select Data and Setup on the left navigation menu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4KXvigxE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/elpaz0jc841ksgjjuf7k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4KXvigxE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/elpaz0jc841ksgjjuf7k.png" alt="Image description" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Define your Rides data model.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iYnQGEeB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6i3ryf7dsldn6ija3j5e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iYnQGEeB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6i3ryf7dsldn6ija3j5e.png" alt="Image description" width="415" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Save and Deploy&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7ke1Dktj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0h6kz6nhp2opee9d29j2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7ke1Dktj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0h6kz6nhp2opee9d29j2.png" alt="Image description" width="780" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now switch to Figma and search "Amplify UI Kit" in community search.&lt;br&gt;
OR&lt;br&gt;
Switch to UI Library and Sync with Figma to get the Template to start with&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p2NGoQTg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fyn56pihmxtv4ydip13n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p2NGoQTg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fyn56pihmxtv4ydip13n.png" alt="Image description" width="800" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then "Get a Copy" and start designing your UI Components in "My Components" Page&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RjJvq70c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4tflf2guwhxip9gip76g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RjJvq70c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4tflf2guwhxip9gip76g.png" alt="Image description" width="800" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can directly configure your UI components or Bind them with data model in UI Library.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ejxos7Vp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/771aw8d9i2scn5vrz7t4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ejxos7Vp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/771aw8d9i2scn5vrz7t4.png" alt="Image description" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setup a Local AWS Amplify Application&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a React app using your command line interface and install the AWS Amplify CLI: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install -g @aws-amplify/cli&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Switch back to Amplify Studio and click Local Setup Guide on top right corner. Here you will receive an amplify pull command for your application - note that the application ID will be specific to your application. Copy this command by clicking on it, then run the command in your CLI and allow CLI to access your amplify project.&lt;/p&gt;

&lt;p&gt;Amplify Configure&lt;br&gt;
Install Amplify libraries and React components.&lt;br&gt;
&lt;code&gt;npm i aws-amplify @aws-amplify/ui-react&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and start building sharewaow app as mentioned in github repo &lt;a href="https://github.com/Shaistaaman/sharewaow"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenges&lt;/strong&gt;&lt;br&gt;
Amplify Studio is bit new and it has limited documentation and video tutorials which makes it hard to understand and design UI.&lt;/p&gt;

&lt;p&gt;Data Manager is also a challenge but useful feature. But to properly understand your data and its relations try to spend time on data entry.&lt;/p&gt;

&lt;p&gt;Amplify Pull command and version upgrade was a tough challenge. Through out the hackathon development my backend folder disappear and took long time to keep things on track.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team Members&lt;/strong&gt; Developer - Shaista Aman &lt;a href="https://www.linkedin.com/in/shaista-aman/"&gt;https://www.linkedin.com/in/shaista-aman/&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Cloud Engr -Shadab Aman &lt;a href="https://www.linkedin.com/in/shadab-aman/"&gt;https://www.linkedin.com/in/shadab-aman/&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Nayab Aman - UI/UX &lt;a href="https://www.linkedin.com/in/nayab-aman/"&gt;https://www.linkedin.com/in/nayab-aman/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Future Work&lt;/strong&gt; This is not a one-day idea to work on. In developing countries, people often need items on a daily basis. For this hackathon, we just implemented ride sharing but food, clothes, and books sharing is also in the pipeline. Moreover, some other features in consideration are:&lt;br&gt;&lt;br&gt;
Items Request Flow - so that users can request their needed items.&lt;br&gt;&lt;br&gt;
Location - As the web app loads it will ask the user for location so that Sharewaow can recommend items near the user.&lt;br&gt;&lt;br&gt;
Security - Hide sharer phone number and prompt the user to log in before seeing contact details for sharer.&lt;/p&gt;

&lt;h1&gt;
  
  
  AWSAmplify #AWSAmplifyHackathon #Ridesharing #Carpooling
&lt;/h1&gt;

</description>
      <category>awsamplify</category>
      <category>awsamplifyhackathon</category>
    </item>
  </channel>
</rss>
