<?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: James Priest</title>
    <description>The latest articles on DEV Community by James Priest (@bipbopsadrobot).</description>
    <link>https://dev.to/bipbopsadrobot</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%2F913825%2Fd71ece5a-b8ac-44fd-8a19-30bd8f31eb7b.png</url>
      <title>DEV Community: James Priest</title>
      <link>https://dev.to/bipbopsadrobot</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bipbopsadrobot"/>
    <language>en</language>
    <item>
      <title>Dialling Up Phone Number Creativity: The Systematic Eradication through the mobile Number Void</title>
      <dc:creator>James Priest</dc:creator>
      <pubDate>Thu, 24 Oct 2024 16:09:01 +0000</pubDate>
      <link>https://dev.to/bipbopsadrobot/dialling-up-phone-number-creativity-the-systematic-eradication-through-the-mobile-number-void-1820</link>
      <guid>https://dev.to/bipbopsadrobot/dialling-up-phone-number-creativity-the-systematic-eradication-through-the-mobile-number-void-1820</guid>
      <description>&lt;p&gt;You know that sinking feeling when you realize your phone number is as bland as your will to live? That's the phone number void, my friends, and buckle up, In just eight brief paragraphs, you will partake in a journey. were we are both going to learn a thing i myself only learned a mere two hours ago. hanks to the divine intervention of our caffeine deity, Caffeina. I embarked on the Phone Number finder project, not just to pick numbers, but to sift and craft some semblance of digital identity.&lt;/p&gt;

&lt;p&gt;In a world where everyone's vying for attention, why should your phone number be any different? It's not just a means to call; it's a attributable item . When was the last time you remembered a phone number that wasn't as catchy as a finding madeleine mccann? so I dove  into making phone numbers not just useful, but under valued. &lt;/p&gt;

&lt;p&gt;My Approach was&lt;br&gt;
There are some mobile service provider allow customer to pick their own phone number. Let's make a crawler and fetch all the cool phone numbers avaible for purchase!&lt;/p&gt;

&lt;p&gt;Data Collection: Amaysim allow customer to pick a phone number online. It will be very easy to fetch all the phone numbers from the API. I use Fiddler to repeatly call the API without worrying about the header/payload of the http request. Then I save all the response into a text file, wash it with python scripts in addition i went hunting down number repos and other blogs. &lt;/p&gt;

&lt;p&gt;next, Pattern Recognition. identifying and prioritizing patterns in phone numbers, leveraging statistical likelihood, Phonetics, mnemonics, and phonetic appeal. I also wanted to remove certain patterns, including:&lt;br&gt;
    'Triple digits' pattern – Removed because it wasn’t desirable.&lt;br&gt;
    'ABAB' pattern – Dismissed as being too simple for your analysis.&lt;br&gt;
I worked on a Python script fitinglu named Bayesian.py to analyze these phone numbers using Bayesian statistics. The goal was to find desirable patterns and prioritize them based on their appeal, making the search results more meaningful beyond just matching standard numeric sequences.&lt;/p&gt;

&lt;p&gt;other ideas:&lt;br&gt;
Fibonacci: Imagine your number being as naturally beautiful as the Fibonacci sequence. 1-1-2-3-5-8? It's like wearing the universe on your sleeve!&lt;br&gt;
EKG/ECG: Numbers with a heartbeat? Now that's living!&lt;br&gt;
Catalan Numbers&lt;br&gt;
Phonetic Desirables: Let's make numbers sing across languages. 04- word-word&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Part 2 in the Essential to Surviving in the Wild World of Software Development cont.</title>
      <dc:creator>James Priest</dc:creator>
      <pubDate>Tue, 20 Dec 2022 07:22:33 +0000</pubDate>
      <link>https://dev.to/bipbopsadrobot/part-2-in-the-essential-to-surviving-in-the-wild-world-of-software-development-cont-10i</link>
      <guid>https://dev.to/bipbopsadrobot/part-2-in-the-essential-to-surviving-in-the-wild-world-of-software-development-cont-10i</guid>
      <description>&lt;p&gt;&lt;strong&gt;Step 7: Cookie Consent and Other Ways to Obstruct the Web Pages&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Everyone loves features and cookies, right? Well, not according to the EU. Make sure to add as many cookie consent notifications as possible to your website to ensure that your users can't actually use it. &lt;br&gt;
&lt;em&gt;Bonus points if you can find a way to block the back button or break the website on certain devices.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8: Deadline Driven Development, Can We Get This Done Tomorrow? "I Believe in You."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Who needs realistic timelines and proper planning when we have well wishing and kind words? much like the plants I have serial murder, was it my obscene lack of water and maintenance or did they not have what it takes to survive in this fast-paced environment. Thats right just set ridiculous deadlines and expect your team to magically meet them, aim for the moon If you miss, you may hit a star. And when they inevitably fail, just tell them "I believe in you"  put it down to the architecture and move on to the next deadline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9: Developing in Production, Last in First out&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why bother with a staging environment? Just push your code straight to production and hope for best. be sure to break the important stuff on Friday &lt;em&gt;when the clock hits five, that's your problem now.&lt;/em&gt; or maybe there's a API for that see also Coping with a SAAS Addiction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 10: Breaking Important Stuff on Friday, Just Let the Intern Fix It&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's Friday, the end of the week and time to kick back and relax. But before you do, why not break something important and let the intern deal with it? After all, they're the lowest on the totem pole and it will give them not only valuable experience but an opportunity to show just how much discretionary time they have been hiding. And if they can't fix it, well, there's always Monday to deal with it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 11: Fundamentals of Establishing a Scapegoat&lt;/strong&gt;&lt;br&gt;
Things are falling apart and you have no idea how to fix them. Don't worry, just find someone to blame and all your problems will magically disappear. It could be a junior developer, a contractor, or even a vendor - anyone will do as long as they're not you.&lt;/p&gt;

&lt;p&gt;So there you have it, the essential guide to surviving in the wild world of software development. Just follow these steps and you'll be a pro in no time! Or at least, you'll be able to pretend like you are. Good luck!"&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Essential to Surviving in the Wild World of Software Development: A Beginner's Guide</title>
      <dc:creator>James Priest</dc:creator>
      <pubDate>Tue, 20 Dec 2022 07:03:07 +0000</pubDate>
      <link>https://dev.to/bipbopsadrobot/the-essential-to-surviving-in-the-wild-world-of-software-development-a-beginners-guide-20nk</link>
      <guid>https://dev.to/bipbopsadrobot/the-essential-to-surviving-in-the-wild-world-of-software-development-a-beginners-guide-20nk</guid>
      <description>&lt;p&gt;Are you tired of using solutions that just break everything else? Do you love that "clever hack" in other people's code so much that you just want to cry? Well, you're in good company! Welcome to the world of software development, where everything is broken and no one knows how to fix it.&lt;/p&gt;

&lt;p&gt;Step 1: Ensuring the Futility of Your Interview Process. Essential.&lt;/p&gt;

&lt;p&gt;As a job seeker, you may find yourself wondering why your interviews seem to be going nowhere. Well, the answer is simple: the company you're applying to is not actually trying to find the same intuitive but boring answers from every candidate. Instead, they'll want to see you how you solve the question with diversity and resource, try applying s solve with the ol' Fizz Buzz test, then blame the architecture for any problems you may encounter. if all else fails blame the lack of unicorns in the office for any problems you encounter.  That's right, it's not your fault that you can't adapt Fizz Buzz - it's the absence of magical creatures in your immediate surroundings. this is key when laying the fundamentals of establishing a scapegoat. Welcome to the world of software development, where everything is ridiculous and nothing makes sense!&lt;/p&gt;

&lt;p&gt;Step 2: Googling the Error Message&lt;/p&gt;

&lt;p&gt;When you encounter an error in your code, the first thing you should do is google the error message. This will inevitably lead you to Stack Overflow, where you can copy and paste a solution from some anonymous user with 10,000 reputation points. Just don't bother trying to understand how it actually works in context - that's not important.&lt;/p&gt;

&lt;p&gt;Step 3: Cleaning Up Crappy Code, Every New Hire's Nightmare&lt;/p&gt;

&lt;p&gt;Congratulations, you've just inherited a codebase that looks like it was written by a group of monkeys with keyboards. Don't worry, this is a common occurrence in software development. Just grit your teeth and get ready for a long and painful process of cleaning up all the crap. And don't even think about blaming the previous developer - they're probably long gone and have no idea how much of a mess they left behind.&lt;/p&gt;

&lt;p&gt;Step 4: What the F*ck is Security, How to Ignore It and Deliver Your Project&lt;/p&gt;

&lt;p&gt;Security is that annoying thing that everyone keeps talking about but no one actually understands. Just pretend it doesn't exist and focus on delivering your project on time. It's not like anyone is going to hack into your system and steal all your users' personal data or anything. Right?&lt;/p&gt;

&lt;p&gt;Step 5: Operations, How the F*ck Did This Ever Work&lt;/p&gt;

&lt;p&gt;Congratulations, you've just deployed your code to production and it's a complete disaster. But don't worry, this is just par for the course in software development. Just throw a bunch of random fixes at the problem and hope for the best. And if that doesn't work, there's always the option of blaming it on someone more junior or just pretending like everything is fine.&lt;/p&gt;

&lt;p&gt;Step 6: Endless Boilerplate, Hello Ridiculously Complicated World&lt;/p&gt;

&lt;p&gt;Welcome to the world of software development, where everything is overly complicated and requires endless amounts of boilerplate code. Just accept it and get used to it. After all, if it was easy, everyone would be doing it.&lt;/p&gt;

&lt;p&gt;I hope this helps inspire you in your journey! If you have any further questions or need more help, check back in soon for part 2.&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>The Rainbow of Crypto Schemes: Embracing the many Flavours, Beyond the Basic Ponzi Scheme</title>
      <dc:creator>James Priest</dc:creator>
      <pubDate>Tue, 20 Dec 2022 04:51:33 +0000</pubDate>
      <link>https://dev.to/bipbopsadrobot/the-rainbow-of-crypto-schemes-embracing-the-many-flavours-beyond-the-basic-ponzi-scheme-k8d</link>
      <guid>https://dev.to/bipbopsadrobot/the-rainbow-of-crypto-schemes-embracing-the-many-flavours-beyond-the-basic-ponzi-scheme-k8d</guid>
      <description>&lt;p&gt;As crypto enthusiasts, we've all heard it before: "Oh, it's just another Ponzi scheme." It's time to stop the crypto scheme discrimination! For far too long, people have been quick to label every single crypto project as a Ponzi scheme. But the truth is, the crypto world is a veritable rainbow of schemes, each with its own unique flavor and characteristics. &lt;/p&gt;

&lt;p&gt;Sure, there are the classic Ponzi schemes that promise sky-high returns on your investment, only to eventually collapse and leave investors holding the bag. But let's not forget the pump and dump schemes, where a group of insiders artificially inflate the price of a coin through coordinated buying, before selling off their own holdings and leaving the new investors holding a rapidly depreciating asset.&lt;/p&gt;

&lt;p&gt;And let's not forget the pyramid schemes, where new investors are recruited to join and are promised returns based on the investments of those below them in the pyramid. These schemes can be particularly insidious, as they often rely on social networks and leveraging trusted relationships to lend in credibility. All well everyone further down the pyramid gets left wrangling scraps.&lt;/p&gt;

&lt;p&gt;But it's not just the flashy, attention-grabbing schemes that are worth talking about. There are also the more mundane, yet no less nefarious, middlemen who simply skim off the top of every transaction, quietly lining their own pockets while providing little value to the ecosystem.&lt;/p&gt;

&lt;p&gt;So the next time someone dismisses a crypto project as just another Ponzi scheme, remember that there's a whole world of scams out there, each one more creative and resourceful than the last. It's time to stop glossing over the diversity in the industry and start acknowledging the many flavors of crypto scams that are out there.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Desktop Bartender</title>
      <dc:creator>James Priest</dc:creator>
      <pubDate>Thu, 03 Nov 2022 06:47:56 +0000</pubDate>
      <link>https://dev.to/bipbopsadrobot/desktop-bartender-gl4</link>
      <guid>https://dev.to/bipbopsadrobot/desktop-bartender-gl4</guid>
      <description>&lt;p&gt;A compact, easy to use desktop robot bartender that is a missed opportunity by modern societies, misses like this are key in the effective response to radiacl transformation of the economy. Take a mini bar as an example, why not have a compact, easy to use desktop robot bartender to assist with drink preparations?&lt;/p&gt;

&lt;p&gt;The embodiment of the Industrial Era which define who we are ad where we are today. This little robot automatically pours, collects bottle caps in an internal bank, and recycles used bottles via a bin, off to the side. &lt;br&gt;
Great for offices, kitchens, basements, family events anywhere where you might need a drink to unwind.&lt;/p&gt;

&lt;p&gt;The desktop robot measuring just 30cm high and 49cm long is an interactive engaging way that never fails to make you and your guests smile. &lt;/p&gt;

&lt;h2&gt;
  
  
  Compatible with Different 50ml Mini Bottle Sizes
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w_DltD6u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/16whlrsmo9tprtcdg6db.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w_DltD6u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/16whlrsmo9tprtcdg6db.png" alt="Image description" width="544" height="306"&gt;&lt;/a&gt;&lt;br&gt;
*&lt;em&gt;Adjustable bottle slide height allows for use with a wide variety of mini bottle flavours&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Note: only works with cylindrical mini bottle bases. Square bases like fireball or jägermeister require custom modification. Message me for details. &lt;/p&gt;

&lt;p&gt;A global pandemic amagst lockdowns will drive someone to explore there options, while most bars were closed I was inspired to attempt to create an interactive and engaging mechatronic experience of being served.&lt;/p&gt;

&lt;p&gt;Motion is a key part in "coming alive" and an important part of communication and establishing intuition with human-machine interactions. I  wanted to focus on these in the device that would touched on these  principles and help inspire others to build more interactive products.&lt;/p&gt;

&lt;p&gt;Originally I wanted to built a robot that would serve coffee, a non-desdcript drink, so I designed the mechanism around a mini bottle size to create a foundation.&lt;/p&gt;

&lt;p&gt;One of the toughest parts of the designs was finding the right way to grip the cap in order to open (twist) without crushing, slipping or spillage while turning. This especially was challenging when dealing with mini bottle caps of more fragile materials like plastic or aluminum, and all of slightly different sizes, diameters ETC. I knew I had to go either one of two routes, either an all foam or a soft, low pressure rubber grip, or a high pressure piercing (metal) claw. The latter primarily caused less issues, many times the caps would get stuck and thus would have introduced the need of an additional servo to free the caps and let them roll into the cap bank.  Also for longevity concern as there's no soft foams/rubber wear.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing
&lt;/h2&gt;

&lt;p&gt;The coefficient of friction as the bottle slide along surfaces &amp;amp; the bottle bottoms is important, and should be as low as possible. This along with the correct bottle bank angle allows the bottles to slide down, also not so much as to tip over and all without the need for another servo to feed them along.&lt;br&gt;
In the end a few design iterations enede in a reliable way to consistently open bottles and handle them, from bottle slide  to dropping them off the side into disposal. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xabONfZz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s17qgyogmnsvjzbl4l9t%250A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xabONfZz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s17qgyogmnsvjzbl4l9t%250A.png" alt="Image description" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jIdbcrPm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jnbloo18mxaosno7n1nr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jIdbcrPm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jnbloo18mxaosno7n1nr.png" alt="Image description" width="880" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>desktop</category>
      <category>hardware</category>
      <category>arduino</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Plant Water Management System w/ BME280</title>
      <dc:creator>James Priest</dc:creator>
      <pubDate>Sun, 30 Oct 2022 10:23:24 +0000</pubDate>
      <link>https://dev.to/bipbopsadrobot/plant-water-management-system-w-bme280-3j1h</link>
      <guid>https://dev.to/bipbopsadrobot/plant-water-management-system-w-bme280-3j1h</guid>
      <description>&lt;p&gt;Track the total volume of water spent and evaluate approx. evaporation rates by temperature, humidity, and pressure to prevent water overuse and Root rot.&lt;/p&gt;

&lt;p&gt;This project intended to design a small-scale, smart irrigation system through an Arduino. A major consideration was soughing to have the fully automated system powered through an external power source &amp;amp; a focus on a minuscule yet cumulative problem causing water overuse.&lt;br&gt;
The focus was on the concept of automation, operation and monitoring through a programmed operating environment that evaluates the approximate evaporation rates by using temperature, humidity, barometric pressure, and lets the user observe soil moisture and altitude.&lt;/p&gt;

&lt;p&gt;To obtain temperature, humidity, barometric pressure, and approximate altitude, I used an Adafruit BME280 I2C or SPI Temperature Humidity Pressure Sensor. Below, you can inspect the formulas I implemented to calculate the approximate evaporation rates by temperature and humidity.&lt;br&gt;
To detect the water flow rate and the total water spent, I used a YF-S201 Hall Effect Water Flow Sensor. And, to observe the soil moisture, I used a Soil Moisture Sensor.&lt;/p&gt;

&lt;p&gt;Although it only caters towards a limited number of plants, there is room for expansion and future experimentation, to answer the question of how to decrease manual watering/labor. ** not entirely my work, references are linked.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using the Adafruit BME280 Temperature Humidity Pressure Sensor with Arduino
&lt;/h2&gt;

&lt;p&gt;It's easy to use the Adafruit BME280 sensor with Arduino in its two different modes - I2C and SPI. However, in this project, I used the I2C connections, so the PCB (Plant Water Management System) does not include the switch-back option between I2C and SPI.&lt;/p&gt;

&lt;p&gt;To begin reading sensor data, you will need to install the Adafruit_BME280 library &lt;a href="https://github.com/adafruit/Adafruit_BME280_Library"&gt;(code on Adafruit github repository).&lt;/a&gt; Available from the Arduino library manager.&lt;/p&gt;

&lt;p&gt;From the Arduino IDE, open up the library manager.&lt;br&gt;
And type " adafruit bme280" to locate the library, then click Install.&lt;br&gt;
Also, add the Adafruit Unified Sensor library.&lt;br&gt;
Open up File-&amp;gt;Examples-&amp;gt;Adafruit_BME280-&amp;gt;bmp280test to test the sensor's features.&lt;/p&gt;

&lt;h2&gt;
  
  
  Calculating the discharged volume of water w/ YF-S201 Hall Effect Water Flow Sensor
&lt;/h2&gt;

&lt;p&gt;YF-S201 Hall Effect Water Flow Sensor has an embedded hall effect sensor, and it produces pulses each turn with flow. The signal generated by the sensor is a square wave, so we can easily convert the pulse to the flow rate with:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pulse frequency (Hz) / 7.5 = flow rate (L/min)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This formula is derived from the equation below and needs calibration when executing. In my case, I did not encounter more than a discrepancy of 0.15 L.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q (flow rate) = V (velocity) x A (area)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To pull the discharged volume by seconds, we need to divide the flow rate by 60.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;water_spent = flow rate (L/min) / 60&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then, collecting the water_spent variable recursively, we can reach the total volume of water spent:&lt;/p&gt;

&lt;p&gt;total_water_spent += water_spent&lt;/p&gt;

&lt;p&gt;Below, you can inspect how I code these formulas in Arduino.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evaluating approximate evaporation rates by temperature, humidity, and pressure
&lt;/h2&gt;

&lt;p&gt;Of course given my attention to detail the generated variables  I used are neither one hundred percent accurate nor the results of my distinct lack of math phd &amp;amp; complex mathematics  for the dynamics of water evaporation but indicators for empirical evaporation rates.&lt;/p&gt;

&lt;p&gt;I used variables from the Adafruit BME280 Temperature Humidity Pressure Sensor to obtain - evaporation rates - with the following formulas.&lt;/p&gt;

&lt;p&gt;By Temperature w/ Humidity and Pressure&lt;/p&gt;

&lt;p&gt;First, I used the ideal gas law to detect the number, per cubic meter - n / V - since we can get pressure and temperature variables for the air.&lt;/p&gt;

&lt;p&gt;**PV = nRT&lt;/p&gt;

&lt;p&gt;n / V = P / RT**&lt;/p&gt;

&lt;p&gt;P =&amp;gt; pressure (Pa)&lt;/p&gt;

&lt;p&gt;T =&amp;gt; temperature (K)&lt;/p&gt;

&lt;p&gt;R =&amp;gt; the ideal gas constant&lt;/p&gt;

&lt;p&gt;With this, we can calculate the density of water vapor by using the molecular mass of water (18.015 g/mol).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;vapor density = (n / V) x 18.015&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then, we can evaluate the saturation of the air by using the percent relative humidity and the density of water vapor we just calculated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;percent relative humidity = (vapor density / saturation vapor density) x 100&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;saturation vapor density = (vapor density / percent relative humidity) x 100&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lastly, we need to subtract the density of water vapor from the saturation of the air to find the approximate evaporation rate - g/m3.&lt;/p&gt;

&lt;p&gt;The ol' "approximate" &lt;strong&gt;evaporation rate = saturation - density&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next to convert the evaporation rate from g/m3 to kg/m3:&lt;/p&gt;

&lt;p&gt;"approximate" &lt;strong&gt;evaporation rate = (saturation - density) / 1000&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Evaporation of water from a surface depends on water temperature, air temperature, air humidity, and air velocity above the water surface. I used the following formula to calculate the amount of evaporated water "approximately" by humidity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;gh = Θ A (xs - x)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;gh =&amp;gt; amount of evaporated water per hour (kg/h)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Θ =&amp;gt; (25 + 19v) =&amp;gt; evaporation coefficient (kg/m2h)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;v =&amp;gt; velocity of air above the water surface (m/s)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A =&amp;gt; surface area (m2)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;xs =&amp;gt; maximum humidity ratio of saturated air by temperature (kg/kg)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;x =&amp;gt; approximate humidity ratio air (kg/kg)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Since we need to find answers to empirical questions, I used the average variables for sensor readings where any given houseplant is. So, these will change these depending on your readings. I cant help but note my readings were not empirically accurate, i thought given the lack of empirical evinidens for empirical evidence, that i would be safe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;v = 0.30&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A = 0.25 x 0.25 (surface area of my one given pot)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;xs = 0.019826 (for 25 °C)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Getting the humidity ratio air (kg/kg) from the percent relative humidity "approximately", multiply the volume (near to the percent relative humidity) by the ratio of the weights of (water and air) - 0.62198.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;humidity ratio air (x) = (percent relative humidity / 100) x 0.62198&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Programming Arduino Nano
&lt;/h2&gt;

&lt;p&gt;Required libraries to be able to control the modules:&lt;/p&gt;

&lt;p&gt;Nokia 5110 Screen | &lt;a href="https://www.rinkydinkelectronics.com/library.php?id=44"&gt;Library&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Adafruit BME280 | &lt;a href="https://github.com/adafruit/Adafruit_BME280_Library"&gt;Library&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Include the required libraries.Define the Nokia 5110 screen settings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Define the graphics for related screen modes - tem, hum, and usage.&lt;br&gt;
To create different graphics (monochrome images), go to &lt;a href="http://www.rinkydinkelectronics.com/t_imageconverter_mono.php"&gt;Monochrome Image Converter&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Define the Adafruit BME280 Temperature Humidity Pressure Sensor settings - I2C.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Define menu options and modes using volatile booleans - A. Tem. Eva., B. Hum. Eva., C. Moisture, and D. Usage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Define the control buttons and LED pins.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Define the YF-S201 Hall Effect Water Flow Sensor settings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Initiate the Nokia 5110 Screen and the Adafruit BME280 Temperature Humidity Pressure Sensor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the read_buttons() function, read the control buttons.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the change_menu_options() function, increase or decrease the option number using the Right and Left buttons.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the interface() function, print the interface (menu).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If the Tem. Eva. mode is selected, obtain the current temperature, and evaluate the approximate evaporation rate by temperature.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the calculate_approx_evaporation("tem") function, calculate the approximate evaporation rate by using temperature, humidity, and pressure variables generated by the Adafruit BME280 sensor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Define the threshold (1.50) to activate control LEDs - Green and Red.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If the Hum. Eva. mode is selected, obtain the current humidity, and evaluate the approximate evaporation rate by humidity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the calculate_approx_evaporation("hum") function, calculate the approximate evaporation rate by using the humidity variable generated by the Adafruit BME280 sensor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the calculate_approx_evaporation("hum") function, calculate the approximate evaporation rate by using the humidity variable generated by the Adafruit BME280 sensor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Define the threshold (1.30) to activate control LEDs - Green and Red.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If the Moisture mode is selected, print the variables - moisture (%), barometric pressure (hPa), and approximate altitude (m) - generated by the soil moisture sensor and the Adafruit BME280 sensor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Define the threshold (35) to activate control LEDs - Green and Red.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If the Usage mode is selected, print the flow rate by seconds (water_spent) and the total water usage (total_water_spent).&lt;br&gt;
In the read_water_flow_sensor() function, calculate the flow rate by detecting the pulse time with the pulseIn() function to extrapolate the frequency by dividing 1000000 (1 second into microseconds) with the pulse time. Then, by using the flow rate, calculate the total volume of water spent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Define the threshold (100.0) to activate control LEDs - Green and Red.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>automation</category>
      <category>sustainability</category>
      <category>bme280</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Good marketers are the roots of cloud computing solution</title>
      <dc:creator>James Priest</dc:creator>
      <pubDate>Mon, 24 Oct 2022 05:15:31 +0000</pubDate>
      <link>https://dev.to/bipbopsadrobot/good-marketers-are-the-roots-of-cloud-computing-solution-25i3</link>
      <guid>https://dev.to/bipbopsadrobot/good-marketers-are-the-roots-of-cloud-computing-solution-25i3</guid>
      <description>&lt;p&gt;Hey everyone! My name is James Priest and I'm a digital and traditional marketer based in the Melbourne CBD area.I'm currently transitioning into the IT &amp;amp; serverless cloud industry and away from the proverbial trenches of driving engagement. Two totally different worlds with what I originally thought would have not much carryover, am I right? Wrong. Well, buckle up as I take you through my recent escapades and show you just how these two worlds collide in the most unexpected ways.&lt;/p&gt;

&lt;p&gt;Since Cloud Computing continues to be a relatively new area, and is evolving rapidly, trying to find a tutorial that gives you everything you will want is a little daunting. &lt;br&gt;
To simplify it a bit, I broke it down into three distinct components: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS), this was traditionally how markting was being carved out.  &lt;/p&gt;

&lt;p&gt;As a marketer, I used to think that questions as simple as "How can I make a splash on a website?" were not worth discussing. After all, it's just text centered on a web page, right? My first reaction would be thinking “that is so simple, why are we having a discussion about this?” I realised that there was an implied understanding between the team of what the "right solution" or ideal system or organisation might look like and that most solutions generally focused on functional goals rather than a decision’s primary purpose.&lt;/p&gt;

&lt;p&gt;But let me tell you about a recent marketing gig that opened my eyes. I was assigned to a small startup with some colleagues to tackle a common problem: lack of traction and market penetration, not uncommon for startups of this type in the industry. Upon investigation, we saw nothing objectively wrong and so we began the search, only to turn up empty-handed after talking with several teams. Analysing online reviews and conducting surveys, we identified the sources of the stagnation.&lt;/p&gt;

&lt;p&gt;A few days went by, we conduct deeper analysis and find that the digital advertising campaign is contributing to negative reviews &amp;amp; lost capital, while the business has a strong online presence but isn't running any conversion based campaigns leading to a bottomless funnel. we got an idea on Monday by early lunchtime we recommended a two-pronged approach: work with the business to address the image issue directly and launch a targeted digital advertising campaign. The team and management agrees, and this helped implement the change and it brought about a significant reboot. As a result, online reviews improved, and customers started flowing in, fueling the growth we had anticipated. Needless to say, the problem was resolved, and life moved on. But what does this have to do with the wonderful world of tech?&lt;/p&gt;

&lt;p&gt;One evening, after work, I received a link to a project created by a gentleman named Forrest Brazeal. He threw down the gauntlet and presented me with "The Cloud Resume Project."&lt;/p&gt;

&lt;p&gt;Intrigued by Forrest's instructions, I decided to give it a shot. I had never dabbled in any cloud-related services before, so it was a thrilling adventure. Fortunately, I was already familiar with Amazon Web Services, thanks to a friend's recommendation, and had recently earned my CCP (Certified Cloud Practitioner) certification.&lt;/p&gt;

&lt;p&gt;The Objectives:&lt;/p&gt;

&lt;p&gt;Obtain the AWS Cloud Practitioner certification as a prerequisite.&lt;br&gt;
Craft a resume using HTML, style it with CSS, and host it on an S3 bucket.&lt;br&gt;
Secure a custom domain name via Route53 and ensure HTTPS using Cloudfront.&lt;br&gt;
Incorporate a visitor counter written in JavaScript, backed by a database to track the count.&lt;br&gt;
Develop a Python-based Lambda function as the backend for the database.&lt;br&gt;
Implement an API to mediate interactions between microservices.&lt;br&gt;
Write tests for the Lambda function to safeguard against potential future hiccups.&lt;br&gt;
Build and deploy the backend section of the project using an AWS SAM template and the AWS SAM CLI.&lt;br&gt;
Set up CI/CD through Github to facilitate future changes.&lt;br&gt;
And lastly, write a blog post detailing our journey throughout the project, including my final reflections on what initially seemed like a "pretty simple" endeavor.&lt;/p&gt;

&lt;p&gt;My Tribulation...I mean Journey!&lt;br&gt;
First things first, I had to tackle the resume. I opted to write it in HTML right from the start, killing two birds with one stone. Once done, I dumped everything into an S3 bucket specifically configured for static website hosting. So far, so good. I was feeling pretty confident about my progress. Next up were Route 53 and Cloudfront, where I hit my first roadblock. Certificates and troubleshooting my record tables became a few hours' worth of challenges. But eventually, my site went and was officially live!&lt;/p&gt;

&lt;p&gt;At this point, I was feeling great about the project so far, and unbeknownst to me began to fall in love with the Cloud. The practicality and potential implementations made my head spin! Unfortunately, duty called and COVID-19 had me tied up for quite a few weeks working in hospitals and clinics but this would not deter me from Forrest's challenge.&lt;/p&gt;

&lt;p&gt;Once I got settled back in, I began work on DynamoDB and my Lambda functions. This part of the challenge took me quite a while, as I had no idea how to write code for services I had never used. After a few days, I had a working function, a working test, and a beautiful table (at least to me), and began to look into SAM. SAM was a huge learning curve for a few reasons in my case. Firstly, up to this point, I had provisioned everything through the console as I wanted to familiarize myself with how things worked. I assumed this would make things easier to understand when I reached the Infrastructure as Code aspect of the challenge. (I personally still feel this was a good choice for me and would recommend it to any beginner.) Lastly, SAM introduced CORs errors to me which nearly caused me to pull my hair out and this was where marketing met Cloud for me.&lt;br&gt;
After days of struggling fruitlessly with CORS, solving one issue only to create another, I finally had an epiphany.&lt;/p&gt;

&lt;p&gt;I decided to get a whiteboard.&lt;/p&gt;

&lt;p&gt;I mapped out the project like I would on an business brief for a markting contract and began ruling out what could be the issue. I mapped out the entire project just as I would for a marketing campaign, systematically ruling out potential issues. You see, in the realm of marketing, it's not uncommon to encounter problems that are difficult to understand, don't make sense, or shouldn't even exist, there will be a coordination risk aspect to anything large and in marketing this is why a rule of 50% exists where there is an expectation around wastage. In those situations, we break down the entire journey into pieces until we narrow down the search to a few areas. Then, we troubleshoot until we reach a plan.&lt;/p&gt;

&lt;p&gt;Python tests, breaking down code into manageable chunks for easier troubleshooting, and creating roadmaps for seamlessly integrating various services—all these principles align perfectly with how we troubleshoot marketing plans and systems. Let's circle back to my earlier marketing experience with the new market entrant.&lt;/p&gt;

&lt;p&gt;Initially, the problem didn't make sense, just like CORS errors and our struggle to find a sound sales funnel. So we began the process of elimination, starting from the top down—just like writing code with proper spacing between modules and comments, allowing for step-by-step troubleshooting instead of tearing through the entire script. Then, we employed customer journeys and feedback to uncover the underlying problem, even if the approach seemed unorthodox. This mirrors how well-designed code tests can pinpoint the exact location of an issue. Sometimes, finding a solution or conducting a test requires thinking outside the box. Finally, we had to implement a solution swiftly to prevent backtracking for the businesses involved. In the world of the Cloud, the same principles apply. Even if you identify the problem, you can't bring everything crashing down to fix it—your clients or customer base always come first. This is why local testing and testing environments exist: to minimize problems that may arise in the real infrastructure and avoid downtime.&lt;/p&gt;

&lt;p&gt;With all of this in mind, I got back to work on figuring out CORs and some other issues.&lt;/p&gt;

&lt;p&gt;After bringing my laptop to work a few days, I got my stack deployed and working successfully. I knew at this point that I was home free, I set up my CI/CD with Github, put on the finishing, and reached out to Forrest to turn it all in.&lt;/p&gt;

&lt;p&gt;There were several points in this project that made me internally scream but with the skills I brought away from this project like CloudFormation, Cloudfront, S3, Route53, DynamoDB, Python, JS, Serverless architecture, along with a plethora of other services and industry standards made it all worth it. This project reinforced my belief that my transition into tech is the correct one. Even more importantly it gave me a path to look into, and that is the beautiful world of Cloud.&lt;/p&gt;

&lt;p&gt;Thank you Forrest Brazeal for creating this challenge, and thank you for creating the opportunity to meet the other takers of this challenge and network with like-minded individuals.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>programming</category>
      <category>career</category>
      <category>aws</category>
    </item>
  </channel>
</rss>
