<?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: John</title>
    <description>The latest articles on DEV Community by John (@john_ed7d818fcf8b2e0b3fa5).</description>
    <link>https://dev.to/john_ed7d818fcf8b2e0b3fa5</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3849707%2F5e1c3de2-e931-46e1-866a-944268d1a1f2.jpg</url>
      <title>DEV Community: John</title>
      <link>https://dev.to/john_ed7d818fcf8b2e0b3fa5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/john_ed7d818fcf8b2e0b3fa5"/>
    <language>en</language>
    <item>
      <title>How I Built a Niche Entertainment Site on WordPress (And What I'd Do Differently)</title>
      <dc:creator>John</dc:creator>
      <pubDate>Wed, 19 Aug 2026 11:19:26 +0000</pubDate>
      <link>https://dev.to/john_ed7d818fcf8b2e0b3fa5/how-i-built-a-niche-entertainment-site-on-wordpress-and-what-id-do-differently-4fmg</link>
      <guid>https://dev.to/john_ed7d818fcf8b2e0b3fa5/how-i-built-a-niche-entertainment-site-on-wordpress-and-what-id-do-differently-4fmg</guid>
      <description>&lt;p&gt;A couple of years ago I started &lt;a href="https://fandomwatch.com/" rel="noopener noreferrer"&gt;FandomWatch&lt;/a&gt;, a site covering Netflix news and Stranger Things content. What began as a small hobby project turned into a real publication with regular traffic, and along the way I learned a lot about running a content-heavy WordPress site the right way. Here's a breakdown of the stack, the decisions, and the mistakes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Starting Point
&lt;/h2&gt;

&lt;p&gt;I knew I wanted a fast, flexible site that didn't lock me into a rigid page builder or theme. Most entertainment/news sites end up bloated — too many plugins, too many trackers, pages that take five seconds to load. I wanted to avoid that from day one.&lt;/p&gt;

&lt;p&gt;So the stack ended up being:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WordPress&lt;/strong&gt; as the CMS (still the fastest way to get a content site live and let non-technical writers publish without touching code)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bricks Builder&lt;/strong&gt; for the front end (a visual builder that outputs clean HTML instead of the shortcode soup you get with a lot of page builders)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Site Kit&lt;/strong&gt; for tying together Analytics, Search Console, and AdSense from one dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Structuring Content for a Niche Audience
&lt;/h2&gt;

&lt;p&gt;The biggest early decision was how to organize categories. I didn't want a generic "blog" — I wanted something that felt like a real hub. So the taxonomy ended up being:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;News and Gossip&lt;/li&gt;
&lt;li&gt;Netflix&lt;/li&gt;
&lt;li&gt;Stranger Things (the flagship category, since that's where most of the traffic comes from)&lt;/li&gt;
&lt;li&gt;Streaming Guides&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keeping categories tight instead of sprawling made two things easier: internal linking (which matters a lot for SEO on a content site) and letting return visitors quickly find what they actually care about.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "Netflix Library" Widget
&lt;/h2&gt;

&lt;p&gt;One feature I'm genuinely proud of is a live-ish widget on the homepage that shows how many titles are currently on Netflix US, broken down by category, and what's new that week. This isn't something WordPress does out of the box — it needed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A custom data source that gets updated regularly (I don't want to name the exact method here since it's part of what makes the feature work, but the short version is: don't try to scrape Netflix directly, it's fragile and against their ToS — go through a proper structured data source instead)&lt;/li&gt;
&lt;li&gt;A lightweight custom post type/meta field setup so the numbers update without touching the widget's markup&lt;/li&gt;
&lt;li&gt;Caching, because without it this kind of dynamic block will tank your page speed score fast&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're building something similar, my advice is: decouple the data update job from the page render. Update a cached value on a schedule (cron job or scheduled action), and just have the front end read that cached value. Don't hit an external source on every page load — that's the single biggest performance mistake I made in the first version.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monetization Without Wrecking Page Speed
&lt;/h2&gt;

&lt;p&gt;AdSense is the main revenue source, set up through Site Kit rather than manually inserting ad units. A few things that actually moved the needle on Core Web Vitals once ads were in the mix:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lazy-loading ad units below the fold&lt;/li&gt;
&lt;li&gt;Reserving ad slot dimensions ahead of time so ads don't cause layout shift (this alone fixed most of my CLS issues)&lt;/li&gt;
&lt;li&gt;Keeping ad density lower than what AdSense "recommends" — more ads per page usually means worse engagement and worse long-term RPM, not better&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  SEO for an Entertainment/Fandom Niche
&lt;/h2&gt;

&lt;p&gt;This niche is brutally competitive and heavily SEO-driven, so a few practical lessons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Freshness matters more than in most niches.&lt;/strong&gt; Fandom content (leaks, casting news, episode guides) has a short shelf life, so updating older posts when new information drops (like runtime reveals or season announcements) keeps them ranking instead of letting them die.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured data is worth the setup time.&lt;/strong&gt; Article schema, breadcrumbs, and FAQ blocks where relevant genuinely helped with rich snippets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Internal linking between related theory/news posts&lt;/strong&gt; (e.g., linking a "what happened in the finale" post to the "who dies" post and back) kept session duration up, which indirectly helps rankings.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I'd Do Differently
&lt;/h2&gt;

&lt;p&gt;If I started over, I'd:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pick a theme/builder combo earlier and commit, instead of migrating mid-way through (I did migrate once and it cost me a few weeks of cleanup)&lt;/li&gt;
&lt;li&gt;Set up caching and image optimization &lt;em&gt;before&lt;/em&gt; traffic ramped up, not after performance started slipping&lt;/li&gt;
&lt;li&gt;Build the "live stats" widget with a proper scheduled job from the start instead of retrofitting caching onto something that was originally doing live lookups&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;Running a content site isn't just about writing — a huge chunk of the actual work is infrastructure: making sure pages load fast, data stays fresh without killing performance, and the CMS doesn't get in the way of publishing regularly. WordPress gets criticized a lot for being "bloated," but with the right builder and a disciplined plugin list, it's still one of the fastest ways to get a real publication off the ground.&lt;/p&gt;

&lt;p&gt;Happy to answer questions in the comments if anyone's building something similar.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Tags: #wordpress #webdev #showdev #seo #buildinpublic&lt;/em&gt;&lt;/p&gt;

</description>
      <category>performance</category>
      <category>webdev</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>How to Build a Simple Battery Monitoring System Using Python</title>
      <dc:creator>John</dc:creator>
      <pubDate>Sun, 29 Mar 2026 16:41:21 +0000</pubDate>
      <link>https://dev.to/john_ed7d818fcf8b2e0b3fa5/how-to-build-a-simple-battery-monitoring-system-using-python-m8b</link>
      <guid>https://dev.to/john_ed7d818fcf8b2e0b3fa5/how-to-build-a-simple-battery-monitoring-system-using-python-m8b</guid>
      <description>&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%2Fq7y5b9wpox5kso414ao4.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%2Fq7y5b9wpox5kso414ao4.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;Introduction&lt;/p&gt;

&lt;p&gt;With the rise of electric vehicles, solar energy systems, and industrial battery packs, battery technology is more important than ever. Proper monitoring ensures safety, longevity, and performance.&lt;/p&gt;

&lt;p&gt;In this tutorial, we’ll build a simple battery monitoring system using Python. This guide is perfect for developers, hobbyists, and engineers who want to combine programming with practical battery applications.&lt;/p&gt;

&lt;p&gt;Understanding Battery Management Systems (BMS)&lt;/p&gt;

&lt;p&gt;A Battery Management System (BMS) is a critical component that:&lt;/p&gt;

&lt;p&gt;Monitors battery voltage and current&lt;br&gt;
Tracks battery temperature&lt;br&gt;
Calculates battery charge (State of Charge – SOC)&lt;br&gt;
Protects the battery from overcharging or deep discharge&lt;br&gt;
Balances multiple battery cells&lt;/p&gt;

&lt;p&gt;Applications of BMS:&lt;/p&gt;

&lt;p&gt;Electric vehicles (EVs)&lt;br&gt;
Solar energy storage systems&lt;br&gt;
UPS systems and power banks&lt;br&gt;
Industrial battery packs&lt;/p&gt;

&lt;p&gt;Programming is essential in modern BMS systems for data analysis, anomaly detection, and performance optimization.&lt;/p&gt;

&lt;p&gt;Key Parameters for Monitoring&lt;br&gt;
Parameter   Description&lt;br&gt;
Voltage Battery voltage (V)&lt;br&gt;
Current Charging or discharging current (A)&lt;br&gt;
Temperature Battery temperature (°C)&lt;br&gt;
State of Charge (SOC)   Battery charge (%)&lt;br&gt;
State of Health (SOH)   Battery overall health&lt;/p&gt;

&lt;p&gt;Monitoring these ensures battery safety, longer life, and efficiency.&lt;/p&gt;

&lt;p&gt;Python Simulation: Battery Monitoring&lt;/p&gt;

&lt;p&gt;Here’s a Python script that simulates battery voltage and charge monitoring:&lt;/p&gt;

&lt;p&gt;import random&lt;br&gt;
import time&lt;/p&gt;

&lt;p&gt;battery_percentage = 100&lt;/p&gt;

&lt;p&gt;while battery_percentage &amp;gt; 0:&lt;br&gt;
    battery_voltage = round(random.uniform(3.0, 4.2), 2)&lt;br&gt;
    battery_percentage -= random.randint(1, 3)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;print("Battery Voltage:", battery_voltage, "V")
print("Battery Percentage:", battery_percentage, "%")
print("-----------------------------")
time.sleep(1)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;You can expand this with Arduino, Raspberry Pi, or ESP32 to create a real IoT-based battery monitoring system.&lt;/p&gt;

&lt;p&gt;Why Programming Matters&lt;br&gt;
Embedded software (Python, C/C++) is used in BMS&lt;br&gt;
Real-time data collection and logging is critical&lt;br&gt;
IoT battery monitoring systems rely heavily on programming&lt;br&gt;
Simulation before hardware deployment saves time and cost&lt;br&gt;
Data analysis predicts potential battery failures&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ttekai.com/" rel="noopener noreferrer"&gt;Programming + battery&lt;/a&gt; knowledge = highly valuable skills for modern energy industries.&lt;/p&gt;

&lt;p&gt;References&lt;/p&gt;

&lt;p&gt;For more in-depth information on battery manufacturing, battery technology, and energy storage systems, check out:&lt;br&gt;
TTEKAI – Battery Technology &amp;amp; Manufacturing&lt;br&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%2Ft2vtncedgsp27cmhxjqu.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%2Ft2vtncedgsp27cmhxjqu.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
