<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Steven Develops Blog</title>
  <subtitle type="text">Notes from Steven Brown on software engineering, systems, algorithms, and web development.</subtitle>
  <rights type="text">© 2026 Steven Brown. All rights reserved.</rights>
  <link href="https://stevendevelops.com/atom.xml" rel="self" type="application/atom+xml" />
  <link href="https://stevendevelops.com" rel="alternate" type="text/html" />
  <id>https://stevendevelops.com/</id>
  <updated>2026-10-18T00:00:00.000Z</updated>
  <generator>Bliztek Feed Generator</generator>
  <author>
    <name>Steven Brown</name>
    <email>sbrown+website@bliztek.com</email>
    <uri>https://stevendevelops.com</uri>
  </author>
  <entry>
    <title type="text">Chunking Strategies for RAG, Measured</title>
    <link href="https://bliztek.com/blog/post/chunking-strategies-for-rag" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1481627834876-b7833e8f5570?q=80&amp;w=2070&amp;auto=format&amp;fit=crop" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/chunking-strategies-for-rag</id>
    <updated>2026-10-18T00:00:00.000Z</updated>
    <published>2026-10-18T00:00:00.000Z</published>
    <category term="software-engineering" />
    <category term="RAG" />
    <category term="Chunking" />
    <category term="Embeddings" />
    <category term="Retrieval" />
    <summary type="text">AI answers from your documents only work if search hands the model the right passage. How you cut the documents decides that: from 74% to 95% found.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">A* Search: Dijkstra With a Sense of Direction</title>
    <link href="https://bliztek.com/blog/post/a-star-search-heuristics" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1524661135-423995f22d0b?q=80&amp;w=2070&amp;auto=format&amp;fit=crop" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/a-star-search-heuristics</id>
    <updated>2026-10-09T00:00:00.000Z</updated>
    <published>2026-10-09T00:00:00.000Z</published>
    <category term="software-engineering" />
    <category term="A* Search" />
    <category term="Pathfinding" />
    <category term="Heuristics" />
    <category term="Dijkstra" />
    <summary type="text">Finding the shortest route in maps and games: Dijkstra searches in every direction, A* aims at the goal. Same route, a tenth of the squares checked.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Backpressure: Bounding Queues Before They Bound You</title>
    <link href="https://bliztek.com/blog/post/backpressure-bounded-queues" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1483664852095-d6cc6870702d?q=80&amp;w=2070&amp;auto=format&amp;fit=crop" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/backpressure-bounded-queues</id>
    <updated>2026-09-03T00:00:00.000Z</updated>
    <published>2026-09-03T00:00:00.000Z</published>
    <category term="software-engineering" />
    <category term="Backpressure" />
    <category term="Bounded Queues" />
    <category term="Little&apos;s Law" />
    <category term="Load Shedding" />
    <summary type="text">When a server gets more work than it can handle, an unlimited waiting line turns a 30% overload into six-minute waits. A capped line keeps it to 168ms.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Consistent Hashing: Adding Nodes Without Losing the Cache</title>
    <link href="https://bliztek.com/blog/post/consistent-hashing-nodes-that-come-and-go" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1483347756197-71ef80e95f73?q=80&amp;w=2070&amp;auto=format&amp;fit=crop" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/consistent-hashing-nodes-that-come-and-go</id>
    <updated>2026-08-27T00:00:00.000Z</updated>
    <published>2026-08-27T00:00:00.000Z</published>
    <category term="software-engineering" />
    <category term="Consistent Hashing" />
    <category term="Distributed Systems" />
    <category term="Caching" />
    <category term="Hash Ring" />
    <summary type="text">Add one server to a cache cluster and the usual approach moves 89% of the cached data. Consistent hashing moves 12%. How it works, built and measured.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Bloom Filters: Skipping Lookups That Can Only Miss</title>
    <link href="https://bliztek.com/blog/post/bloom-filters-skipping-lookups" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1519681393784-d120267933ba?q=80&amp;w=2070&amp;auto=format&amp;fit=crop" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/bloom-filters-skipping-lookups</id>
    <updated>2026-08-20T00:00:00.000Z</updated>
    <published>2026-08-20T00:00:00.000Z</published>
    <category term="software-engineering" />
    <category term="Bloom Filter" />
    <category term="Probabilistic Data Structures" />
    <category term="Caching" />
    <category term="Hashing" />
    <summary type="text">Skip slow lookups for things that were never stored: a Bloom filter answers &quot;definitely not here&quot; for a million keys in 1.14 MiB instead of 88 MB.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Rate Limiting: Token Buckets and Sliding Windows in Practice</title>
    <link href="https://bliztek.com/blog/post/rate-limiting-token-buckets-sliding-windows" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1418985991508-e47386d96a71?q=80&amp;w=2070&amp;auto=format&amp;fit=crop" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/rate-limiting-token-buckets-sliding-windows</id>
    <updated>2026-08-16T00:00:00.000Z</updated>
    <published>2026-08-16T00:00:00.000Z</published>
    <category term="software-engineering" />
    <category term="Rate Limiting" />
    <category term="Token Bucket" />
    <category term="Sliding Window" />
    <category term="API Design" />
    <summary type="text">Rate limits stop one client from flooding an API. The four common ways to enforce them, and why the simplest one can let through double the limit.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">LRU Caches: Constant-Time Eviction for Real Systems</title>
    <link href="https://bliztek.com/blog/post/lru-caches-constant-time-eviction" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1609280372161-1f48f5550151?q=80&amp;w=2342&amp;auto=format&amp;fit=crop" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/lru-caches-constant-time-eviction</id>
    <updated>2026-08-09T00:00:00.000Z</updated>
    <published>2026-08-09T00:00:00.000Z</published>
    <category term="software-engineering" />
    <category term="LRU Cache" />
    <category term="Caching" />
    <category term="HashMap" />
    <category term="Linked List" />
    <summary type="text">When a cache fills up, something has to go. An LRU cache drops whatever was used longest ago, instantly. How to build one, and when to pick another rule.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Practical Graph Algorithms for Real-World Services</title>
    <link href="https://bliztek.com/blog/post/practical-graph-algorithms-real-world-systems" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1594935975218-a3596da034a3?q=80&amp;w=2070&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/practical-graph-algorithms-real-world-systems</id>
    <updated>2025-12-06T00:00:00.000Z</updated>
    <published>2025-12-06T00:00:00.000Z</published>
    <category term="software-engineering" />
    <category term="Algorithms" />
    <category term="Software Engineering" />
    <summary type="text">A checkout request touches many services. Four graph algorithms answer the useful questions: what is reachable, what starts first, and the fastest path.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Greedy Algorithms and Priority Queues in JavaScript Systems</title>
    <link href="https://bliztek.com/blog/post/greedy-algorithms-priority-queues-js" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1710981855156-1dd4b48e668d?q=80&amp;w=1473&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/greedy-algorithms-priority-queues-js</id>
    <updated>2025-11-21T00:00:00.000Z</updated>
    <published>2025-11-21T00:00:00.000Z</published>
    <category term="software-engineering" />
    <category term="Systems Engineering" />
    <category term="Algorithms" />
    <category term="JavaScript" />
    <summary type="text">Picking the best option at each step solves scheduling and top-10 problems quickly. How greedy algorithms pair with priority queues, in JavaScript.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Heaps for Event-Driven Systems: A Deep Dive</title>
    <link href="https://bliztek.com/blog/post/heaps-for-event-driven-systems" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1684758135817-513b6916edcc?ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&amp;auto=format&amp;fit=crop&amp;q=80&amp;w=1194" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/heaps-for-event-driven-systems</id>
    <updated>2025-11-14T00:00:00.000Z</updated>
    <published>2025-11-14T00:00:00.000Z</published>
    <category term="software-engineering" />
    <category term="Systems Engineering" />
    <category term="Event-Driven Systems" />
    <category term="Algorithms" />
    <summary type="text">A scheduler always needs the next task that is due. A heap hands it over instantly and keeps adding new tasks cheap. Building one in TypeScript.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Stacks: Structure, Behavior, and Practical Insight</title>
    <link href="https://bliztek.com/blog/post/stacks-structure-behavior-practical-insight" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1704715878897-7305f04ff63f?ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&amp;auto=format&amp;fit=crop&amp;q=80&amp;w=1170" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/stacks-structure-behavior-practical-insight</id>
    <updated>2025-11-09T00:00:00.000Z</updated>
    <published>2025-11-09T00:00:00.000Z</published>
    <category term="software-engineering" />
    <category term="Data Structures" />
    <category term="Systems Engineering" />
    <category term="Algorithms" />
    <summary type="text">Undo, the back button and every function call work the same way: last in, first out. How stacks shape memory, execution and everyday code.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Fast and Slow Pointer Technique: Detecting Cycles and Beyond</title>
    <link href="https://bliztek.com/blog/post/fast-and-slow-pointer-technique" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1645761521003-876c3d3d74fd?ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&amp;auto=format&amp;fit=crop&amp;q=80&amp;w=2070" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/fast-and-slow-pointer-technique</id>
    <updated>2025-11-01T00:00:00.000Z</updated>
    <published>2025-11-01T00:00:00.000Z</published>
    <category term="software-engineering" />
    <category term="Systems Engineering" />
    <category term="Algorithms" />
    <category term="Data Structures" />
    <summary type="text">How do you tell if a chain of linked records loops back on itself without remembering every step? Send two pointers at different speeds.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Linked Lists in Systems: Structure, Context, and Practical Insight</title>
    <link href="https://bliztek.com/blog/post/linked-lists-in-systems" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1482841628122-9080d44bb807?ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&amp;auto=format&amp;fit=crop&amp;q=80&amp;w=1171a" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/linked-lists-in-systems</id>
    <updated>2025-10-25T00:00:00.000Z</updated>
    <published>2025-10-25T00:00:00.000Z</published>
    <category term="software-engineering" />
    <category term="Systems Engineering" />
    <category term="Algorithms" />
    <summary type="text">Arrays beat linked lists in most code because of how computers read memory. Where linked lists still earn their place, from kernels to networking.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Understanding HashMaps: Constant-Time Lookups in Practice</title>
    <link href="https://bliztek.com/blog/post/understanding-hashmaps-constant-time-lookups" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1625696825581-166f8343fcda?ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&amp;auto=format&amp;fit=crop&amp;q=80&amp;w=1025" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/understanding-hashmaps-constant-time-lookups</id>
    <updated>2025-10-16T00:00:00.000Z</updated>
    <published>2025-10-16T00:00:00.000Z</published>
    <category term="software-engineering" />
    <category term="Data Structures" />
    <category term="Algorithms" />
    <category term="Software Engineering" />
    <summary type="text">Hash maps find any key almost instantly however much data they hold, until they don&apos;t. How they work, when they slow down, and what to use instead.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Efficient by Design: The Two-Pointer Pattern and System Performance</title>
    <link href="https://bliztek.com/blog/post/two-pointer-pattern-system-performance" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1623479322729-28b25c16b011?ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&amp;auto=format&amp;fit=crop&amp;q=80&amp;w=2070" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/two-pointer-pattern-system-performance</id>
    <updated>2025-10-11T00:00:00.000Z</updated>
    <published>2025-10-11T00:00:00.000Z</published>
    <category term="software-engineering" />
    <category term="Systems Engineering" />
    <category term="Algorithms" />
    <category term="Performance" />
    <category term="Data Structures" />
    <summary type="text">Finding matching pairs in a sorted list does not need every combination. Walk inward from both ends and a single pass does it.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">AWS VPN Options Explained</title>
    <link href="https://bliztek.com/blog/post/aws-vpn-options-explained" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1531403009284-440f080d1e12?q=80&amp;w=2670&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.0.3&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/aws-vpn-options-explained</id>
    <updated>2025-03-29T00:00:00.000Z</updated>
    <published>2025-03-29T00:00:00.000Z</published>
    <category term="cloud-infrastructure" />
    <category term="AWS" />
    <category term="VPN" />
    <category term="Cloud Infrastructure" />
    <category term="Networking" />
    <category term="Security" />
    <summary type="text">Connecting an office, remote staff or branch sites to AWS? Site-to-Site VPN, Client VPN and VPN CloudHub each fit one of those jobs.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Dynamic vs. Static Site Strategies</title>
    <link href="https://bliztek.com/blog/post/dynamic-vs-static-site-strategies" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/flagged/photo-1579888798036-3b823ff1a2f5?q=80&amp;w=2670&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.0.3&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/dynamic-vs-static-site-strategies</id>
    <updated>2025-03-22T00:00:00.000Z</updated>
    <published>2025-03-22T00:00:00.000Z</published>
    <category term="development" />
    <category term="Performance" />
    <summary type="text">A static site is built ahead of time and served as ready-made pages; a dynamic site builds each page on request. How that affects speed, cost and editing.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Navigating the Legal Requirements for Cookies on Your Website</title>
    <link href="https://bliztek.com/blog/post/navigating-the-legal-requirements-of-cookies" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1434989407504-46a53b1b8a6d?&amp;q=80&amp;w=2670&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.0.3&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/navigating-the-legal-requirements-of-cookies</id>
    <updated>2025-03-16T00:00:00.000Z</updated>
    <published>2025-03-16T00:00:00.000Z</published>
    <category term="privacy" />
    <category term="Privacy" />
    <category term="Compliance" />
    <summary type="text">Does your site need a cookie banner? Most U.S. state laws require a way to opt out of data sales; GDPR requires consent first. What applies to you.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">What is Responsive Design?</title>
    <link href="https://bliztek.com/blog/post/what-is-responsive-design" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1576153192396-180ecef2a715?q=80&amp;w=2574&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.0.3&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/what-is-responsive-design</id>
    <updated>2025-03-01T00:00:00.000Z</updated>
    <published>2025-03-01T00:00:00.000Z</published>
    <category term="development" />
    <category term="Responsive Design" />
    <category term="Web Development" />
    <category term="UX" />
    <summary type="text">Responsive design keeps one website readable on phones, tablets and desktops. The principles behind it and how to apply them.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Our Open Source RSS Feed Generator</title>
    <link href="https://bliztek.com/blog/post/our-open-source-rss-feed-generator" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1496449903678-68ddcb189a24?q=80&amp;w=2340&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.0.3&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/our-open-source-rss-feed-generator</id>
    <updated>2024-12-30T00:00:00.000Z</updated>
    <published>2024-12-30T00:00:00.000Z</published>
    <category term="open-source" />
    <category term="Open Source" />
    <category term="Node.js" />
    <category term="Content Syndication" />
    <summary type="text">RSS, Atom and JSON Feed let readers follow a site without social media. Our open-source Node.js library writes all three, with no dependencies.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">How to Generate an SSL Certificate for Development</title>
    <link href="https://bliztek.com/blog/post/how-to-generate-an-ssl-certifcate-for-development" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1454165804606-c3d57bc86b40?q=80&amp;w=2670&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.0.3&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/how-to-generate-an-ssl-certifcate-for-development</id>
    <updated>2024-12-24T00:00:00.000Z</updated>
    <published>2024-12-24T00:00:00.000Z</published>
    <category term="development" />
    <category term="SSL" />
    <category term="HTTPS" />
    <category term="Web Development" />
    <category term="Docker" />
    <category term="Nginx" />
    <summary type="text">Test HTTPS on your own machine without browser warnings: create a self-signed certificate and serve it locally with Nginx and Docker Compose.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Integrating Lighthouse CI into GitHub CI/CD Workflow</title>
    <link href="https://bliztek.com/blog/post/using-lhci-with-nextjs-and-github" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1534972195531-d756b9bfa9f2?q=80&amp;w=2070&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.0.3&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/using-lhci-with-nextjs-and-github</id>
    <updated>2024-12-13T00:00:00.000Z</updated>
    <published>2024-12-13T00:00:00.000Z</published>
    <category term="devops" />
    <category term="Lighthouse CI" />
    <category term="GitHub Actions" />
    <category term="CI/CD" />
    <category term="Performance" />
    <summary type="text">Catch slow pages and accessibility problems before they ship: run Lighthouse audits automatically on every pull request with GitHub Actions.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Why Your Website Needs SEO</title>
    <link href="https://bliztek.com/blog/post/why-your-website-needs-seo" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1464722557942-f2cf145d3cae?q=80&amp;w=1974&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.0.3&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/why-your-website-needs-seo</id>
    <updated>2024-11-30T00:00:00.000Z</updated>
    <published>2024-11-30T00:00:00.000Z</published>
    <category term="digital-marketing" />
    <category term="SEO" />
    <category term="Digital Marketing" />
    <category term="Organic Search" />
    <summary type="text">Paid ads stop bringing visitors when the budget runs out; search rankings keep working once earned. Why SEO matters for a small business site.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">What Is the Difference Between Front-End and Back-End Development?</title>
    <link href="https://bliztek.com/blog/post/difference-between-frontend-and-backend-development" rel="alternate" type="text/html" />
    <link href="https://images.unsplash.com/photo-1511376777868-611b54f68947?q=80&amp;w=5340&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.0.3&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" rel="enclosure" />
    <id>https://stevendevelops.com/blog/post/difference-between-frontend-and-backend-development</id>
    <updated>2024-02-23T00:00:00.000Z</updated>
    <published>2024-02-23T00:00:00.000Z</published>
    <category term="development" />
    <category term="Front-End" />
    <category term="Back-End" />
    <category term="Web Development" />
    <category term="Software Engineering" />
    <summary type="text">Front-end developers build what you see and click in the browser; back-end developers build the servers and data behind it. What each does.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">A Brief Look at MVC Architecture in React</title>
    <link href="https://stevendevelops.com/blog/post/a-brief-look-at-mvc-architecture-in-react" rel="alternate" type="text/html" />
    <link href="https://stevendevelops.com/images/blog/a-brief-look-at-mvc-architecture-in-react.jpg" rel="enclosure" type="image/jpeg" />
    <id>https://stevendevelops.com/blog/post/a-brief-look-at-mvc-architecture-in-react</id>
    <updated>2023-10-18T23:29:00.000Z</updated>
    <published>2023-10-18T23:29:00.000Z</published>
    <category term="software-engineering" />
    <category term="MVC" />
    <category term="Software Design" />
    <summary type="text">Today I am exploring what MVC Architecture is, and how we can apply some of those concepts to a React Application.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Securing your API: Defense in Layers</title>
    <link href="https://stevendevelops.com/blog/post/securing-your-api-defense-in-layers" rel="alternate" type="text/html" />
    <link href="https://stevendevelops.com/images/blog/securing-your-api-defense-in-layers.jpg" rel="enclosure" type="image/jpeg" />
    <id>https://stevendevelops.com/blog/post/securing-your-api-defense-in-layers</id>
    <updated>2023-10-15T08:26:00.000Z</updated>
    <published>2023-10-15T08:26:00.000Z</published>
    <category term="security" />
    <category term="API" />
    <category term="Security" />
    <category term="OSI Model" />
    <summary type="text">In this article, I explore different strategies of implementing security controls at various levels of the OSI model.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Choosing between gRPC and RESTful API</title>
    <link href="https://stevendevelops.com/blog/post/choosing-between-grpc-and-restful-api" rel="alternate" type="text/html" />
    <link href="https://stevendevelops.com/images/blog/choosing-between-grpc-and-restful-api.jpg" rel="enclosure" type="image/jpeg" />
    <id>https://stevendevelops.com/blog/post/choosing-between-grpc-and-restful-api</id>
    <updated>2023-10-07T22:49:00.000Z</updated>
    <published>2023-10-07T22:49:00.000Z</published>
    <category term="software-engineering" />
    <category term="gRPC" />
    <category term="REST" />
    <category term="API" />
    <summary type="text">As I prepare to build an application using gRPC, I figured the best way to start is finding out what it is and how it is different from a RESTful API.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">A Quick Glance at Golang for API Development</title>
    <link href="https://stevendevelops.com/blog/post/a-quick-glance-at-golang-for-api-development" rel="alternate" type="text/html" />
    <link href="https://stevendevelops.com/images/blog/a-quick-glance-at-golang-for-api-development.jpg" rel="enclosure" type="image/jpeg" />
    <id>https://stevendevelops.com/blog/post/a-quick-glance-at-golang-for-api-development</id>
    <updated>2023-10-01T16:21:00.000Z</updated>
    <published>2023-10-01T16:21:00.000Z</published>
    <category term="software-engineering" />
    <category term="Golang" />
    <category term="Software Development" />
    <summary type="text">Reflecting on some of the strengths and weaknesses of the Go programming language and its use in API development.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">My Favorite Web Development Tool - Sanity</title>
    <link href="https://stevendevelops.com/blog/post/my-favorite-web-development-tool-sanity" rel="alternate" type="text/html" />
    <link href="https://stevendevelops.com/images/blog/my-favorite-web-development-tool-sanity.jpg" rel="enclosure" type="image/jpeg" />
    <id>https://stevendevelops.com/blog/post/my-favorite-web-development-tool-sanity</id>
    <updated>2023-09-30T23:08:00.000Z</updated>
    <published>2023-09-30T23:08:00.000Z</published>
    <category term="software-engineering" />
    <category term="Sanity" />
    <category term="Software Engineering" />
    <summary type="text">Sanity is my favorite tool I reach for when developing websites for clients. In this post, I detail out 3 reasons why it&apos;s my go to.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Becoming a HAM Radio Operator</title>
    <link href="https://stevendevelops.com/blog/post/becoming-a-ham-radio-operator" rel="alternate" type="text/html" />
    <link href="https://stevendevelops.com/images/blog/becoming-a-ham-radio-operator.jpg" rel="enclosure" type="image/jpeg" />
    <id>https://stevendevelops.com/blog/post/becoming-a-ham-radio-operator</id>
    <updated>2023-09-30T22:16:36.097Z</updated>
    <published>2023-09-30T22:16:36.097Z</published>
    <category term="ham-radio" />
    <category term="Amateur Radio" />
    <category term="Radio Technician" />
    <summary type="text">This blog posts summarizes my reflections over the past month as I studied for the HAM Radio Operator Technician exam.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Part 2: Deploying an Apollo GraphQL Odyssey React App with AWS Amplify</title>
    <link href="https://stevendevelops.com/blog/post/part-2-deploying-an-apollo-graphql-odyssey-react-app-with-aws-amplify" rel="alternate" type="text/html" />
    <link href="https://stevendevelops.com/images/blog/part-2-deploying-an-apollo-graphql-odyssey-react-app-with-aws-amplify.png" rel="enclosure" type="image/png" />
    <id>https://stevendevelops.com/blog/post/part-2-deploying-an-apollo-graphql-odyssey-react-app-with-aws-amplify</id>
    <updated>2022-04-24T06:32:00.000Z</updated>
    <published>2022-04-24T06:32:00.000Z</published>
    <category term="software-engineering" />
    <category term="GraphQL" />
    <category term="AWS" />
    <summary type="text">Welcome to Part 2 of deploying our Apollo GraphQL Castronaut App with Amazon Web Services. In this post, we deploy the React client using AWS Amplify to complete the full-stack journey.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
  <entry>
    <title type="text">Part 1: Deploying an Apollo GraphQL Odyssey Server with AWS Lambda</title>
    <link href="https://stevendevelops.com/blog/post/part-1-deploying-an-apollo-graphql-odyssey-server-with-aws-lambda" rel="alternate" type="text/html" />
    <link href="https://stevendevelops.com/images/blog/part-1-deploying-an-apollo-graphql-odyssey-server-with-aws-lambda.png" rel="enclosure" type="image/png" />
    <id>https://stevendevelops.com/blog/post/part-1-deploying-an-apollo-graphql-odyssey-server-with-aws-lambda</id>
    <updated>2022-04-23T13:27:00.000Z</updated>
    <published>2022-04-23T13:27:00.000Z</published>
    <category term="software-engineering" />
    <category term="GraphQL" />
    <category term="AWS" />
    <summary type="text">As I approached the finale of my Apollo Odyssey GraphQL journey, my adventure took an unexpected turn. Due to a recent event involving Heroku and GitHub tokens, Heroku revoked all OAuth tokens, pushing me to deploy with AWS Lambda instead.</summary>
    <author>
      <name>Steven Brown</name>
      <email>sbrown+website@bliztek.com</email>
      <uri>https://stevendevelops.com</uri>
    </author>
  </entry>
</feed>