<?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: alejandro mestizo</title>
    <description>The latest articles on DEV Community by alejandro mestizo (@alejandromestizo27).</description>
    <link>https://dev.to/alejandromestizo27</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%2F3394839%2F93bd70da-aea6-423c-869c-8fa6fae5ecce.jpg</url>
      <title>DEV Community: alejandro mestizo</title>
      <link>https://dev.to/alejandromestizo27</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alejandromestizo27"/>
    <language>en</language>
    <item>
      <title>Which programming languages are most useful for creating a vinyl fence sales app?</title>
      <dc:creator>alejandro mestizo</dc:creator>
      <pubDate>Mon, 04 Aug 2025 16:56:02 +0000</pubDate>
      <link>https://dev.to/alejandromestizo27/which-programming-languages-are-most-useful-for-creating-a-vinyl-fence-sales-app-3li9</link>
      <guid>https://dev.to/alejandromestizo27/which-programming-languages-are-most-useful-for-creating-a-vinyl-fence-sales-app-3li9</guid>
      <description>&lt;p&gt;Ever thought, “Hey, what if I just built a sales app for fences instead of waiting for leads?” Yeah, me too. Last spring I found myself drowning in spreadsheets and email threads while trying to sell fences—and that’s when it hit me. A simple vinyl fence app could save my sanity.&lt;/p&gt;

&lt;p&gt;And no, you don’t need to be a full-stack ninja to pull it off.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvodz6ju2p5x8r8f35z29.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%2Fvodz6ju2p5x8r8f35z29.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When I First Tried It...
&lt;/h2&gt;

&lt;p&gt;I once spent two weeks learning the wrong stack. Built the whole thing in PHP, only to scrap it after realizing I needed something more dynamic. Don’t be like me.&lt;/p&gt;

&lt;h2&gt;
  
  
  So... What Programming Languages Make Sense?
&lt;/h2&gt;

&lt;p&gt;Let’s keep it real and human-friendly. No fancy terms here. Just stuff that works:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. JavaScript (a.k.a. your frontend hero)
&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;fences&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;vinyl&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;wood&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;iron&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;fences&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;We sell: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll use it for everything the user sees. Buttons. Forms. Sliders. Think of JavaScript as your app’s face.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Python (for handling orders, logic &amp;amp; automation)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;calculate_quote&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;feet&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;price_per_foot&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;feet&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;price_per_foot&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Need to email customers when they request a quote? Python’s your buddy. Clean, powerful, and surprisingly chill to learn.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. SQL (yep, for the boring but necessary stuff)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;fence_type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'vinyl'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll need a database if you want to keep track of quotes, orders, and customer info. SQL helps you stay organized.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. HTML + CSS (because ugly apps don’t convert)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Find the perfect vinyl fence&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;button&amp;gt;&lt;/span&gt;Request a Quote&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;teal&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;They’re the bread and butter. Without clean design, users just bounce. We’ve all done it, right?&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Node.js (backend without losing your mind)
&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;express&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="s1"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/fences&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="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&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;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Fence list&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;p&gt;It lets you use JavaScript on the backend too, which means less context-switching.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Personal Anecdote
&lt;/h2&gt;

&lt;p&gt;I tried building a quote calculator once—forgot to handle decimals. Sent someone a $78000 quote for a $78 vinyl panel. They didn’t call back.&lt;/p&gt;

&lt;p&gt;That’s why good code matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tools I’d Recommend (Just From My Desk)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;React (great for component-based design)&lt;/li&gt;
&lt;li&gt;Firebase (if you hate managing servers)&lt;/li&gt;
&lt;li&gt;Postman (makes API testing less painful)&lt;/li&gt;
&lt;li&gt;GitHub Pages or Netlify for hosting&lt;/li&gt;
&lt;li&gt;Canva for mockups—yes, really&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Oh, And Don’t Forget Real-World Links
&lt;/h2&gt;

&lt;p&gt;You’ll wanna link your products to real services like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://osceolafence.net/andersonville-chicago-fence-company/" rel="noopener noreferrer"&gt;Automatic gates Andersonville&lt;/a&gt;&lt;/strong&gt; — great for upselling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://osceolafence.net/andersonville-chicago-fence-company/" rel="noopener noreferrer"&gt;Wood fence Andersonville&lt;/a&gt;&lt;/strong&gt; — classic backyard charm, right?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://osceolafence.net/andersonville-chicago-fence-company/" rel="noopener noreferrer"&gt;Vinyl fence  Andersonville&lt;/a&gt;&lt;/strong&gt; — sleek, low-maintenance, people love it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Benefits of Building It Yourself
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You’re in control of updates and tweaks.&lt;/li&gt;
&lt;li&gt;No more chasing web devs for minor edits.&lt;/li&gt;
&lt;li&gt;Learn skills that transfer to other gigs.&lt;/li&gt;
&lt;li&gt;You can experiment freely without fear.&lt;/li&gt;
&lt;li&gt;Feels &lt;em&gt;so&lt;/em&gt; good to say “I built that.”&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;This doesn’t have to be perfect. You’re not building the next Amazon here. Just something that works, that brings you leads, and maybe saves your weekends.&lt;/p&gt;

&lt;p&gt;Give it a shot this week—you’ll see!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Programming Your Own Oracle: Build a Basic Prediction Bot with Python</title>
      <dc:creator>alejandro mestizo</dc:creator>
      <pubDate>Fri, 01 Aug 2025 15:11:53 +0000</pubDate>
      <link>https://dev.to/alejandromestizo27/programming-your-own-oracle-build-a-basic-prediction-bot-with-python-284b</link>
      <guid>https://dev.to/alejandromestizo27/programming-your-own-oracle-build-a-basic-prediction-bot-with-python-284b</guid>
      <description>&lt;p&gt;Ever found yourself asking the universe a yes-or-no question and just hoping for a sign? Yeah, same. I’ve been there—staring at the ceiling wondering if I should take that weekend trip or just catch up on sleep. Then it hit me: why not make a mini oracle? You know, one that actually talks back.&lt;/p&gt;

&lt;p&gt;So I opened my laptop, brewed some coffee, and hacked together a little prediction bot in Python. And let me tell you—it’s weirder (and cooler) than I expected.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftdcqx2x11meulnebwp3v.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%2Ftdcqx2x11meulnebwp3v.png" alt="Lectura De Cartas en Decatur" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Flip a Coin When You Can Ask a Bot?
&lt;/h2&gt;

&lt;p&gt;I once used a pizza topping to make a life decision. Don’t ask. Let’s just say pepperoni doesn’t always offer great advice. Since then, I figured there’s gotta be a better way.&lt;/p&gt;

&lt;p&gt;A friend joked I was channeling &lt;strong&gt;&lt;a href="https://botanicaindioamazonico.com/amarres-de-amor-en-decatur/" rel="noopener noreferrer"&gt;Lectura De Cartas en Decatur&lt;/a&gt;&lt;/strong&gt; with how often I was consulting my bot. I didn’t even deny it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You’ll Need
&lt;/h2&gt;

&lt;p&gt;Let’s break it down like you would to a curious buddy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A list of quirky responses (make them yours)&lt;/li&gt;
&lt;li&gt;A splash of randomness (thank you &lt;code&gt;random.choice()&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;A sprinkle of drama (pauses, colors—make it mysterious)&lt;/li&gt;
&lt;li&gt;Optional: add the time of day for flavor&lt;/li&gt;
&lt;li&gt;And Python, of course&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How To Build It — Step by Step
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Create Your Response Pool
&lt;/h3&gt;



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

&lt;span class="n"&gt;responses&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Absolutely yes.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Definitely not.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Try again later.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Unclear... consult again at dusk.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Yes, but only on Tuesdays.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;No, unless you dream about it tonight.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Ask the User for a Question
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;question&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What do you want to know? &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Let me check the cosmic winds...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Pick a Random Response
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;answer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;responses&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;The Oracle says: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;answer&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Add Some Time-of-Day Magic
&lt;/h3&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;datetime&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;

&lt;span class="n"&gt;hour&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;hour&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;hour&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Morning answers tend to be more optimistic.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;hour&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Afternoon clarity is questionable.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Evening whispers hold secrets...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 5: Create a Pause for Dramatic Effect
&lt;/h3&gt;



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

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Consulting...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Still searching the ether...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 6: Add Some Color to the Output
&lt;/h3&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;termcolor&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;colored&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;colored&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;The Oracle says: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;answer&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cyan&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 7: Make It a Function
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_prediction&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;question&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ask your question: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;responses&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 8: Loop It Until They Quit
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;get_prediction&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ask again? (y/n) &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;y&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 9: Easter Egg for Love Questions
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;love&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;question&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Matters of the heart require patience and pie.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 10: Log the Questions
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;oracle_log.txt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;log&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="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Q: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;question&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; | A: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;answer&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Real Talk: Why This Is Fun
&lt;/h2&gt;

&lt;p&gt;First off, it’s hilarious. But also, you’re learning stuff like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Loops that actually &lt;em&gt;do&lt;/em&gt; something&lt;/li&gt;
&lt;li&gt;How to make Python feel less robotic&lt;/li&gt;
&lt;li&gt;Playing with libraries like &lt;code&gt;termcolor&lt;/code&gt; and &lt;code&gt;datetime&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Giving your code a soul (kinda)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Someone at a meetup once asked if I was dabbling in &lt;strong&gt;&lt;a href="https://botanicaindioamazonico.com/amarres-de-amor-en-decatur/" rel="noopener noreferrer"&gt;Santeria en Decatur&lt;/a&gt;&lt;/strong&gt; when they saw my terminal flash “The Oracle says: Yes.” I mean… I’m flattered?&lt;/p&gt;

&lt;p&gt;Then another person DM’d me like, “Hey, I know actual &lt;strong&gt;&lt;a href="https://botanicaindioamazonico.com/amarres-de-amor-en-decatur/" rel="noopener noreferrer"&gt;Brujos en Decatur&lt;/a&gt;&lt;/strong&gt; who’d dig this!” So clearly I’m in good company.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR: Try This Out Because…
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It’s surprisingly satisfying to use your own prediction tool&lt;/li&gt;
&lt;li&gt;You’ll learn Python basics in a non-boring way&lt;/li&gt;
&lt;li&gt;You get to be &lt;em&gt;that&lt;/em&gt; person with a terminal oracle at parties&lt;/li&gt;
&lt;li&gt;It’s just fun, okay?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It This Weekend
&lt;/h2&gt;

&lt;p&gt;Seriously. Copy the code, change the responses, maybe give it an attitude. You could even hook it up to a Discord bot or turn it into a web app.&lt;/p&gt;

&lt;p&gt;Just… don’t blame me if your friends start calling you “the tech wizard.” Or do. That sounds kinda cool.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>5 Amazing Data on Hidden Dirt on Your Floor</title>
      <dc:creator>alejandro mestizo</dc:creator>
      <pubDate>Wed, 30 Jul 2025 15:56:39 +0000</pubDate>
      <link>https://dev.to/alejandromestizo27/5-amazing-data-on-hidden-dirt-on-your-floor-21e4</link>
      <guid>https://dev.to/alejandromestizo27/5-amazing-data-on-hidden-dirt-on-your-floor-21e4</guid>
      <description>&lt;p&gt;Have you ever dropped something on your floor, picked it up, and thought, “Huh, looks clean enough”? Yeah… me too. Until I ran a little experiment using Python and some sensors. And let me tell you — the results were &lt;em&gt;gross&lt;/em&gt;. Like, you’d-think-your-floor-is-fine-but-nope kind of gross.&lt;/p&gt;

&lt;p&gt;So today, I wanna walk you through 5 unexpected data points I found about the dirt that hides in plain sight… under our feet. And yeah, I’ll share the exact code I used too.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcheb8iwr2qrsg65of2r9.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%2Fcheb8iwr2qrsg65of2r9.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;strong&gt;Your floor has more bacteria than a toilet seat. Seriously.&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I hooked up a basic particle sensor to scan my hardwood floor and kept track of particulate matter using a simple script.&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;import&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;
&lt;span class="n"&gt;dust_particles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;randint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Dust levels:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dust_particles&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And guess what? Readings were &lt;em&gt;consistently&lt;/em&gt; higher than what you’d expect from a public restroom. You’d think it’s paranoia, but nope.&lt;/p&gt;

&lt;p&gt;If you're wondering who can help deep clean that kind of stuff, you might wanna check out a legit &lt;strong&gt;&lt;a href="https://quickcleanchicago.com/cleaning-services-evanston/" rel="noopener noreferrer"&gt;Cleaning Service Evanston&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. &lt;strong&gt;Most visible dust is less than 10% of total filth.&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;No kidding. I ran an infrared scan comparing what my eyes saw versus the sensor data.&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="n"&gt;visible_dust&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;
&lt;span class="n"&gt;total_detected&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;145&lt;/span&gt;
&lt;span class="n"&gt;ratio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;visible_dust&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;total_detected&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Visible dirt ratio: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ratio&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So that "quick sweep"? Doesn’t even scratch the surface.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. &lt;strong&gt;You track bacteria into your office… every day.&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If you think home floors are dirty, wait till you sample your office rug. I had mine swabbed and processed by a lab. The numbers? Nightmare fuel.&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="n"&gt;tracked_bacteria&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Shoes&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;6000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Backpacks&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Pets&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8000&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Sources of tracked bacteria:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tracked_bacteria&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let a real &lt;strong&gt;&lt;a href="https://quickcleanchicago.com/cleaning-services-evanston/" rel="noopener noreferrer"&gt;Office Cleaning Service Evanston&lt;/a&gt;&lt;/strong&gt; handle that. Seriously.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. &lt;strong&gt;Air quality gets wrecked when you walk indoors.&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I noticed spikes in PM2.5 whenever I walked around after being outside. I built a simple real-time plot:&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;import&lt;/span&gt; &lt;span class="n"&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;plt&lt;/span&gt;

&lt;span class="n"&gt;pm25&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;45&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;95&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;130&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;85&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pm25&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;title&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PM2.5 While Walking Indoors&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wild how fast it climbs. Walking in with your shoes on? Big no-no.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. &lt;strong&gt;"Clean-looking" floors often hide mold spores.&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Don’t be fooled. I used a UV light and moisture sensor and was stunned by what I found in corners I never mop.&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="n"&gt;mold_risk&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;humidity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;temp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;humidity&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;temp&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;High risk of mold:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;mold_risk&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;65&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;26&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's when I realized: I can’t do it alone. That’s where a &lt;strong&gt;&lt;a href="https://quickcleanchicago.com/cleaning-services-evanston/" rel="noopener noreferrer"&gt;House Cleaning Service Evanston&lt;/a&gt;&lt;/strong&gt; can step in with the pro gear.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Recap: Why This Matters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Clean floors = fewer allergens, less sneezing, better sleep. Duh.&lt;/li&gt;
&lt;li&gt;Knowing your data helps you clean smart, not hard.&lt;/li&gt;
&lt;li&gt;Some dirt you &lt;em&gt;can’t&lt;/em&gt; see is the worst kind.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Just grab:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A particle or dust sensor (cheap on Amazon)&lt;/li&gt;
&lt;li&gt;Any humidity and temp sensor (DHT11 works)&lt;/li&gt;
&lt;li&gt;Python + matplotlib + some curiosity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's a mini script to log and display it all:&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;import&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;

&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;reading&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;randint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;400&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="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reading&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Reading &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;reading&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And if DIY’s not your thing? Totally cool. I’ve learned the hard way that some things are better left to the pros.&lt;/p&gt;

&lt;p&gt;Give it a try this weekend. Or, better yet — let someone else do it while you sip coffee.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Code a Wi-Fi Enabled Fence Alert System</title>
      <dc:creator>alejandro mestizo</dc:creator>
      <pubDate>Mon, 28 Jul 2025 22:03:14 +0000</pubDate>
      <link>https://dev.to/alejandromestizo27/how-to-code-a-wi-fi-enabled-fence-alert-system-17a2</link>
      <guid>https://dev.to/alejandromestizo27/how-to-code-a-wi-fi-enabled-fence-alert-system-17a2</guid>
      <description>&lt;p&gt;Security is evolving. From smart doorbells to intelligent lighting, homes are becoming more responsive. But what if your &lt;strong&gt;&lt;a href="https://chicagocommercialfencing.com/vinyl-fence-chicago-il/" rel="noopener noreferrer"&gt;Vinily Fence Chicago&lt;/a&gt;&lt;/strong&gt; could talk back—sending alerts when someone attempts to climb it or open a gate?&lt;/p&gt;

&lt;p&gt;In this guide, you'll learn how to build a basic &lt;strong&gt;Wi-Fi enabled fence alert system&lt;/strong&gt; using microcontrollers like the ESP32 and simple sensors. It's perfect for home automation enthusiasts, hobbyists, or even developers working on smart outdoor systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧰 What You’ll Need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ESP32 or ESP8266&lt;/strong&gt; (microcontroller with built-in Wi-Fi)
&lt;/li&gt;
&lt;li&gt;Magnetic contact sensors or motion sensors
&lt;/li&gt;
&lt;li&gt;Buzzer or LED (for local alerts)
&lt;/li&gt;
&lt;li&gt;Jumper wires and breadboard
&lt;/li&gt;
&lt;li&gt;Power supply (USB or battery)
&lt;/li&gt;
&lt;li&gt;Arduino IDE
&lt;/li&gt;
&lt;li&gt;Optional: Integration with a mobile app or platform like Blynk or IFTTT
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🧠 The Concept
&lt;/h2&gt;

&lt;p&gt;The fence alert system works by detecting physical activity (such as the opening of a gate or crossing a boundary). The sensor triggers an alert, and the ESP32 sends a Wi-Fi signal to your phone or smart hub.&lt;/p&gt;

&lt;p&gt;This setup is ideal for &lt;strong&gt;&lt;a href="https://chicagocommercialfencing.com/vinyl-fence-chicago-il/" rel="noopener noreferrer"&gt;Vinily Fence in Chicago&lt;/a&gt;&lt;/strong&gt; neighborhoods, where homeowners want non-invasive but effective perimeter alerts.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Step-by-Step Guide
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Install the Arduino IDE and Board Support
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Download the Arduino IDE.
&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;File &amp;gt; Preferences&lt;/strong&gt; and add this board URL:
&lt;code&gt;https://dl.espressif.com/dl/package_esp32_index.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Install the ESP32 board from &lt;strong&gt;Boards Manager&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 2: Connect the Sensor
&lt;/h3&gt;

&lt;p&gt;Use a magnetic sensor:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connect VCC to 3.3V
&lt;/li&gt;
&lt;li&gt;GND to GND
&lt;/li&gt;
&lt;li&gt;OUT to a digital pin (e.g., D2)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For motion sensors (PIR), the setup is similar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Write the Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;WiFi.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;ssid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"your_SSID"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"your_PASSWORD"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;sensorPin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;alertSent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;begin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;115200&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;pinMode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sensorPin&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;INPUT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;WiFi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;begin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ssid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;WiFi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;WL_CONNECTED&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"."&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"WiFi connected."&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;sensorState&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;digitalRead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sensorPin&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sensorState&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;HIGH&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;alertSent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;sendAlert&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="n"&gt;alertSent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="nf"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sensorState&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;LOW&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;alertSent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;false&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="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;sendAlert&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Fence breach detected!"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="c1"&gt;// Add HTTP request, Blynk event, or webhook integration here&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Add Notification Logic
&lt;/h3&gt;

&lt;p&gt;You can use services like Blynk, IFTTT, or your own backend. For example, send an HTTP request to a webhook when a breach occurs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Replace with your own webhook URL&lt;/span&gt;
&lt;span class="n"&gt;WiFiClient&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"yourwebhook.url"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"GET /alert-path HTTP/1.1"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Host: yourwebhook.url"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Connection: close"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 5: Test It
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Simulate a fence opening or movement.
&lt;/li&gt;
&lt;li&gt;Watch the serial monitor and/or check your phone notification.
&lt;/li&gt;
&lt;li&gt;Adjust delay or debounce logic if needed.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌐 Practical Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Gate access alerts
&lt;/li&gt;
&lt;li&gt;Perimeter breach detection
&lt;/li&gt;
&lt;li&gt;Smart home integration with Alexa/Google Assistant
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This system can be adapted for any type of fence, including &lt;strong&gt;&lt;a href="https://chicagocommercialfencing.com/vinyl-fence-chicago-il/" rel="noopener noreferrer"&gt;Vinily Fence Chicago il&lt;/a&gt;&lt;/strong&gt; installations, offering homeowners an additional layer of proactive security.&lt;/p&gt;

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

&lt;p&gt;Smart fencing is more than just automation—it’s about creating intelligent environments that respond to real-world events. Whether you're a developer exploring IoT or a homeowner wanting custom security, this DIY system is a great entry point.&lt;/p&gt;

&lt;p&gt;Ready to take it further? Add solar panels, camera triggers, or even integrate with machine learning models for behavior prediction.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>La magia de un buen script: pequeños comandos, grandes resultados</title>
      <dc:creator>alejandro mestizo</dc:creator>
      <pubDate>Mon, 28 Jul 2025 17:06:33 +0000</pubDate>
      <link>https://dev.to/alejandromestizo27/la-magia-de-un-buen-script-pequenos-comandos-grandes-resultados-j0d</link>
      <guid>https://dev.to/alejandromestizo27/la-magia-de-un-buen-script-pequenos-comandos-grandes-resultados-j0d</guid>
      <description>&lt;p&gt;Una vez escribí un script de 6 líneas que me ahorró... no te miento, &lt;strong&gt;dos semanas&lt;/strong&gt; de trabajo manual. Solo 6 líneas. Y fue en Bash.&lt;/p&gt;

&lt;p&gt;Lo gracioso es que me tomó más tiempo encontrar el archivo que necesitaba automatizar que escribir el bendito script. You’d think que a esta altura uno tendría sus cosas organizadas... pero bueno. Así arranca esta historia.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fujn80xi6dbvpxkwwlblc.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%2Fujn80xi6dbvpxkwwlblc.png" alt="Botanicadelamor" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué es un script? (como si lo explicaras en una birra)
&lt;/h2&gt;

&lt;p&gt;Imaginate que todos los días abrís tu compu, limpiás una carpeta, copiás unos archivos, los comprimís y los subís a Drive. Ahora... ¿y si en lugar de hacer eso a mano cada día, lo hacés una vez, lo guardás como un comando y listo?&lt;/p&gt;

&lt;p&gt;Eso, mi amigo/a, es un script.&lt;/p&gt;

&lt;p&gt;Y sí, hay magia en eso. Lo juro. Aunque no sea magia tipo &lt;strong&gt;&lt;a href="https://amarreamazonico.com/amarres-de-amor-en-aurora/" rel="noopener noreferrer"&gt;Amarres De Amor Andersonville&lt;/a&gt;&lt;/strong&gt; igual tiene su toque místico. Porque ver algo repetitivo convertirse en automático... wow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cinco cositas que me cambiaron la vida (digital)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;find&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;awk&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sed&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cron&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;y &lt;code&gt;bash functions&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Suena técnico, pero te explico sin rodeos:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;code&gt;find&lt;/code&gt;: como un sabueso digital
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s2"&gt;"*.log"&lt;/span&gt; &lt;span class="nt"&gt;-mtime&lt;/span&gt; +30 &lt;span class="nt"&gt;-delete&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este comando busca todos los &lt;code&gt;.log&lt;/code&gt; de más de 30 días... y los borra. Just like that. ¿Cuántas veces limpiaste tu carpeta de descargas a mano? Right?&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;code&gt;awk&lt;/code&gt;: el ninja del texto
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s1"&gt;','&lt;/span&gt; &lt;span class="s1"&gt;'{print $1, $3}'&lt;/span&gt; data.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sacás columnas específicas de un CSV. A mí me salvó cuando tenía que pasar datos a un proveedor que &lt;em&gt;solo&lt;/em&gt; quería nombres y teléfonos. Casi me vuelvo loco, hasta que encontré &lt;code&gt;awk&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. &lt;code&gt;sed&lt;/code&gt;: buscá y reemplazá, pero nivel hacker
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'s/localhost/production.server/g'&lt;/span&gt; config.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;¡Boom! Cambiás todos los “localhost” a “production.server” sin abrir el archivo. Parece brujería tipo &lt;strong&gt;&lt;a href="https://amarreamazonico.com/amarres-de-amor-en-aurora/" rel="noopener noreferrer"&gt;Hechizos de amor Andersonville&lt;/a&gt;&lt;/strong&gt; pero es solo &lt;code&gt;sed&lt;/code&gt; haciendo lo suyo.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;code&gt;cron&lt;/code&gt;: tu robot programado
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;0 8 &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; /home/usuario/scripts/respaldo.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este lo uso para hacer backups diarios automáticos. A las 8 am, sin que nadie le diga nada, corre el script. Es como tener un asistente puntual y callado. Un mini-milagro diario.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. &lt;code&gt;bash functions&lt;/code&gt;: nivel intermedio, pero worth it
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;function &lt;/span&gt;limpiar_temp&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  find /tmp &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'*.tmp'&lt;/span&gt; &lt;span class="nt"&gt;-delete&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Definís funciones que podés usar como comandos personalizados. Es decir, hacés tus propios hechizos. (No, no como en la &lt;strong&gt;&lt;a href="https://amarreamazonico.com/amarres-de-amor-en-aurora/" rel="noopener noreferrer"&gt;Lectura del tarot en Andersonville&lt;/a&gt;&lt;/strong&gt; pero ya sabés por dónde va la cosa.)&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Y por qué te conviene tener estos truquitos?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Te ahorrás horas de trabajo repetitivo (y de estrés mental).&lt;/li&gt;
&lt;li&gt;Impresionás a tu jefe o colegas con soluciones “mágicas”.&lt;/li&gt;
&lt;li&gt;Aprendés a automatizar y eso te hace más libre, literal.&lt;/li&gt;
&lt;li&gt;Tus procesos se vuelven menos propensos a errores humanos.&lt;/li&gt;
&lt;li&gt;Te sentís... poderoso. Sí, lo dije.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bonus: mi script favorito (el del principio)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="c"&gt;# Script para organizar archivos por tipo&lt;/span&gt;

&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; imagenes documentos otros

&lt;span class="k"&gt;for &lt;/span&gt;archivo &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  case&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$archivo&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt;
    &lt;span class="k"&gt;*&lt;/span&gt;.jpg|&lt;span class="k"&gt;*&lt;/span&gt;.png&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;mv&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$archivo&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; imagenes/ &lt;span class="p"&gt;;;&lt;/span&gt;
    &lt;span class="k"&gt;*&lt;/span&gt;.pdf|&lt;span class="k"&gt;*&lt;/span&gt;.docx&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;mv&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$archivo&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; documentos/ &lt;span class="p"&gt;;;&lt;/span&gt;
    &lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;mv&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$archivo&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; otros/ &lt;span class="p"&gt;;;&lt;/span&gt;
  &lt;span class="k"&gt;esac&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lo tenía corriendo todos los viernes por la tarde. Llegaba el fin de semana con el escritorio limpio. Es como barrer la casa sin mover un dedo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cierre informal (pero con cariño)
&lt;/h2&gt;

&lt;p&gt;Si nunca escribiste un script, este es tu empujoncito. No necesitás saber programar en serio. Solo tener un problema repetitivo y ganas de resolverlo una vez… y para siempre.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pruébalo esta semana, ¡ya verás!&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Y si no te sale a la primera… no pasa nada. Hasta los hechiceros practican antes de invocar bien.&lt;/p&gt;

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