<?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: Sarah Varghese</title>
    <description>The latest articles on DEV Community by Sarah Varghese (@sarahvarghese).</description>
    <link>https://dev.to/sarahvarghese</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%2F3594093%2F079e3e57-f5f6-431a-b713-617367e3e9c5.png</url>
      <title>DEV Community: Sarah Varghese</title>
      <link>https://dev.to/sarahvarghese</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sarahvarghese"/>
    <language>en</language>
    <item>
      <title>What Developers Often Miss: IDOR Vulnerabilities in Action</title>
      <dc:creator>Sarah Varghese</dc:creator>
      <pubDate>Thu, 15 Jan 2026 18:01:43 +0000</pubDate>
      <link>https://dev.to/sarahvarghese/what-developers-often-miss-idor-vulnerabilities-in-action-3f2m</link>
      <guid>https://dev.to/sarahvarghese/what-developers-often-miss-idor-vulnerabilities-in-action-3f2m</guid>
      <description>&lt;p&gt;When building web applications, developers usually focus on features, performance, and user experience. But one subtle mistake that slips through far too often is &lt;strong&gt;access control at the object level&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;Insecure Direct Object Reference (IDOR)&lt;/strong&gt; occurs when a web app exposes internal identifiers (like &lt;code&gt;user_id=123&lt;/code&gt;) without properly checking if the logged‑in user is authorized to access that resource. The result? Anyone who tweaks the parameter (e.g., &lt;code&gt;user_id=124&lt;/code&gt;) can suddenly view or modify another user’s data.  &lt;/p&gt;

&lt;p&gt;Why does this happen?  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developers assume “hidden” IDs are safe.
&lt;/li&gt;
&lt;li&gt;Authorization checks are applied at login, but not consistently at every request.
&lt;/li&gt;
&lt;li&gt;Testing often focuses on functionality, not misuse of parameters.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The impact can be serious: data leaks, privilege escalation, and even payouts in bug bounty programs.  &lt;/p&gt;

&lt;p&gt;To make this clearer, here’s a &lt;strong&gt;live demo video&lt;/strong&gt; that shows IDOR in action — first in a lab environment, then in a real bug bounty case:&lt;br&gt;&lt;br&gt;
👉 

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


&lt;/p&gt;

&lt;p&gt;If you’re a developer, this is a reminder:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Never trust client‑side identifiers.
&lt;/li&gt;
&lt;li&gt;Always enforce authorization checks server‑side.
&lt;/li&gt;
&lt;li&gt;Test your endpoints as if you were an attacker.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security isn’t just about encryption or firewalls — it’s about the small details in everyday code.  &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>devops</category>
      <category>discuss</category>
    </item>
    <item>
      <title>RiseMyTrip Data Leak: What We Know So Far</title>
      <dc:creator>Sarah Varghese</dc:creator>
      <pubDate>Thu, 08 Jan 2026 19:36:38 +0000</pubDate>
      <link>https://dev.to/sarahvarghese/risemytrip-data-leak-what-we-know-so-far-515k</link>
      <guid>https://dev.to/sarahvarghese/risemytrip-data-leak-what-we-know-so-far-515k</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Overview&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A dataset purporting to contain booking information from the travel platform &lt;strong&gt;RiseMyTrip&lt;/strong&gt; has been published online, raising questions about a potential &lt;strong&gt;data leak&lt;/strong&gt;. The file — accessible via the &lt;strong&gt;Internet Archive&lt;/strong&gt; — contains hundreds of ticket records dated from &lt;strong&gt;31 March 2025 to 2 January 2026&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As of this writing, &lt;strong&gt;RiseMyTrip has not issued any public comment&lt;/strong&gt; on the matter, and the source of the leaked information remains unverified.&lt;/p&gt;

&lt;p&gt;📁 &lt;strong&gt;Archive link:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://archive.org/details/risemytrip" rel="noopener noreferrer"&gt;https://archive.org/details/risemytrip&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;What’s Publicly Available&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The archived item labeled &lt;em&gt;“risemytrip”&lt;/em&gt; includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A downloadable file (~496 MB) containing ticket data.&lt;/li&gt;
&lt;li&gt;A document with the name &lt;strong&gt;“EVLF”&lt;/strong&gt; on the cover and within internal headers.&lt;/li&gt;
&lt;li&gt;Records that appear to be legitimate B2C (business‑to‑consumer) ticket details issued through the platform.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The dataset spans travel bookings from &lt;strong&gt;late March 2025 through early January 2026&lt;/strong&gt;, but does not, at least on its surface, include financial information, passwords, or other highly sensitive personal details.&lt;/p&gt;

&lt;p&gt;The presence of “EVLF” on the document has been noted, but &lt;strong&gt;no independent verification exists&lt;/strong&gt; tying the dataset to any individual or group, nor does the branding constitute verified attribution.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;User Reports and Observations&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In conversations with multiple individuals who use RiseMyTrip primarily on the &lt;strong&gt;B2B (business‑to‑business)&lt;/strong&gt; side:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Several users reported &lt;strong&gt;noticeable battery drain and performance issues&lt;/strong&gt; on their mobile devices following a recent app update.&lt;/li&gt;
&lt;li&gt;Users described these symptoms as unusual and temporally correlated with the app update but did not independently confirm any malware infection.&lt;/li&gt;
&lt;li&gt;Many of these users expressed strong trust in the platform and its internal staff, and some initially attributed their device issues to hardware rather than software.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At least &lt;strong&gt;five B2B agents&lt;/strong&gt; interviewed reported similar experiences on their devices. No confirmed reports from B2C customers are documented within this investigation.&lt;/p&gt;

&lt;p&gt;These user observations are &lt;strong&gt;anecdotal&lt;/strong&gt; and do not in themselves constitute proof of malware, but they represent a pattern worth noting.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Company Response (or Lack Thereof)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To date, &lt;strong&gt;RiseMyTrip has not made any official public statement&lt;/strong&gt; confirming the data leak, acknowledging an investigation, or providing user guidance following the document’s appearance online. No public security advisory, regulatory notice, or press release appears to have been issued by the company.&lt;/p&gt;

&lt;p&gt;Attempts to reach RiseMyTrip for comment were unsuccessful at the time of this report.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;What This Means (and What It Doesn’t)&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Confirmed / Observable&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A dataset containing ticket records is publicly available through the Internet Archive.&lt;/li&gt;
&lt;li&gt;The dataset includes records from late March 2025 to early January 2026.&lt;/li&gt;
&lt;li&gt;The document is branded with the name “EVLF,” but attribution is unverified.&lt;/li&gt;
&lt;li&gt;Multiple B2B users report device behavior changes following an app update.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Unverified / Alleged&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The source or mechanism of the data leak is unknown.&lt;/li&gt;
&lt;li&gt;Whether the dataset represents a full database export or a subset of information is unclear.&lt;/li&gt;
&lt;li&gt;No forensic evidence has been published linking the dataset to a security incident.&lt;/li&gt;
&lt;li&gt;There is no independent verification of malware on user devices or any widespread infection.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Context: Naming, Malware, and Attribution&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The name &lt;strong&gt;“EVLF”&lt;/strong&gt; appears on the document’s cover and within internal headers. Online discussions have previously linked this alias to Android remote‑access tools (RATs) in other contexts. However, such connections remain anecdotal and cannot be relied upon without technical confirmation.&lt;/p&gt;

&lt;p&gt;Importantly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Having a name on a document is &lt;strong&gt;not evidence of responsibility&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;No technical artifacts (malware samples, hashes, command‑and‑control infrastructure, logs) have been presented to support claims of a malware campaign.&lt;/li&gt;
&lt;li&gt;Remote‑access malware requires &lt;strong&gt;installation and user consent&lt;/strong&gt; on modern smartphones and cannot be deployed silently at scale without specialized exploits.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For these reasons, linking the dataset to any specific actor would be speculative.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;User Demographics, Security Awareness, and Risk&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Sources familiar with RiseMyTrip’s user base describe it as composed largely of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;B2B travel agents and staffing partners&lt;/li&gt;
&lt;li&gt;Users with limited technical or security training&lt;/li&gt;
&lt;li&gt;Found only one internal IT resource, with limited cybersecurity infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This user profile can increase susceptibility to social‑engineering attacks or mistaken installation of unverified software — but user behavior patterns alone do not confirm a leak or malware infection.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Why “Data Leak” Not “Data Breach”?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In security and journalistic terminology:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;data leak&lt;/strong&gt; describes data that is &lt;strong&gt;publicly accessible&lt;/strong&gt;, regardless of how it got there.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;data breach&lt;/strong&gt; implies &lt;strong&gt;unauthorized access confirmed&lt;/strong&gt;, often with involvement from affected organizations or security professionals.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because RiseMyTrip has not verified or commented on the situation, and no independent technical analysis has been made public, the term &lt;strong&gt;“data leak”&lt;/strong&gt; is a more accurate and responsible description at this time.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;What Comes Next&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Several open questions remain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Has RiseMyTrip launched an internal investigation?&lt;/li&gt;
&lt;li&gt;Are there additional datasets not yet published?&lt;/li&gt;
&lt;li&gt;Do user device issues relate to software behavior or something else?&lt;/li&gt;
&lt;li&gt;Will a security firm or researcher publish a technical analysis?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Until reliable confirmation is available, public reporting will necessarily distinguish &lt;em&gt;what is observed&lt;/em&gt; from &lt;em&gt;what is alleged&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Advice for Users&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Users of RiseMyTrip (whether B2B agents or customers) are advised to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitor devices for unusual behavior&lt;/li&gt;
&lt;li&gt;Update passwords and enable multi‑factor authentication if available&lt;/li&gt;
&lt;li&gt;Avoid installing unofficial packages or responding to unverified update prompts&lt;/li&gt;
&lt;li&gt;Contact the company or regulatory body if they observe suspected security issues&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;The RiseMyTrip data leak highlights the challenges of cybersecurity in smaller digital platforms where internal controls may be minimal and communication limited. While details of how the ticket data became publicly available are still unclear, the situation reinforces the importance of transparency and verification when dealing with potentially sensitive user information.&lt;/p&gt;

&lt;p&gt;This report will be updated as more information becomes available.&lt;/p&gt;




</description>
      <category>cybersecurity</category>
      <category>risemytrip</category>
      <category>databreach</category>
    </item>
    <item>
      <title>🖼️ ExifPlus: Why Metadata Matters in Bug Bounty Testing &amp; How to Protect Your App from Hidden Image Data</title>
      <dc:creator>Sarah Varghese</dc:creator>
      <pubDate>Fri, 12 Dec 2025 17:23:17 +0000</pubDate>
      <link>https://dev.to/sarahvarghese/exifplus-why-metadata-matters-in-bug-bounty-testing-how-to-protect-your-app-from-hidden-image-58on</link>
      <guid>https://dev.to/sarahvarghese/exifplus-why-metadata-matters-in-bug-bounty-testing-how-to-protect-your-app-from-hidden-image-58on</guid>
      <description>&lt;p&gt;Hey everyone! 👋 I’m Sarah, the curious mind behind &lt;strong&gt;TechieTales&lt;/strong&gt;, and today we’re diving into something every developer and bug hunter should know — &lt;strong&gt;image metadata&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you upload photos, build apps with user-generated media, or test platforms on Bugcrowd or HackerOne, this topic is &lt;em&gt;gold&lt;/em&gt;. And to explore it properly, we’ll use a super helpful open-source tool: &lt;strong&gt;ExifPlus&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Let’s break down what metadata is, why it matters, and how to protect users (and your app!) from accidental data leaks.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 What Exactly Is Image Metadata?
&lt;/h2&gt;

&lt;p&gt;Whenever you click a picture, your device secretly stores extra details inside it — called &lt;strong&gt;EXIF metadata&lt;/strong&gt;. This includes information like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📍 GPS coordinates&lt;/li&gt;
&lt;li&gt;📸 Camera make &amp;amp; model&lt;/li&gt;
&lt;li&gt;⏱️ Timestamps&lt;/li&gt;
&lt;li&gt;💻 Device &amp;amp; software info&lt;/li&gt;
&lt;li&gt;🔧 Editing tools used&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You usually can’t &lt;em&gt;see&lt;/em&gt; this metadata, but it’s still there — hidden inside the file.&lt;/p&gt;

&lt;p&gt;For regular users, that’s fine.&lt;br&gt;
But for developers, cybersecurity testers, and app builders?&lt;/p&gt;

&lt;p&gt;It can be a &lt;strong&gt;privacy flaw&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And yes — many websites &lt;em&gt;still&lt;/em&gt; forget to strip this data when users upload images...&lt;/p&gt;


&lt;h2&gt;
  
  
  ⚠️ Why Metadata Can Become a Security Issue
&lt;/h2&gt;

&lt;p&gt;Uploading a photo with EXIF metadata can unintentionally leak:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your location (GPS tags)&lt;/li&gt;
&lt;li&gt;When the image was captured&lt;/li&gt;
&lt;li&gt;Your device fingerprint&lt;/li&gt;
&lt;li&gt;Internal or confidential details of your testing environment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bug bounty hunters regularly find cases where sites:&lt;/p&gt;

&lt;p&gt;❌ Upload user images &lt;em&gt;as-is&lt;/em&gt;&lt;br&gt;
❌ Serve images back with all metadata intact&lt;br&gt;
❌ Expose GPS coordinates in public URLs or APIs&lt;/p&gt;

&lt;p&gt;Even though it’s often a low-severity issue, it’s still a valid privacy concern — one worth reporting.&lt;/p&gt;


&lt;h2&gt;
  
  
  🧰 Meet ExifPlus — A Handy Tool for Metadata Analysis
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;ExifPlus&lt;/strong&gt; is a Python package that lets you &lt;strong&gt;view, edit, and delete metadata&lt;/strong&gt; in images and videos through a simple GUI.&lt;/p&gt;

&lt;p&gt;📦 Install it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;exifplus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;▶️ Launch the tool:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; exifplus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll get a clean interface where you can load images and videos, inspect metadata, edit or delete fields, and even export reports.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✨ Key Features of ExifPlus:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;EXIF / IPTC / XMP metadata viewer&lt;/li&gt;
&lt;li&gt;Add, edit, or delete metadata entries&lt;/li&gt;
&lt;li&gt;Supports images + videos (JPEG, PNG, HEIC, MP4, MOV, MKV, etc.)&lt;/li&gt;
&lt;li&gt;HTML or JSON report generation&lt;/li&gt;
&lt;li&gt;User-friendly GUI&lt;/li&gt;
&lt;li&gt;Future support for batch editing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it perfect for both developers and bug hunters.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 How I Use ExifPlus for Bugcrowd Testing
&lt;/h2&gt;

&lt;p&gt;Here’s a simple workflow I often follow:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Upload image to a target website&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Maybe it’s a social platform, marketplace, or CMS.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Download or fetch the uploaded image&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CDN URL&lt;/li&gt;
&lt;li&gt;API endpoint&lt;/li&gt;
&lt;li&gt;Admin panel preview&lt;/li&gt;
&lt;li&gt;Public user profile&lt;/li&gt;
&lt;li&gt;Thumbnails&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Open the saved image in ExifPlus&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Look for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPS tags&lt;/li&gt;
&lt;li&gt;Timestamps&lt;/li&gt;
&lt;li&gt;Device ID fields&lt;/li&gt;
&lt;li&gt;Software identifiers&lt;/li&gt;
&lt;li&gt;Hidden metadata blocks&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. Compare before vs. after&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;If the metadata is still there → &lt;strong&gt;report it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Bonus points if you attach ExifPlus &lt;strong&gt;HTML/JSON reports&lt;/strong&gt; as evidence.&lt;/p&gt;

&lt;p&gt;Bug bounty platforms love clear, data-backed findings!&lt;/p&gt;




&lt;h2&gt;
  
  
  🛡️ Protecting Your App: How to Remove Metadata Automatically
&lt;/h2&gt;

&lt;p&gt;If you’re building an app or website that accepts uploads, always apply &lt;strong&gt;server-side sanitization&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here are practical options:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Strip metadata on the backend&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Python backend example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;PIL&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;remove_exif&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;output_path&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getdata&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
    &lt;span class="n"&gt;clean&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;clean&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;putdata&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;clean&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;output_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;2. Node.js example using Sharp&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sharp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sharp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nf"&gt;sharp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;photo.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;withMetadata&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;clean.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;3. Validate thumbnails too&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Many platforms strip metadata from the &lt;em&gt;main&lt;/em&gt; image but forget about thumbnails.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. Store only safe metadata&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;If you need info like orientation or dimensions, whitelist only those fields.&lt;/p&gt;




&lt;h2&gt;
  
  
  🪄 Developer Tip: Tools to Work With Metadata
&lt;/h2&gt;

&lt;p&gt;Besides ExifPlus, you can also use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ExifRead&lt;/strong&gt; (Python) – read metadata&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pyexiv2&lt;/strong&gt; – full control for read/write&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pyexifinfo&lt;/strong&gt; – wrapper for ExifTool&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ExifTool&lt;/strong&gt; – the OG command-line powerhouse&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pair these with your upload system, and you’ll never accidentally leak sensitive EXIF data again.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Image metadata is one of those invisible details developers often forget — until it becomes a security problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ExifPlus&lt;/strong&gt; makes it incredibly easy to inspect, clean, and understand metadata, whether you’re:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;building user-upload features&lt;/li&gt;
&lt;li&gt;testing websites on Bugcrowd&lt;/li&gt;
&lt;li&gt;learning about digital privacy&lt;/li&gt;
&lt;li&gt;or just curious about what your camera hides inside photos!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As always, stay curious, stay safe, and keep coding with care.&lt;br&gt;
— &lt;strong&gt;Sarah Varghese 💻✨&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>python</category>
      <category>midnightchallenge</category>
      <category>webdev</category>
    </item>
    <item>
      <title>🔐 Exploring Wi‑Fi Security Safely: A Beginner‑Friendly Guide to the WiFi‑Lab Controller (with GUI!)</title>
      <dc:creator>Sarah Varghese</dc:creator>
      <pubDate>Fri, 05 Dec 2025 12:53:21 +0000</pubDate>
      <link>https://dev.to/sarahvarghese/exploring-wi-fi-security-safely-a-beginner-friendly-guide-to-the-wifi-lab-controller-with-gui-b28</link>
      <guid>https://dev.to/sarahvarghese/exploring-wi-fi-security-safely-a-beginner-friendly-guide-to-the-wifi-lab-controller-with-gui-b28</guid>
      <description>&lt;p&gt;Wi‑Fi security often sounds intimidating — “monitor mode”, “fake access points”, “DNS spoofing”, “deauth packets”… all those scary words floating around on YouTube.&lt;/p&gt;

&lt;p&gt;But here’s the truth:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;You can learn Wi‑Fi security safely, legally, and visually — without doing anything harmful — using a simple GUI tool.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Recently, I tested a new open‑source app called &lt;strong&gt;WiFi‑Lab Controller&lt;/strong&gt;, built in Python using Tkinter.&lt;br&gt;
It’s designed as a &lt;em&gt;Wi‑Fi learning lab&lt;/em&gt; that runs on Linux (Parrot OS / Kali / Raspberry Pi), where you can safely explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wi‑Fi scanning&lt;/li&gt;
&lt;li&gt;Monitor mode&lt;/li&gt;
&lt;li&gt;Access point behavior&lt;/li&gt;
&lt;li&gt;DNS redirection&lt;/li&gt;
&lt;li&gt;Interface controls&lt;/li&gt;
&lt;li&gt;Network testing&lt;/li&gt;
&lt;li&gt;and more…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best part? You don’t need to write a single command manually — everything is clickable.&lt;/p&gt;

&lt;p&gt;This article is a deep dive into &lt;strong&gt;how the tool works&lt;/strong&gt;, explained in a &lt;em&gt;friendly, non‑hacker, non‑scary way&lt;/em&gt;.&lt;/p&gt;


&lt;h1&gt;
  
  
  🖥️ What Is WiFi‑Lab Controller?
&lt;/h1&gt;

&lt;p&gt;It’s a &lt;strong&gt;GUI desktop app&lt;/strong&gt; designed to help beginners and students learn Wi‑Fi concepts the &lt;em&gt;safe way&lt;/em&gt; — without sending any harmful packets or breaking any laws.&lt;/p&gt;

&lt;p&gt;It provides:&lt;/p&gt;

&lt;p&gt;✔ Monitor mode control&lt;br&gt;
✔ Wi‑Fi scanning (2.4GHz &amp;amp; 5GHz)&lt;br&gt;
✔ Tab‑based interface&lt;br&gt;
✔ Ability to select networks from a live table&lt;br&gt;
✔ Safe disconnect methods (no deauth frames)&lt;br&gt;
✔ Fake AP setup for labs&lt;br&gt;
✔ DNS redirection (“facebook.com → localhost:8080”)&lt;br&gt;
✔ Settings, About, and more&lt;/p&gt;

&lt;p&gt;Everything is displayed clearly in tabs.&lt;br&gt;
Let’s walk through every tab and what it teaches you.&lt;/p&gt;


&lt;h1&gt;
  
  
  🧭 TAB 1 — &lt;strong&gt;Home&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;This is your dashboard.&lt;br&gt;
It summarizes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your Wi‑Fi interface&lt;/li&gt;
&lt;li&gt;your system&lt;/li&gt;
&lt;li&gt;your available modes&lt;/li&gt;
&lt;li&gt;warnings &amp;amp; safety reminders&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s designed for beginners so you always know &lt;em&gt;what state&lt;/em&gt; your Wi‑Fi card is in — something many tutorials forget to explain.&lt;/p&gt;


&lt;h1&gt;
  
  
  🔍 TAB 2 — &lt;strong&gt;Scan Networks (Mode 3 &amp;amp; 4)&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;This is my favorite part because it visually reveals how Wi‑Fi networks communicate around you.&lt;/p&gt;
&lt;h2&gt;
  
  
  ⭐ What this tab teaches you:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What BSSID means (MAC address of the router)&lt;/li&gt;
&lt;li&gt;What channels represent&lt;/li&gt;
&lt;li&gt;What 2.4GHz and 5GHz are&lt;/li&gt;
&lt;li&gt;How networks broadcast themselves&lt;/li&gt;
&lt;li&gt;Signal differences&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  ⭐ What buttons you get:
&lt;/h2&gt;
&lt;h3&gt;
  
  
  🔘 &lt;strong&gt;Mode 3 — Scan 2.4 GHz (bg band)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The app automatically:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enables monitor mode&lt;/li&gt;
&lt;li&gt;Runs a safe, passive scan&lt;/li&gt;
&lt;li&gt;Fills a live table:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;BSSID&lt;/th&gt;
&lt;th&gt;Channel&lt;/th&gt;
&lt;th&gt;Band&lt;/th&gt;
&lt;th&gt;ESSID&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is the first time many beginners actually &lt;em&gt;see&lt;/em&gt; how many routers and devices surround them.&lt;/p&gt;
&lt;h3&gt;
  
  
  🔘 &lt;strong&gt;Mode 4 — Scan 5 GHz (a band)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Same as above but for 5GHz networks.&lt;/p&gt;
&lt;h3&gt;
  
  
  🔘 Stop Scan
&lt;/h3&gt;

&lt;p&gt;Stops scanning and automatically disables monitor mode.&lt;/p&gt;

&lt;p&gt;No dangerous packets, no interference — everything is &lt;strong&gt;read-only&lt;/strong&gt;.&lt;/p&gt;


&lt;h1&gt;
  
  
  🖱️ NEW FEATURE — Click To Select a Network
&lt;/h1&gt;

&lt;p&gt;When you click any row in the scan table:&lt;/p&gt;

&lt;p&gt;✔ It pops a confirmation dialog&lt;br&gt;
✔ Shows BSSID + channel + ESSID&lt;br&gt;
✔ Saves it for later use (Fake AP, DNS rules, testing)&lt;/p&gt;

&lt;p&gt;This makes it &lt;em&gt;feel like a real Wi‑Fi analyzer&lt;/em&gt;, but still safe for learners.&lt;/p&gt;


&lt;h1&gt;
  
  
  📡 TAB 3 — &lt;strong&gt;Fake Access Point (Learning Mode Only)&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;This is where learners understand &lt;em&gt;the concept&lt;/em&gt; of a fake AP — not for hacking, but for observation.&lt;/p&gt;

&lt;p&gt;The tool can create a &lt;strong&gt;lab-only access point&lt;/strong&gt; that mimics your real SSID so you can study:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how devices auto-connect&lt;/li&gt;
&lt;li&gt;how DHCP works&lt;/li&gt;
&lt;li&gt;how traffic flows&lt;/li&gt;
&lt;li&gt;how DNS queries behave&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It helps students understand how:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Man-in-the-middle works (theory only)&lt;/li&gt;
&lt;li&gt;Captive portals work&lt;/li&gt;
&lt;li&gt;Wi‑Fi roaming works&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything is contained to your local lab.&lt;/p&gt;


&lt;h1&gt;
  
  
  🌐 TAB 4 — &lt;strong&gt;Domain Redirect (DNS Mapping)&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;This tab is surprisingly powerful, yet safe.&lt;/p&gt;

&lt;p&gt;Here you can add entries like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;facebook.com → localhost:8080  
instagram.com → 192.168.50.1  
youtube.com → 127.0.0.1  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What this means:&lt;/p&gt;

&lt;p&gt;➡ Any device connected to your &lt;strong&gt;lab fake AP&lt;/strong&gt;&lt;br&gt;
➡ Trying to visit those domains&lt;br&gt;
➡ Gets redirected to the address you chose&lt;/p&gt;

&lt;p&gt;Great for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;creating custom landing pages&lt;/li&gt;
&lt;li&gt;cybersecurity demonstrations&lt;/li&gt;
&lt;li&gt;parental control simulations&lt;/li&gt;
&lt;li&gt;phishing prevention studies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is &lt;strong&gt;not&lt;/strong&gt; a malicious attack.&lt;br&gt;
It’s simply DNS mapping on your own local lab network.&lt;/p&gt;


&lt;h1&gt;
  
  
  ⚙ TAB 5 — &lt;strong&gt;Settings&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Here you can configure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;interface selection&lt;/li&gt;
&lt;li&gt;network adapter options&lt;/li&gt;
&lt;li&gt;monitor mode defaults&lt;/li&gt;
&lt;li&gt;auto-stop duration for scans&lt;/li&gt;
&lt;li&gt;file paths&lt;/li&gt;
&lt;li&gt;logs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is newbie-friendly and well organized, and includes safety locks so you don’t accidentally interfere with real networks.&lt;/p&gt;


&lt;h1&gt;
  
  
  🧾 TAB 6 — &lt;strong&gt;About&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;A clean About tab shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;App name&lt;/li&gt;
&lt;li&gt;Author: &lt;em&gt;Mohammed Zahid Wadiwale&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Website: &lt;strong&gt;Webaon.com&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;em&gt;ZahidServers&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Academy Courses&lt;/li&gt;
&lt;li&gt;Blog links&lt;/li&gt;
&lt;li&gt;Support options (hosting, domains, etc.)&lt;/li&gt;
&lt;/ul&gt;


&lt;h1&gt;
  
  
  🧠 What Beginners Learn From This Tool
&lt;/h1&gt;

&lt;p&gt;The app lets users understand:&lt;/p&gt;
&lt;h3&gt;
  
  
  ✔ What monitor mode is
&lt;/h3&gt;
&lt;h3&gt;
  
  
  ✔ How network scanning works
&lt;/h3&gt;
&lt;h3&gt;
  
  
  ✔ What APs broadcast
&lt;/h3&gt;
&lt;h3&gt;
  
  
  ✔ What channels actually do
&lt;/h3&gt;
&lt;h3&gt;
  
  
  ✔ IoT behavior when re-connecting
&lt;/h3&gt;
&lt;h3&gt;
  
  
  ✔ How DNS redirection works
&lt;/h3&gt;
&lt;h3&gt;
  
  
  ✔ How fake APs behave in a lab
&lt;/h3&gt;
&lt;h3&gt;
  
  
  ✔ How network interfaces reset
&lt;/h3&gt;

&lt;p&gt;This knowledge forms the backbone of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Penetration testing&lt;/li&gt;
&lt;li&gt;SOC analysis&lt;/li&gt;
&lt;li&gt;Network defense&lt;/li&gt;
&lt;li&gt;Incident response&lt;/li&gt;
&lt;li&gt;Wi‑Fi architecture design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And all of it is done &lt;strong&gt;without touching any real networks&lt;/strong&gt; or causing any interference.&lt;/p&gt;


&lt;h1&gt;
  
  
  📦 Installing the App (Beginner Friendly)
&lt;/h1&gt;

&lt;p&gt;The tool is published on PyPI as &lt;strong&gt;wifilab&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install wifilab
wifilab
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It launches the GUI instantly.&lt;/p&gt;




&lt;h1&gt;
  
  
  🎓 Final Thoughts
&lt;/h1&gt;

&lt;p&gt;Cybersecurity doesn’t have to be scary or illegal.&lt;br&gt;
Tools like &lt;strong&gt;WiFi‑Lab Controller&lt;/strong&gt; help beginners learn the fundamentals safely, visually, and legally.&lt;/p&gt;

&lt;p&gt;As someone who loves simplifying complex tech, this GUI tool is honestly one of the best educational Wi‑Fi tools I’ve used lately — especially for students and curious learners.&lt;/p&gt;

&lt;p&gt;If you're exploring Wi‑Fi behavior, network protocol basics, or cybersecurity fundamentals…&lt;br&gt;
&lt;strong&gt;this is the perfect starting point.&lt;/strong&gt;&lt;/p&gt;




</description>
      <category>cybersecurity</category>
      <category>wifihack</category>
      <category>phishing</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Guys check this out https://blog.webaon.com/ it has some great articles about future trends in IT for 2026</title>
      <dc:creator>Sarah Varghese</dc:creator>
      <pubDate>Mon, 24 Nov 2025 08:27:28 +0000</pubDate>
      <link>https://dev.to/sarahvarghese/guys-check-this-out-httpsblogwebaoncom-it-has-some-great-articles-about-future-trends-in-it-4e64</link>
      <guid>https://dev.to/sarahvarghese/guys-check-this-out-httpsblogwebaoncom-it-has-some-great-articles-about-future-trends-in-it-4e64</guid>
      <description>&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://blog.webaon.com/" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblogger.googleusercontent.com%2Fimg%2Fb%2FR29vZ2xl%2FAVvXsEh5R6dlI23i6Cb_gEQiVD-UeDDo5O7-gwVi5wP9NoDekM0uXrtqxhuWrENs4bJgRjO1jYeRKEEzP0VDkJG9rki2GlHrOFBgYOgGvc0o0sru-98fiFjb6uxiQkukww4GNa2v0SSRAFu_GyCVZ0jrb_BxYph5F0X0vs4ny0cmJgw7dr-VvpBbbEOUnZutJSMp%2Fw1200-h630-p-k-no-nu%2FFuturistic_website_speed_optimization_dashboard%2C_fast_loading_bar.jpg" height="420" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://blog.webaon.com/" rel="noopener noreferrer" class="c-link"&gt;
            Webaon Blog
          &lt;/a&gt;
        &lt;/h2&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.webaon.com%2Ffavicon.ico" width="48" height="48"&gt;
          blog.webaon.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>#dicuss 
An Interesting Topic I wrote about</title>
      <dc:creator>Sarah Varghese</dc:creator>
      <pubDate>Wed, 19 Nov 2025 12:26:34 +0000</pubDate>
      <link>https://dev.to/sarahvarghese/dicuss-an-interesting-topic-i-wrote-about-38hj</link>
      <guid>https://dev.to/sarahvarghese/dicuss-an-interesting-topic-i-wrote-about-38hj</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/sarahvarghese" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F3594093%2F079e3e57-f5f6-431a-b713-617367e3e9c5.png" alt="sarahvarghese"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/sarahvarghese/mumbais-top-web-design-development-agencies-2025-a-complete-comparison-guide-5229" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Mumbai’s Top Web Design &amp;amp; Development Agencies (2025): A Complete Comparison Guide&lt;/h2&gt;
      &lt;h3&gt;Sarah Varghese ・ Nov 19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#startup&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#business&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#mumbai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdesign&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>startup</category>
      <category>business</category>
      <category>mumbai</category>
      <category>webdesign</category>
    </item>
    <item>
      <title>Mumbai’s Top Web Design &amp; Development Agencies (2025): A Complete Comparison Guide</title>
      <dc:creator>Sarah Varghese</dc:creator>
      <pubDate>Wed, 19 Nov 2025 06:18:50 +0000</pubDate>
      <link>https://dev.to/sarahvarghese/mumbais-top-web-design-development-agencies-2025-a-complete-comparison-guide-5229</link>
      <guid>https://dev.to/sarahvarghese/mumbais-top-web-design-development-agencies-2025-a-complete-comparison-guide-5229</guid>
      <description>&lt;p&gt;In 2025, Mumbai continues to be one of India’s most vibrant hubs for digital innovation. The city is home to a wide variety of web design and development agencies — from lean product studios to full-stack digital powerhouses. Choosing the right partner depends on your business stage, technical needs, and budget.&lt;/p&gt;

&lt;p&gt;Here’s a detailed breakdown of some of the top agencies in Mumbai, along with a strategic comparison, so you can pick the best fit for your project.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. &lt;strong&gt;&lt;a href="https://www.webaon.com/" rel="noopener noreferrer"&gt;Webaon&lt;/a&gt; — The Full-Stack, Infrastructure-Owned Powerhouse&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Core Strengths&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Webaon isn’t just a web agency. It controls its own hosting infrastructure — including servers, email systems, and domain infrastructure — which gives it strong control over performance and reliability.&lt;/li&gt;
&lt;li&gt;Proprietary tech: They have developed &lt;strong&gt;ZAM&lt;/strong&gt;, a custom programming language, and &lt;strong&gt;JavaZT&lt;/strong&gt;, an internal IDE. This suggests deep engineering capacity and the ability to optimize builds specific to their stack.&lt;/li&gt;
&lt;li&gt;Wide tech stack: For web projects, they work with React, Angular, Vue, Next.js on the frontend; backend includes Python (Django / Flask), Node.js, Laravel, Spring Boot, and ZAM.&lt;/li&gt;
&lt;li&gt;Mobile development: They support both native (Kotlin/Swift) and cross-platform (Flutter, PWA), making them flexible for different mobile strategies.&lt;/li&gt;
&lt;li&gt;AI / Advanced Features: They claim to offer &lt;strong&gt;Voiceaonic&lt;/strong&gt;, a deep-fake AI spokesperson system for video — this is rare in many agencies and gives an edge for companies wanting cutting-edge brand storytelling.&lt;/li&gt;
&lt;li&gt;Hosting &amp;amp; Security: Webaon’s product range includes shared (cPanel), VPS (self-managed and fully managed), and dedicated servers. They also offer security services (web application firewalls, malware scanning, backups).&lt;/li&gt;
&lt;li&gt;Managed WordPress: Their WordPress plans come with NVMe storage, daily malware scans, firewalls, staging, and WooCommerce support.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;When to Choose Webaon&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you want &lt;strong&gt;ownership + stability&lt;/strong&gt; — particularly for scalable / high-performance websites / platforms.&lt;/li&gt;
&lt;li&gt;If you need &lt;strong&gt;deep technical expertise&lt;/strong&gt; + a partner that can handle both development &lt;em&gt;and&lt;/em&gt; infrastructure.&lt;/li&gt;
&lt;li&gt;For projects involving AI-driven media, video explainers, or custom backend logic.&lt;/li&gt;
&lt;li&gt;For Better Designs, animations and more features.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Limitations / Risks&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It may be more expensive than lean agencies, given the tech depth and infrastructure control, though they claim affordable products and services.&lt;/li&gt;
&lt;li&gt;For very simple websites, Webaon’s full-stack capabilities might be overkill.&lt;/li&gt;
&lt;li&gt;Their more experimental / advanced services (like Voiceaonic) may not have fixed pricing or standard SLAs (based on publicly available info).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. &lt;strong&gt;&lt;a href="https://www.ideamagix.com/" rel="noopener noreferrer"&gt;Ideamagix&lt;/a&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Overview &amp;amp; Strengths&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ideamagix blends web development with strong digital marketing. According to their blog, they are good at SEO-optimized sites and conversion-focused design.&lt;/li&gt;
&lt;li&gt;Their stack includes WordPress, Shopify, and custom builds.&lt;/li&gt;
&lt;li&gt;They are well-suited for &lt;strong&gt;SMEs and startups&lt;/strong&gt; because they combine design, development, and digital strategy.&lt;/li&gt;
&lt;li&gt;Reputation: Featured in multiple “top Mumbai agencies” lists.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal For&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Small-to-mid businesses that need a balance between creative design and growth.&lt;/li&gt;
&lt;li&gt;E-commerce websites, content-driven brands, or business sites where marketing and SEO are critical.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. &lt;strong&gt;&lt;a href="https://syspree.com/" rel="noopener noreferrer"&gt;SySpree&lt;/a&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Overview &amp;amp; Strengths&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Known for enterprise-level, scalable web solutions. According to top-10 lists, they offer creative website design + digital strategy.&lt;/li&gt;
&lt;li&gt;They have experience building robust portals, CRM / ERP-style platforms, and API-heavy systems.&lt;/li&gt;
&lt;li&gt;Their technical stack is deep, and they emphasize maintainable architecture + performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal For&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Established companies or enterprises that want a partner to build custom, scalable digital infrastructure.&lt;/li&gt;
&lt;li&gt;Use-cases where uptime, long-term maintainability, and integration with business systems are key.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  4. &lt;strong&gt;&lt;a href="https://bombaydc.com/" rel="noopener noreferrer"&gt;BombayDC&lt;/a&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Overview &amp;amp; Strengths&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A boutique, design-focused agency. According to expert reviews, they specialize in UX/UI, product design, motion design, and brand identity.&lt;/li&gt;
&lt;li&gt;Emphasis on minimalism, clean aesthetics, and user-focused interfaces.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal For&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Brands that care deeply about design experience — premium consumer-facing brands, lifestyle or creative businesses.&lt;/li&gt;
&lt;li&gt;Projects where UX and visual storytelling are more important than raw backend complexity.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  5. &lt;strong&gt;&lt;a href="https://scaledelight.com/" rel="noopener noreferrer"&gt;Scale Delight&lt;/a&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Overview &amp;amp; Strengths&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;According to a 2025–26 list, Scale Delight is strong in custom WordPress development, MERN stack development, and e-commerce (WooCommerce, Shopify).&lt;/li&gt;
&lt;li&gt;Their team is lean but technically capable, offering scalability for projects without huge agency overhead.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal For&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Startups or growth-stage businesses that need modern web apps or scalable WordPress + e-commerce solutions.&lt;/li&gt;
&lt;li&gt;Projects that need a clean, scalable codebase without paying enterprise-level agency fees.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  6. &lt;strong&gt;&lt;a href="https://www.saveasweb.com/" rel="noopener noreferrer"&gt;Save As Web&lt;/a&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Overview &amp;amp; Strengths&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Positioned in Mumbai as a creative, scalable web development agency. According to WREBB, they are good at WordPress, custom apps, and UI/UX.&lt;/li&gt;
&lt;li&gt;They use modern frameworks (React, Vue) and deliver end-to-end digital solutions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal For&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Businesses that want flexible design + strong technical architecture.&lt;/li&gt;
&lt;li&gt;Teams that want a modern, interactive web app rather than just a brochure site.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  7. &lt;strong&gt;&lt;a href="https://www.technowings.in/" rel="noopener noreferrer"&gt;TechnoWings Solutions&lt;/a&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Overview &amp;amp; Strengths&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Listed in “Top 10 Website Development Company in Mumbai” by RightWebSolution.&lt;/li&gt;
&lt;li&gt;Their services include Laravel, Magento, ReactJS, and scalable web applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal For&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;E-commerce platforms (especially Magento / Laravel)&lt;/li&gt;
&lt;li&gt;Businesses that want a robust, custom backend + flexible frontend.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  8. &lt;strong&gt;&lt;a href="https://www.stymeta.com/" rel="noopener noreferrer"&gt;Stymeta Technologies&lt;/a&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Overview &amp;amp; Strengths&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Known for strong backend architecture + API-driven platforms. According to Ideamagix’s guide, Stymeta is one of the top 5 in Mumbai.&lt;/li&gt;
&lt;li&gt;They build enterprise grade systems, PWAs, and large-scale web apps. WREBB also includes them in its top-10 list.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal For&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enterprises needing scalable backend systems, microservices, or complex workflows.&lt;/li&gt;
&lt;li&gt;Projects that need high-performance web apps or portals (not just static sites).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Comparison Matrix
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Agency&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Core Strength&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Technology Focus&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Ideal For&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Webaon&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Full-stack + Infrastructure&lt;/td&gt;
&lt;td&gt;React, Python, ZAM, Flutter&lt;/td&gt;
&lt;td&gt;Scalable business platforms, AI, high-performance sites&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ideamagix&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Design + Marketing Integration&lt;/td&gt;
&lt;td&gt;WordPress, Shopify&lt;/td&gt;
&lt;td&gt;SMEs, e-commerce, growth websites&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SySpree&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Enterprise Web Solutions&lt;/td&gt;
&lt;td&gt;Custom backend, APIs&lt;/td&gt;
&lt;td&gt;Large companies, B2B portals, CRM/ERP systems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;BombayDC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;UX / UI Design&lt;/td&gt;
&lt;td&gt;Design systems, motion&lt;/td&gt;
&lt;td&gt;Branding-first websites, consumer brands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scale Delight&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Scalable Apps / E-commerce&lt;/td&gt;
&lt;td&gt;MERN, Laravel, WooCommerce&lt;/td&gt;
&lt;td&gt;Startups, growing e-commerce firms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Save As Web&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Flexible Web Apps&lt;/td&gt;
&lt;td&gt;React, Vue, CMS&lt;/td&gt;
&lt;td&gt;Interactive web apps, modern websites&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TechnoWings&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Custom / E-commerce&lt;/td&gt;
&lt;td&gt;Laravel, Magento, React&lt;/td&gt;
&lt;td&gt;Custom web platforms, backend-heavy apps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stymeta&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High-Performance Backend&lt;/td&gt;
&lt;td&gt;JavaScript, APIs, PWAs&lt;/td&gt;
&lt;td&gt;Enterprise web apps, microservices&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  Strategic Takeaways &amp;amp; Recommendation
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Define Your Business Stage&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;If you’re a &lt;strong&gt;startup / SME&lt;/strong&gt;: Ideamagix, Scale Delight, or Save As Web are likely to give you a good balance of cost, design, and functionality.&lt;/li&gt;
&lt;li&gt;If you’re &lt;strong&gt;scaling or building a product&lt;/strong&gt;: Webaon or Stymeta offer the technical depth and infrastructure capability to support growth.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prioritize What Matters Most&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Performance &amp;amp; uptime&lt;/strong&gt;: Go with Webaon or SySpree.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design &amp;amp; brand experience&lt;/strong&gt;: BombayDC is very strong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;E-commerce&lt;/strong&gt;: Scale Delight or Webaon.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Consider Long-Term Cost / Control&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Webaon’s infrastructure ownership may cost more but gives you flexibility.&lt;/li&gt;
&lt;li&gt;Agencies like Ideamagix give good value but may rely on third-party hosting.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ask for Portfolios &amp;amp; Case Studies&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Request live URLs + performance metrics (loading times, uptime).&lt;/li&gt;
&lt;li&gt;Ask for client references (especially for complex projects).&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Check Support / Maintenance Options&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;After launch, websites need updates, security, and bug fixes — ensure your agency offers post-launch support.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Why Webaon Stands Out in 2025
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Webaon is more than just a web agency — it’s a &lt;strong&gt;digital infrastructure partner&lt;/strong&gt;. In 2025, with the rising importance of performance, security, and ownership, Webaon’s control over its stack is a significant advantage.&lt;/li&gt;
&lt;li&gt;Their proprietary tech (ZAM, IDE, LeadGen, VoiceAonic) shows they are not just selling services — they build deeply, potentially giving better optimization and customization.&lt;/li&gt;
&lt;li&gt;With increasing demand for AI-driven content, their claimed &lt;strong&gt;Voiceaonic&lt;/strong&gt; capability gives them a niche, futuristic appeal.&lt;/li&gt;
&lt;/ul&gt;




</description>
      <category>startup</category>
      <category>business</category>
      <category>mumbai</category>
      <category>webdesign</category>
    </item>
    <item>
      <title>💡 I recently experimented with XSS safely on localhost and explored a fun Defacement Code Generator to visualize it. It’s all for learning, not real hacking!
Have you tried building a safe XSS lab or experimenting with dynamic HTML locally? I’d love to he</title>
      <dc:creator>Sarah Varghese</dc:creator>
      <pubDate>Mon, 10 Nov 2025 06:34:39 +0000</pubDate>
      <link>https://dev.to/sarahvarghese/i-recently-experimented-with-xss-safely-on-localhost-and-explored-a-fun-defacement-code-generator-ggo</link>
      <guid>https://dev.to/sarahvarghese/i-recently-experimented-with-xss-safely-on-localhost-and-explored-a-fun-defacement-code-generator-ggo</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/sarahvarghese" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F3594093%2F079e3e57-f5f6-431a-b713-617367e3e9c5.png" alt="sarahvarghese"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/sarahvarghese/my-freelance-journey-and-a-safe-dive-into-xss-cross-site-scripting-3d5m" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;My Freelance Journey and a Safe Dive into XSS (Cross-Site Scripting) 🌐💻&lt;/h2&gt;
      &lt;h3&gt;Sarah Varghese ・ Nov 10&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#security&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#xss&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#discuss&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>security</category>
      <category>xss</category>
      <category>discuss</category>
    </item>
    <item>
      <title>My Freelance Journey and a Safe Dive into XSS (Cross-Site Scripting) 🌐💻</title>
      <dc:creator>Sarah Varghese</dc:creator>
      <pubDate>Mon, 10 Nov 2025 06:32:52 +0000</pubDate>
      <link>https://dev.to/sarahvarghese/my-freelance-journey-and-a-safe-dive-into-xss-cross-site-scripting-3d5m</link>
      <guid>https://dev.to/sarahvarghese/my-freelance-journey-and-a-safe-dive-into-xss-cross-site-scripting-3d5m</guid>
      <description>&lt;p&gt;Hey folks! 👋 I’m Sarah Varghese, the mind behind TechieTales. Today I wanted to share a mix of my &lt;strong&gt;freelance experience&lt;/strong&gt; and a little &lt;strong&gt;educational security fun&lt;/strong&gt; I’ve been exploring lately.&lt;/p&gt;

&lt;p&gt;Freelancing isn’t just about &lt;strong&gt;building client websites&lt;/strong&gt; — it’s also about &lt;strong&gt;understanding how they work under the hood&lt;/strong&gt;, including &lt;strong&gt;security vulnerabilities&lt;/strong&gt; and &lt;strong&gt;how to fix them&lt;/strong&gt;. One interesting area is &lt;strong&gt;XSS or Cross-Site Scripting&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is XSS? 🕵️‍♀️
&lt;/h2&gt;

&lt;p&gt;XSS (Cross-Site Scripting) happens when an attacker manages to inject &lt;strong&gt;malicious code&lt;/strong&gt; into a website. If unchecked, this can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modify page content&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Steal sensitive data&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run scripts in users’ browsers&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are different types of XSS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reflected:&lt;/strong&gt; Code comes from a URL or input and reflects back immediately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stored:&lt;/strong&gt; Code is saved in a database and executed for anyone visiting the page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DOM-based:&lt;/strong&gt; Code manipulates the page’s Document Object Model directly in the browser.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While scary on live websites, we can safely &lt;strong&gt;experiment locally&lt;/strong&gt; to understand how it works — and why proper &lt;strong&gt;input validation&lt;/strong&gt; is so important.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building a Safe XSS Lab on Localhost 🏠
&lt;/h2&gt;

&lt;p&gt;Instead of manually writing HTML for a defacement demo, I recently found a &lt;strong&gt;super fun and safe tool&lt;/strong&gt;: the &lt;a href="https://zahidservers.github.io/Defacement-Code-Generator/" rel="noopener noreferrer"&gt;Defacement Code Generator&lt;/a&gt;. It lets you &lt;strong&gt;create retro “hacked-style” pages&lt;/strong&gt; for learning purposes — all offline, all safe.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Generate Your Safe HTML Page
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;strong&gt;Defacement Code Generator&lt;/strong&gt; in your browser.&lt;/li&gt;
&lt;li&gt;Enter a nickname, custom message, and pick your fonts, colors, backgrounds, or even GIFs.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Generate HTML&lt;/strong&gt; and copy the resulting code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This gives you a fully animated page you can &lt;strong&gt;use for testing XSS concepts safely&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Serve It via JS Locally
&lt;/h3&gt;

&lt;p&gt;Save the generated HTML into a local file, or embed it into a JS file like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;htmlContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`PASTE_YOUR_GENERATED_HTML_HERE`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;htmlContent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;close&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This demonstrates how XSS can &lt;strong&gt;load content dynamically&lt;/strong&gt;, without touching real websites.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Trigger XSS Using &lt;code&gt;onerror&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;You can simulate an XSS attack on a &lt;strong&gt;vulnerable local page&lt;/strong&gt;, I am using a local vulnerable flights/hotel booking MMT clone:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:8080/b2c/hotel/view/results.php?searchLocation="&amp;gt;&amp;lt;img src=x onerror="var s=document.createElement('script');s.src='http://localhost:5000/lab/loadDeface.js';document.body.appendChild(s);"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s what happens:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Broken image triggers &lt;code&gt;onerror&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; element loads your local JS file.&lt;/li&gt;
&lt;li&gt;The JS file writes HTML into the page — in this case, your &lt;strong&gt;generated “defaced” page&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;⚠️ Reminder: &lt;strong&gt;Only ever do this on localhost or a sandbox.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters for Freelancers
&lt;/h2&gt;

&lt;p&gt;As someone building &lt;strong&gt;custom WordPress themes&lt;/strong&gt; and &lt;strong&gt;full-stack apps&lt;/strong&gt;, I’ve seen how small vulnerabilities can cause big problems. Learning XSS and testing with safe tools helps me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build &lt;strong&gt;safer websites&lt;/strong&gt; for clients.&lt;/li&gt;
&lt;li&gt;Understand &lt;strong&gt;how attackers think&lt;/strong&gt; and how to defend against them.&lt;/li&gt;
&lt;li&gt;Experiment with &lt;strong&gt;creative HTML/JS injection safely&lt;/strong&gt;, using tools like the &lt;strong&gt;Defacement Code Generator&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;Security doesn’t have to be boring! By setting up a &lt;strong&gt;safe XSS lab&lt;/strong&gt; and using &lt;strong&gt;educational tools&lt;/strong&gt;, you can experiment, learn, and &lt;strong&gt;write code that’s both creative and safe&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Freelancers who understand these concepts become more &lt;strong&gt;confident and professional&lt;/strong&gt;. 🚀&lt;/p&gt;

&lt;p&gt;Stay curious, keep coding, and always &lt;strong&gt;keep your localhost safe&lt;/strong&gt;!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>security</category>
      <category>xss</category>
      <category>discuss</category>
    </item>
    <item>
      <title>My Freelance Journey: Building and Launching a Custom WordPress Theme for a Client</title>
      <dc:creator>Sarah Varghese</dc:creator>
      <pubDate>Tue, 04 Nov 2025 13:19:55 +0000</pubDate>
      <link>https://dev.to/sarahvarghese/my-freelance-journey-building-and-launching-a-custom-wordpress-theme-for-a-client-39hf</link>
      <guid>https://dev.to/sarahvarghese/my-freelance-journey-building-and-launching-a-custom-wordpress-theme-for-a-client-39hf</guid>
      <description>&lt;h2&gt;
  
  
  How I Built and Deployed My First Custom WordPress Theme 🎨
&lt;/h2&gt;

&lt;p&gt;WordPress is one of those rare platforms that can feel both simple and endlessly flexible.&lt;br&gt;&lt;br&gt;
After working with prebuilt themes for years, I decided it was time to create something from scratch — a &lt;strong&gt;custom WordPress theme&lt;/strong&gt; that’s lightweight, fast, and perfectly tailored for a freelance client project.&lt;/p&gt;


&lt;h2&gt;
  
  
  Inspiration
&lt;/h2&gt;

&lt;p&gt;I had a Dubai-based freelance client who wanted a minimalist website for showcasing their creative services.&lt;br&gt;&lt;br&gt;
They didn’t want the “template look” that comes with many ready-made themes, so I decided to code one myself.&lt;br&gt;&lt;br&gt;
My goals were clear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep it clean and functional.
&lt;/li&gt;
&lt;li&gt;Focus on SEO and performance.
&lt;/li&gt;
&lt;li&gt;Learn how each WordPress file connects together behind the scenes.
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  My Setup
&lt;/h2&gt;

&lt;p&gt;For hosting and development, I used the &lt;strong&gt;WordPress Ultimate&lt;/strong&gt; plan from &lt;a href="https://www.webaon.com/" rel="noopener noreferrer"&gt;Webaon&lt;/a&gt;, which made everything from installation to deployment incredibly smooth.&lt;/p&gt;

&lt;p&gt;Here’s what the plan includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 website
&lt;/li&gt;
&lt;li&gt;30 GB NVMe storage
&lt;/li&gt;
&lt;li&gt;Unmetered bandwidth
&lt;/li&gt;
&lt;li&gt;Free SSL certificate
&lt;/li&gt;
&lt;li&gt;WordPress pre-installed
&lt;/li&gt;
&lt;li&gt;Daily + on-demand backups
&lt;/li&gt;
&lt;li&gt;Web Application Firewall
&lt;/li&gt;
&lt;li&gt;Daily malware scans &amp;amp; unlimited malware removal
&lt;/li&gt;
&lt;li&gt;Up to &lt;strong&gt;2x faster performance&lt;/strong&gt; with Cloudflare CDN
&lt;/li&gt;
&lt;li&gt;Enhanced DDoS protection
&lt;/li&gt;
&lt;li&gt;Staging site
&lt;/li&gt;
&lt;li&gt;WordPress code optimizer
&lt;/li&gt;
&lt;li&gt;Smart plugin manager
&lt;/li&gt;
&lt;li&gt;WooCommerce-ready
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For ₹849/month (discounted from ₹2,029), this plan gave me everything I needed — fast hosting, security, and peace of mind while experimenting.&lt;/p&gt;


&lt;h2&gt;
  
  
  Development Journey 🧑‍💻
&lt;/h2&gt;

&lt;p&gt;This was the part where I spent most of my time — coding, breaking, fixing, and finally launching something that worked beautifully.  &lt;/p&gt;
&lt;h3&gt;
  
  
  1. Setting up the workspace
&lt;/h3&gt;

&lt;p&gt;Since WordPress was already pre-installed on my hosting, I logged into the file manager and created a new folder inside:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
/wp-content/themes/mycustomtheme/

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

&lt;/div&gt;



&lt;p&gt;Then I added the essential starter files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
style.css
index.php
header.php
footer.php
functions.php
screenshot.png

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
`&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;style.css&lt;/code&gt; file begins with metadata that helps WordPress recognize the theme:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;css&lt;br&gt;
/*&lt;br&gt;
Theme Name: My Custom Theme&lt;br&gt;
Theme URI: https://mywebsite.com/&lt;br&gt;
Author: Sarah Varghese&lt;br&gt;
Description: A minimal, lightweight WordPress theme.&lt;br&gt;
Version: 1.0&lt;br&gt;
*/&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;`&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Connecting styles and scripts
&lt;/h3&gt;

&lt;p&gt;In &lt;code&gt;functions.php&lt;/code&gt;, I enqueued my CSS and JavaScript properly using WordPress functions. This ensures everything loads in the right order:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;`php&lt;br&gt;
function mytheme_enqueue_assets() {&lt;br&gt;
  wp_enqueue_style('mytheme-style', get_stylesheet_uri(), array(), '1.0', 'all');&lt;br&gt;
  wp_enqueue_script('mytheme-script', get_template_directory_uri() . '/assets/script.js', array('jquery'), '1.0', true);&lt;br&gt;
}&lt;br&gt;
add_action('wp_enqueue_scripts', 'mytheme_enqueue_assets');&lt;br&gt;
`&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then, I created an &lt;code&gt;/assets/&lt;/code&gt; folder to organize CSS, JS, and images neatly.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Building the layout
&lt;/h3&gt;

&lt;p&gt;I split the HTML structure into components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;header.php&lt;/code&gt; → site header, logo, and navigation&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;footer.php&lt;/code&gt; → copyright, links, and scripts&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;index.php&lt;/code&gt; → main content loop&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Inside &lt;code&gt;index.php&lt;/code&gt;, I added the WordPress Loop to dynamically load posts:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;`php&lt;br&gt;
&amp;lt;?php if (have_posts()) : ?&amp;gt;&lt;br&gt;
  &amp;lt;?php while (have_posts()) : the_post(); ?&amp;gt;&lt;br&gt;
    &amp;lt;article&amp;gt;&lt;br&gt;
      &amp;lt;h2&amp;gt;&amp;lt;?php the_title(); ?&amp;gt;&amp;lt;/h2&amp;gt;&lt;br&gt;
      &amp;lt;div class="content"&amp;gt;&lt;br&gt;
        &amp;lt;?php the_content(); ?&amp;gt;&lt;br&gt;
      &amp;lt;/div&amp;gt;&lt;br&gt;
    &amp;lt;/article&amp;gt;&lt;br&gt;
  &amp;lt;?php endwhile; ?&amp;gt;&lt;br&gt;
&amp;lt;?php else : ?&amp;gt;&lt;br&gt;
  &amp;lt;p&amp;gt;No posts found.&amp;lt;/p&amp;gt;&lt;br&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br&gt;
`&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Adding responsive design
&lt;/h3&gt;

&lt;p&gt;I used CSS Grid and Flexbox to make the theme responsive without relying on any framework.&lt;br&gt;
The focus was on &lt;strong&gt;clean typography, spacing, and accessibility&lt;/strong&gt; rather than heavy animations.&lt;/p&gt;

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

&lt;p&gt;`&lt;code&gt;&lt;/code&gt;css&lt;br&gt;
body {&lt;br&gt;
  font-family: 'Inter', sans-serif;&lt;br&gt;
  margin: 0;&lt;br&gt;
  padding: 0;&lt;br&gt;
  color: #222;&lt;br&gt;
  background: #f9f9f9;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.container {&lt;br&gt;
  display: grid;&lt;br&gt;
  grid-template-columns: 1fr 3fr 1fr;&lt;br&gt;
  gap: 20px;&lt;br&gt;
}&lt;br&gt;
&lt;code&gt;&lt;/code&gt;`&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Testing on staging
&lt;/h3&gt;

&lt;p&gt;One of my favorite features in Webaon’s WordPress Ultimate plan is the &lt;strong&gt;staging environment&lt;/strong&gt;.&lt;br&gt;
I cloned my live site to staging with one click and tested:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Layouts on different screen sizes&lt;/li&gt;
&lt;li&gt;Plugin compatibility&lt;/li&gt;
&lt;li&gt;Page speed and caching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I used the built-in &lt;strong&gt;WordPress code optimizer&lt;/strong&gt; and &lt;strong&gt;Cloudflare CDN&lt;/strong&gt; to enhance performance before publishing.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Going live 🚀
&lt;/h3&gt;

&lt;p&gt;Once everything looked great, I pushed the staging site to production.&lt;br&gt;
With &lt;strong&gt;daily backups&lt;/strong&gt; and a &lt;strong&gt;Web Application Firewall&lt;/strong&gt;, I didn’t have to worry about security or rollbacks.&lt;/p&gt;

&lt;p&gt;Finally, I added a few SEO plugins and analytics scripts, and the client’s site was ready to go live!&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;A minimal custom theme often performs better than heavy prebuilt templates.&lt;/li&gt;
&lt;li&gt;Properly enqueuing scripts and styles keeps the theme clean and stable.&lt;/li&gt;
&lt;li&gt;Using a &lt;strong&gt;staging site&lt;/strong&gt; is essential before going live.&lt;/li&gt;
&lt;li&gt;Investing in a &lt;strong&gt;managed WordPress plan&lt;/strong&gt; saves hours of setup and maintenance.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts 💭
&lt;/h2&gt;

&lt;p&gt;Building my first WordPress theme was both fun and educational.&lt;br&gt;
It gave me a deeper understanding of how themes interact with the WordPress core — and how powerful the platform truly is when combined with good hosting.&lt;/p&gt;

&lt;p&gt;If you’re a freelancer or designer looking to take control of your website builds, I’d recommend starting with a small theme project of your own.&lt;br&gt;
Having a reliable setup — like the &lt;strong&gt;WordPress Ultimate&lt;/strong&gt; plan from Webaon — makes the learning curve smoother and the process more rewarding.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Thanks for reading! Have you ever built a WordPress theme or customized one deeply?&lt;br&gt;
Share your experience or tips in the comments below — I’d love to see how others approach their first custom theme.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;`&lt;code&gt;&lt;/code&gt;&lt;/p&gt;




&lt;p&gt;✅ &lt;strong&gt;Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In-depth &lt;strong&gt;development section&lt;/strong&gt; with file structure, PHP, CSS, and testing.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Natural integration of Webaon&lt;/strong&gt; (not promotional — just part of workflow).
&lt;/li&gt;
&lt;li&gt;SEO-safe, educational, and &lt;strong&gt;perfect for Dev.to or your WordPress blog&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>webdev</category>
      <category>freelancing</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Animating a Spooky Pumpkin with Anime.js 🎃</title>
      <dc:creator>Sarah Varghese</dc:creator>
      <pubDate>Mon, 03 Nov 2025 15:07:00 +0000</pubDate>
      <link>https://dev.to/sarahvarghese/animating-a-spooky-pumpkin-with-animejs-4iio</link>
      <guid>https://dev.to/sarahvarghese/animating-a-spooky-pumpkin-with-animejs-4iio</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/frontend-2025-10-15"&gt;Frontend Challenge - Halloween Edition, CSS Art&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspiration
&lt;/h2&gt;

&lt;p&gt;Halloween is the perfect excuse to play with &lt;strong&gt;CSS and animation&lt;/strong&gt;. I wanted to create a fun, spooky &lt;strong&gt;pumpkin with flying bats animation&lt;/strong&gt; using &lt;strong&gt;Anime.js&lt;/strong&gt;. The goal was to explore combining &lt;strong&gt;CSS shapes, keyframe animations, and JS-driven motion&lt;/strong&gt; to make a visually appealing, interactive scene.  &lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Check out the live codepen demo here: &lt;a href="https://codepen.io/SarahVarghese/pen/ByjvrdJ" rel="noopener noreferrer"&gt;Halloween Pumpkin Animation&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;em&gt;(I have also Posted it on my website hosted on a VPS I got using a 50% discount coupon from &lt;a href="https://www.webaon.com/" rel="noopener noreferrer"&gt;Webaon&lt;/a&gt; — it was fast and easy to deploy, I happen to have extra coupons, including Webaon, &lt;a href="https://hostinger.in/" rel="noopener noreferrer"&gt;Hostinger&lt;/a&gt;, &lt;a href="https://aws.amazon.com/" rel="noopener noreferrer"&gt;Amazon AWS&lt;/a&gt; and &lt;a href="https://www.godaddy.com/" rel="noopener noreferrer"&gt;GoDaddy&lt;/a&gt;, if anyone wants one!.)&lt;/em&gt;  &lt;/p&gt;




&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;p&gt;I started by building the pumpkin and bats entirely in &lt;strong&gt;CSS&lt;/strong&gt;, using &lt;code&gt;border-radius&lt;/code&gt;, &lt;code&gt;clip-path&lt;/code&gt;, and gradients for depth. Then, I used &lt;strong&gt;Anime.js&lt;/strong&gt; to bring everything to life:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The pumpkin gently &lt;strong&gt;bounces&lt;/strong&gt; using a simple translateY animation.
&lt;/li&gt;
&lt;li&gt;Bats &lt;strong&gt;fly across the screen&lt;/strong&gt; repeatedly with random vertical offsets for a spooky effect.
&lt;/li&gt;
&lt;li&gt;The animation loops infinitely, making it feel lively and fun.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Challenges &amp;amp; Learnings:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Positioning and shaping bats with &lt;code&gt;clip-path&lt;/code&gt; took some trial and error.
&lt;/li&gt;
&lt;li&gt;Combining pure CSS with Anime.js made the motion smooth without heavy JS calculations.
&lt;/li&gt;
&lt;li&gt;Deploying on a VPS was straightforward — having a live URL made it easy to share with friends and clients.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Code Snippet (Anime.js)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Pumpkin bounce&lt;/span&gt;
&lt;span class="nf"&gt;anime&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;targets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.pumpkin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;800&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;800&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;easing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;easeInOutSine&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Bats flying&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;animateBat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;anime&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;targets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;translateX&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4000&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;anime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4000&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;easing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;linear&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;animateBat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.bat1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;animateBat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.bat2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;animateBat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.bat3&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;CSS + Anime.js can create complex, interactive animations with minimal code.&lt;/li&gt;
&lt;li&gt;Deploying projects on a VPS makes sharing demos professional and easy.&lt;/li&gt;
&lt;li&gt;Combining creative coding with practical deployment is a great way to build your portfolio.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>frontendchallenge</category>
      <category>devchallenge</category>
      <category>css</category>
    </item>
    <item>
      <title>Deploying a Node.js App on a VPS: A Practical Guide for 2025</title>
      <dc:creator>Sarah Varghese</dc:creator>
      <pubDate>Mon, 03 Nov 2025 13:09:46 +0000</pubDate>
      <link>https://dev.to/sarahvarghese/deploying-a-nodejs-app-on-a-vps-a-practical-guide-for-2025-9g1</link>
      <guid>https://dev.to/sarahvarghese/deploying-a-nodejs-app-on-a-vps-a-practical-guide-for-2025-9g1</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Node.js has become one of the most popular choices for building scalable, high-performance web applications. Its non-blocking, event-driven architecture makes it ideal for applications that handle multiple simultaneous connections, like chat apps, real-time dashboards, or APIs.&lt;/p&gt;

&lt;p&gt;When I picked up a freelancing project for a Dubai-based client, I needed a reliable environment to deploy their web app without worrying about downtime or slow loading. That’s when I decided to use a VPS, specifically a plan with 4 vCPU cores, 8 GB RAM, and 200 GB SSD storage — more than enough for a small to medium Node.js app. Plus, I had a 50% discount coupon on Webaon, which made the choice even easier and cost-effective.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use Node.js for Your Project
&lt;/h2&gt;

&lt;p&gt;High Performance: Handles concurrent requests efficiently.&lt;/p&gt;

&lt;p&gt;JavaScript Everywhere: Same language on the frontend and backend.&lt;/p&gt;

&lt;p&gt;Active Ecosystem: Tons of libraries, frameworks, and tutorials available.&lt;/p&gt;

&lt;p&gt;Lightweight &amp;amp; Fast: Ideal for microservices or serverless-like deployments.&lt;/p&gt;

&lt;p&gt;For small projects like mine, Node.js ensures that the app responds quickly even when multiple users are connected at once.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why VPS is a Better Choice
&lt;/h2&gt;

&lt;p&gt;While shared hosting is cheap and easy, it has limitations:&lt;/p&gt;

&lt;p&gt;Limited CPU/RAM — may slow down with more users&lt;/p&gt;

&lt;p&gt;No full control over server environment&lt;/p&gt;

&lt;p&gt;Restrictions on installing custom software&lt;/p&gt;

&lt;p&gt;A VPS solves these problems:&lt;/p&gt;

&lt;p&gt;Full root access to configure the server as needed&lt;/p&gt;

&lt;p&gt;Dedicated resources — your app doesn’t compete with others&lt;/p&gt;

&lt;p&gt;Better security and ability to handle traffic spikes&lt;/p&gt;

&lt;p&gt;For my freelancing client, this setup ensured fast response times, SSL support, and full control over deployment, without paying for an expensive dedicated server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Picking a VPS:
&lt;/h2&gt;

&lt;p&gt;Some popular VPS options:&lt;/p&gt;

&lt;p&gt;DigitalOcean – Beginner-friendly, widely used&lt;/p&gt;

&lt;p&gt;GoDaddy– Beginner-friendly, widely used&lt;/p&gt;

&lt;p&gt;AWS Lightsail – Preconfigured VPS instances&lt;/p&gt;

&lt;p&gt;Self-managed VPS – Complete control over server setup&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.webaon.com/" rel="noopener noreferrer"&gt;Webaon&lt;/a&gt; – I personally used Webaon for this project because i had discount coupon of it. With a 50% discount coupon, it was cost-effective and offered a smooth VPS setup suitable for my Node.js deployment.&lt;/p&gt;

&lt;p&gt;Example plan used: 4 vCPU | 8 GB RAM | 200 GB SSD | ₹2,999/month&lt;/p&gt;

&lt;p&gt;Preparing the VPS&lt;/p&gt;

&lt;p&gt;After provisioning the VPS, I set it up like this:&lt;/p&gt;

&lt;h1&gt;
  
  
  Update packages
&lt;/h1&gt;

&lt;p&gt;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;/p&gt;

&lt;h1&gt;
  
  
  Install Node.js and npm
&lt;/h1&gt;

&lt;p&gt;curl -fsSL &lt;a href="https://deb.nodesource.com/setup_20.x" rel="noopener noreferrer"&gt;https://deb.nodesource.com/setup_20.x&lt;/a&gt; | sudo -E bash -&lt;br&gt;
sudo apt install -y nodejs&lt;/p&gt;

&lt;h1&gt;
  
  
  Install PM2 for process management
&lt;/h1&gt;

&lt;p&gt;sudo npm install -g pm2&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips:
&lt;/h2&gt;

&lt;p&gt;Use SSH key authentication for security.&lt;/p&gt;

&lt;p&gt;Configure UFW firewall to allow only necessary ports: 22 (SSH), 80 (HTTP), 443 (HTTPS).&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploying the Node.js App
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Clone the repository:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/username/my-app.git" rel="noopener noreferrer"&gt;https://github.com/username/my-app.git&lt;/a&gt;&lt;br&gt;
cd my-app&lt;br&gt;
npm install&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start the app with PM2:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;pm2 start index.js --name my-app&lt;br&gt;
pm2 save&lt;br&gt;
pm2 startup&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configure Nginx as a reverse proxy:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;server {&lt;br&gt;
    listen 80;&lt;br&gt;
    server_name myapp.com;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;location / {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enable SSL using Certbot for HTTPS.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance and Monitoring
&lt;/h2&gt;

&lt;p&gt;Monitor CPU and RAM usage to handle traffic spikes.&lt;/p&gt;

&lt;p&gt;PM2 monitoring (pm2 monit) helps track running processes.&lt;/p&gt;

&lt;p&gt;SSD storage ensures faster read/write operations, reducing response time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other helpful tools:
&lt;/h2&gt;

&lt;p&gt;Docker – Containerize apps for easier deployment&lt;/p&gt;

&lt;p&gt;Prometheus / UptimeRobot – Monitor server uptime&lt;/p&gt;

&lt;p&gt;Nginx – Reverse proxy and load balancing&lt;/p&gt;

&lt;p&gt;Freelancing Tip: How VPS Helped Me Win a Client&lt;/p&gt;

&lt;p&gt;By using a VPS setup with Node.js, I could deliver a fully functional, high-performance web app for my Dubai-based client. The setup allowed me to:&lt;/p&gt;

&lt;h2&gt;
  
  
  Quickly deploy updates
&lt;/h2&gt;

&lt;p&gt;Handle moderate traffic without downtime&lt;/p&gt;

&lt;p&gt;Demonstrate professionalism and technical expertise&lt;/p&gt;

&lt;p&gt;Using Webaon with the discount made it even easier to set up a professional environment without breaking the budget, helping me deliver a quality solution as a freelancer.&lt;/p&gt;

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

&lt;p&gt;Using Node.js with a VPS is a powerful combination for small to medium projects. With full control over server resources, you can optimize performance, implement security best practices, and scale your app as needed.&lt;/p&gt;

&lt;p&gt;Services like Webaon make provisioning and managing VPS instances simple and reliable. Pair that with PM2, Nginx, and monitoring tools, and you have a production-ready environment suitable for freelance projects or personal apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ Key Takeaways:
&lt;/h2&gt;

&lt;p&gt;Node.js offers high performance, scalability, and a unified JavaScript environment.&lt;/p&gt;

&lt;p&gt;VPS provides dedicated resources, security, and flexibility over shared hosting.&lt;/p&gt;

&lt;p&gt;Using Webaon with a discount can make professional VPS deployment affordable.&lt;/p&gt;

&lt;p&gt;Freelancers can leverage VPS setups to deliver professional results and impress clients.&lt;/p&gt;

</description>
      <category>node</category>
      <category>vps</category>
      <category>automation</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
