<?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: Lucy Green</title>
    <description>The latest articles on DEV Community by Lucy Green (@lucy-green).</description>
    <link>https://dev.to/lucy-green</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%2F3948792%2Ff87afe80-7cce-4547-aae8-742cf98586e3.png</url>
      <title>DEV Community: Lucy Green</title>
      <link>https://dev.to/lucy-green</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lucy-green"/>
    <language>en</language>
    <item>
      <title>Security Doesn't Have to Be Ugly: Why I Chose Vintage-Style Rim Locks for My Front Door</title>
      <dc:creator>Lucy Green</dc:creator>
      <pubDate>Fri, 12 Jun 2026 09:37:03 +0000</pubDate>
      <link>https://dev.to/lucy-green/security-doesnt-have-to-be-ugly-why-i-chose-vintage-style-rim-locks-for-my-front-door-3g3c</link>
      <guid>https://dev.to/lucy-green/security-doesnt-have-to-be-ugly-why-i-chose-vintage-style-rim-locks-for-my-front-door-3g3c</guid>
      <description>&lt;p&gt;When renovating an older property, one of the biggest challenges is finding hardware that provides modern security without compromising the character of the home. Many contemporary locks prioritize function over appearance, often looking out of place on traditional doors. Fortunately, I recently discovered a solution that delivers both style and security: vintage-style rim locks.&lt;/p&gt;

&lt;p&gt;After searching through countless options, I came across the rim lock collection from Infinity Decor. The combination of classic design, solid construction, and practical installation made them an easy choice for our front door renovation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Rim Locks Are Ideal for Older Properties&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many period homes feature original wooden doors that were never designed to accommodate modern mortice locks. Installing a mortice lock often requires cutting deep into the door, which can weaken the structure and potentially damage historic woodwork.&lt;/p&gt;

&lt;p&gt;Rim locks offer a practical alternative. Because they are surface-mounted, they require far less modification to the door itself. This makes them particularly suitable for:&lt;/p&gt;

&lt;p&gt;Victorian properties&lt;br&gt;
Georgian homes&lt;br&gt;
Edwardian houses&lt;br&gt;
Cottage renovations&lt;br&gt;
Heritage restoration projects&lt;/p&gt;

&lt;p&gt;For homeowners looking to preserve original features while improving security, rim locks provide an excellent balance between practicality and authenticity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Appeal of Vintage Brass Finishes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the first things that caught my attention was the beautiful brass finish. Hardware may seem like a small detail, but it can significantly influence the overall appearance of a property.&lt;/p&gt;

&lt;p&gt;The warm brass tones complement traditional wood doors perfectly, creating a timeless look that feels authentic rather than decorative. Instead of standing out as a modern addition, the lock feels like it belongs to the property.&lt;/p&gt;

&lt;p&gt;The result is a front entrance that looks elegant, welcoming, and historically appropriate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security You Can Rely On&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While aesthetics were important, security remained the top priority.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;&lt;a href="https://infinitydecor.co.uk/collections/rim-locks" rel="noopener noreferrer"&gt;rim lock&lt;/a&gt;&lt;/strong&gt; I selected includes a robust deadlock mechanism that provides confidence and peace of mind. It offers the reassuring feel of quality engineering while maintaining the traditional appearance that many homeowners seek.&lt;/p&gt;

&lt;p&gt;Unlike some decorative hardware that focuses solely on looks, these locks are designed to perform as well as they look.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Straightforward Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another pleasant surprise was how simple the installation process turned out to be.&lt;/p&gt;

&lt;p&gt;The included hardware and clear fitting points meant the lock could be installed without extensive carpentry work. Since rim locks are mounted onto the surface of the door, the process is often less invasive than fitting a mortice lock.&lt;/p&gt;

&lt;p&gt;For DIY enthusiasts, this can make the project far more approachable while reducing the risk of damaging an older door.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating a Cohesive Look&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One tip I would strongly recommend is pairing the lock with matching door furniture.&lt;/p&gt;

&lt;p&gt;Coordinating the rim lock with brass handles, escutcheons, and other hardware creates a unified appearance that elevates the entire entrance. Small details like these can transform a simple door into a standout architectural feature.&lt;/p&gt;

&lt;p&gt;Consistency in finishes and styling helps maintain the character of a period property while giving it a polished, professional appearance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Home security doesn't have to come at the expense of style. For anyone renovating an older property, vintage-style rim locks offer an attractive solution that combines classic aesthetics with dependable functionality.&lt;/p&gt;

&lt;p&gt;The brass finish adds charm and authenticity, the deadlock mechanism provides reliable protection, and the straightforward installation makes them suitable for both professionals and confident DIY homeowners.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Anyone Else Seeing Big Ranking Differences Between Mobile and Desktop?</title>
      <dc:creator>Lucy Green</dc:creator>
      <pubDate>Fri, 12 Jun 2026 07:47:44 +0000</pubDate>
      <link>https://dev.to/lucy-green/anyone-else-seeing-big-ranking-differences-between-mobile-and-desktop-1e85</link>
      <guid>https://dev.to/lucy-green/anyone-else-seeing-big-ranking-differences-between-mobile-and-desktop-1e85</guid>
      <description>&lt;p&gt;Tracking keyword rankings across different devices and locations is crucial for understanding your SEO performance. I built this small script using the SerpSpur Live Search Engine Ranking Checker API to compare rankings by device type:&lt;/p&gt;

&lt;p&gt;python&lt;br&gt;
import requests&lt;/p&gt;

&lt;p&gt;API_KEY = "your_api_key_here"&lt;/p&gt;

&lt;p&gt;def compare_rankings_by_device(keyword, location):&lt;br&gt;
    results = {}&lt;br&gt;
    for device in ["desktop", "mobile", "tablet"]:&lt;br&gt;
        response = requests.get(&lt;br&gt;
            "&lt;a href="https://api.serpspur.com/v1/live-ranking-checker" rel="noopener noreferrer"&gt;https://api.serpspur.com/v1/live-ranking-checker&lt;/a&gt;",&lt;br&gt;
            headers={"Authorization": f"Bearer {API_KEY}"},&lt;br&gt;
            params={"q": keyword, "location": location, "device": device, "num": 10}&lt;br&gt;
        )&lt;br&gt;
        data = response.json()&lt;br&gt;
        results[device] = [r["position"] for r in data.get("organic_results", [])]&lt;br&gt;
    return results&lt;/p&gt;

&lt;h1&gt;
  
  
  Example usage
&lt;/h1&gt;

&lt;p&gt;keyword = "SEO tools"&lt;br&gt;
location = "United States"&lt;br&gt;
rankings = compare_rankings_by_device(keyword, location)&lt;br&gt;
for device, positions in rankings.items():&lt;br&gt;
    print(f"{device.upper()}: {positions[:5]}...")&lt;/p&gt;

&lt;p&gt;This revealed some surprising differences—mobile rankings often vary significantly from desktop. Have you noticed similar patterns in your own tracking?&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Automating Page Speed Audits: Python Script for Core Web Vitals Monitoring</title>
      <dc:creator>Lucy Green</dc:creator>
      <pubDate>Thu, 04 Jun 2026 07:01:45 +0000</pubDate>
      <link>https://dev.to/lucy-green/automating-page-speed-audits-python-script-for-core-web-vitals-monitoring-3hpa</link>
      <guid>https://dev.to/lucy-green/automating-page-speed-audits-python-script-for-core-web-vitals-monitoring-3hpa</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%2F8phy015n1n5t5zv84zti.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%2F8phy015n1n5t5zv84zti.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;Just automated my weekly page speed audit with a Python script that pulls Core Web Vitals data and flags regressions before they hit production. No more surprise Lighthouse drops on Monday mornings.&lt;/p&gt;

&lt;p&gt;Here's the core loop:&lt;/p&gt;

&lt;p&gt;python&lt;br&gt;
import requests&lt;br&gt;
import json&lt;br&gt;
from datetime import datetime&lt;/p&gt;

&lt;p&gt;for url in urls:&lt;br&gt;
    response = requests.get&lt;br&gt;
    data = response.json()&lt;br&gt;
    if data['lcp'] &amp;gt; 2500 or data['cls'] &amp;gt; 0.1:&lt;br&gt;
        print(f"ALERT: {url} has poor vitals - LCP: {data['lcp']}ms, CLS: {data['cls']}")&lt;/p&gt;

&lt;p&gt;It checks LCP, FID, and CLS against Google's thresholds. If any metric exceeds the limit, it logs the URL with a timestamp. I've got it running as a cron job every 6 hours.&lt;/p&gt;

&lt;p&gt;The biggest win? Catching a third-party widget that bloated my TBT from 50ms to 350ms after an update. Rolled back within the hour.&lt;/p&gt;

&lt;p&gt;This approach works with any API that exposes raw Web Vitals data. I'm using &lt;strong&gt;&lt;a href="http://serpspur.com/tool/core-web-vitals-speed-forensics/" rel="noopener noreferrer"&gt;SERPSpur&lt;/a&gt;&lt;/strong&gt;'s Speed Forensics endpoint because it also gives me field data from Chrome UX Report, not just lab metrics.&lt;/p&gt;

&lt;p&gt;Anyone else automating performance monitoring? What thresholds do you set for alerts?&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Testing Geo-Targeted Google Search Results Without a VPN Using Puppeteer</title>
      <dc:creator>Lucy Green</dc:creator>
      <pubDate>Mon, 01 Jun 2026 07:10:29 +0000</pubDate>
      <link>https://dev.to/lucy-green/testing-geo-targeted-google-search-results-without-a-vpn-using-puppeteer-26kl</link>
      <guid>https://dev.to/lucy-green/testing-geo-targeted-google-search-results-without-a-vpn-using-puppeteer-26kl</guid>
      <description>&lt;p&gt;Just discovered a clever way to bypass Google's location redirect when testing local search results. Instead of relying on VPNs, I modify the &lt;code&gt;navigator.geolocation&lt;/code&gt; API in a headless browser. Here's a Puppeteer snippet:&lt;/p&gt;

&lt;p&gt;javascript&lt;br&gt;
const puppeteer = require('puppeteer');&lt;/p&gt;

&lt;p&gt;async function run() {&lt;br&gt;
    const browser = await puppeteer.launch();&lt;br&gt;
    const page = await browser.newPage();&lt;br&gt;
    await page.goto;&lt;br&gt;
    await page.evaluate(() =&amp;gt; {&lt;br&gt;
        navigator.geolocation.getCurrentPosition = (success) =&amp;gt; {&lt;br&gt;
            success({ coords: { latitude: 40.7128, longitude: -74.0060 } });&lt;br&gt;
        };&lt;br&gt;
    });&lt;br&gt;
    // Now search for 'coffee shops' and see local results for NYC&lt;br&gt;
}&lt;br&gt;
run();&lt;/p&gt;

&lt;p&gt;For production testing, I've been using SERPSpur's API which handles location spoofing natively. What's your most creative method for testing geo-targeted search results?&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>spanish</category>
    </item>
  </channel>
</rss>
